混淆工具javascript-obfuscator使用简介-程序员宅基地

技术标签: python  java  linux  javascript  docker  

javascript-obfuscator是一个免费的JavaScript代码混淆工具,它功能强大,可以把你的源代码变得“面目全非”,完全没有可读性。还具有部分防调试功能,给JavaScript代码多一层保护。

安装

它支持很多流行的前端打包工具,如Webpack、Gulp、Grunt等都有相应的插件。本文为保持简单,以单独的命令行版本示例。

以Windows环境为例,首先安装Node.js环境,然后在命令行中输入

npm install javascript-obfuscator -g

安装完成后,javascript-obfuscator就是一个独立的可执行命令了。

javascript-obfuscator -v

可以查看版本号,检测安装是否成功。

使用

最简单的用法是

javascript-obfuscator a.js

上面命令表示,使用默认配置对 a.js 执行混淆,结果输出到默认文件 a-obfuscated.js

也可以根据需求修改配置,从而调整混淆强度。主要有以下几个重要参数。

controlFlowFlattening

默认 false。设为 true,表示开启代码控制流展平,这是源代码的一种结构转换,使代码增大且变得难以理解。

controlFlowFlatteningThreshold

controlFlowFlattening配合,表示代码控制流展平的概率,此设置对于大代码影响较大,大量的控制流转换会减慢代码速度并增加代码大小。

controlFlowFlatteningThreshold的值范围是从0到1,如果为0等同于 controlFlowFlattening为false。

deadCodeInjection

默认false。设为true,表示将添加随机废代码到被混淆代码中。

该选项会显著增加代码大小(高达200%)

deadCodeInjectionThreshold

设置废代码注入的百分比。值范围是从0到1,如果为0等同于 deadCodeInjection为false。

此选项强制启用stringArray选项。

stringArray

删除字符串文字并将其放置在特殊数组中。例如,var m=“Hello World”中的字符串“Hello World”,将被替换为var m=x12c456[0x1];

stringArrayEncoding

使用 base64rc4对stringArray影响的所有字符串文本进行编码,并插入用于在运行时对其进行解码的特殊代码。

此选项会减慢脚本的速度。

stringArrayThreshold

此设置调整将字符串文本插入stringArray的概率(从0到1)。

示例

一个中等混淆强度的配置选项如下,它会使性能降低约30-50%,代码体积增加约300%。

{
    "compact": true,
    "controlFlowFlattening": true,
    "controlFlowFlatteningThreshold": 0.75,
    "deadCodeInjection": true,
    "deadCodeInjectionThreshold": 0.4,
    "debugProtection": false,
    "debugProtectionInterval": false,
    "disableConsoleOutput": true,
    "identifierNamesGenerator": "hexadecimal",
    "log": false,
    "renameGlobals": false,
    "rotateStringArray": true,
    "selfDefending": true,
    "stringArray": true,
    "stringArrayEncoding": "base64",
    "stringArrayThreshold": 0.75,
    "unicodeEscapeSequence": false
}

将上述配置选项,保存为文件 test.json,并指定输出结果到 b.js,输入

javascript-obfuscator a.js --config test.json --output b.js

上面命令表示, javascript-obfuscator将会使用test.json指定的配置,对 a.js 执行混淆,结果输出到 b.js

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/foupwang/article/details/103306332

智能推荐

MQTT协议简介及消息总线EMQX与客户端Paho快速上手_paho mqtt-程序员宅基地

文章浏览阅读5k次。1. MQTT简介MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是基于“订阅/发布”模式的轻量级通信协议,该协议基于TCP/IP,能以极低的带宽为海量(百万级)跨域设备提供可靠的消息服务,因此在物联网、小型移动终端、边缘计算方面有广泛应用。所谓可靠的消息传输,体现为可配置消息的服务质量(QoS),有三种服务质量可选:至多一次:消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。应用场景如环境传感器的数据采集,丢失一次记录无所谓,因_paho mqtt

vivado TCL 脚本使用——loogarch指令集 实验exp6_tcl learch-程序员宅基地

文章浏览阅读203次。然后打开Tools——Run Tcl script,执行create_project.tcl文件,静待完成。首先从Window-tcl console 调出终端。也就是run_vivado 目录。然后执行进入指定目录。_tcl learch

批处理详解_批处理 同时按下win键与y键-程序员宅基地

文章浏览阅读872次。一、什么叫做批处理文件? 批处理文件(文件名为*.BAT)就是将一些常用的命令写入一个文本文件内。当我们要使用这个文件时,只要键入批处理文件的文件名,批处理文件就会依照文件中的命令来执行全部或者是一部分指定要执行命令。如此我们便可简化我们的工作,而不用每一次都需要手动键入很多的命令来执行一些动作。 一个批处理文件的建立,因为必须是一个文本文件;所以只要有字处理功能的软件,都可用来建立此文本文件,例_批处理 同时按下win键与y键

SQL语言的规则与规范_sql规范-程序员宅基地

文章浏览阅读1.8k次,点赞48次,收藏51次。- 数据库、表名不得超过30个字符,变量名限制为29个- 必须只能包含 A–Z, a–z, 0–9, _共63个字符- 数据库名、表名、字段名等对象名中间不要包含空格- 同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名- 必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使用`(着重号)引起来- 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据类型在一个表里是整数,那在另一个表里可就别_sql规范

clickhouse 常用命令_clickhouse查询历史-程序员宅基地

文章浏览阅读483次,点赞12次,收藏5次。【代码】clickhouse 常用命令。_clickhouse查询历史

前端实现 vue导出Excel_vue 前端导出excel-程序员宅基地

文章浏览阅读136次。实现 vue导出Excel_vue 前端导出excel

随便推点

Go 语言通过 SSH 远程登录服务器执行命令和传输文件_go sshclient.newsession-程序员宅基地

文章浏览阅读792次。Go 语言通过 SSH 远程登录服务器执行命令和传输文件_go sshclient.newsession

NRF52832学习笔记(11)——蓝牙MAC地址_52832的app从哪个地址开始的-程序员宅基地

文章浏览阅读2.9k次,点赞5次,收藏17次。一、背景一个 BLE 设备,可以使用两种类型的地址(一个 BLE 设备可同时具备两种地址):Public Device Address(公共设备地址)Random Device Address(随机设备地址)可分为两类:Static Device Address(静态设备地址)Private Device Address(私密设备地址)又可分为两类:Non-resolvable Private Address(不可解析私密地址)Resolvable Private Address(可解析_52832的app从哪个地址开始的

JAVA实现简单的登录界面_登录页面java-程序员宅基地

文章浏览阅读10w+次,点赞224次,收藏1.3k次。我本来是学C++的,然后课程上老师要求做一个登陆界面,用C++实现不限时,然后就选择了JAVA,从零开始自学JAVA。好在网上很多大佬都写了如何用JAVA编写登陆界面的博客,写得很详细,使得我第一次接触JAVA也能看懂一二。比较推荐这篇,博主真的很细心,我主要也是参考的这篇文章(分为一、二两篇):https://blog.csdn.net/Alexwym/article/details/8..._登录页面java

【测开学习】--测试理论_cs,bs-程序员宅基地

文章浏览阅读342次。【测开学习】–测试理论系统架构介绍两种常见的系统架构:CS架构BS架构CS架构CS:(Client/Server)即客户端-服务器架构优点:能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,所以CS客户端响应速度快;操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求;能够实现复杂的业务流程;安全性能更容易保证;缺点:需要专门的客户端安装程序,不方便实现快速部署安装和配置;兼容性差,不同的操作系统需要开发不同的程序;开发、维护成本较高,需要具有一定专_cs,bs

小白算法积累——顺序表12#顺序表+查找主元素(占比1/2以上)-程序员宅基地

文章浏览阅读452次。题目:已知一个整数序列A=(a0,a1,a2…an-1),其中0<=ai<n(0<=i<n)。若存在ap1=ap2=…apm =x,且m>n/2 (0<=pk<n,1<=k<m), 则称x为A的主元素。例如A=(0,5,5,3,5,1,5,7),则A中没有主元素。假设A中的n个元素保存在一个一维数组中,请设计一个尽可能高效的算法,找出A的主元...

springboot项目使用redis数据库作缓存_springboot 怎么把未提交的数据 放到redis缓存中-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏10次。1.导入jar包,用maven和springboot构建项目: org.springframework.boot spring-boot-starter-redis org.springframework.boot spring-boo_springboot 怎么把未提交的数据 放到redis缓存中

推荐文章

热门文章

相关标签