混淆加密配置
一键配置
基础配置
标识符名称生成器
标识符前缀
目标运行环境
调试保护设置
字符串设置
字符串编码
字符串加密系数
过滤设置
锁定域名
保留方法
保留字符串
附加设置
源码地图
源码地图地址
源码地图文件名
标识种子ID
JAVASCRIPT代码混淆工具配置说明
压缩成一行 | 将换行符及空格等进行压缩 |
---|---|
标识符名称生成器 |
使用此选项来控制如何混淆标识符(变量名,函数名等)。 十六进制 短字符: |
标识符前缀 |
此选项使所有全局标识符具有特定的前缀。 混淆在同一页面上加载的多个文件时,请使用此选项。此选项有助于避免这些文件的全局标识符之间的冲突。为每个文件使用不同的前缀。 |
方法变量重命名 |
使用声明启用对全局变量和函数名称的混淆。 |
K保护 |
此选项使输出代码可抵抗格式设置和变量重命名。如果尝试在混淆后的代码上使用JavaScript美化器,则该代码将无法正常工作,从而使其难以理解和修改。 需要压缩成一行设置。 |
防止格式化 |
启用代码控制流平整。控制流扁平化是源代码的结构转换,它阻碍了程序的理解。 格式化系数在较大的代码库中,建议降低此值,因为大量的控制流转换会增加代码的大小并减慢其速度(从0到1)。 |
花指令代码注入 |
此功能将混淆代码的随机块(即,将不执行的代码)添加到混淆后的输出中,从而更难进行反向工程。 花指令注入率您可以使用此设置来调整该选项影响节点的概率(从0到1)。 需要字符串加密选项支持。 |
字符串加密 |
删除字符串文字并将其放置在特殊数组中。例如,字符串“ Hello World”中的字符串var m = "Hello World";将替换为对某个函数的调用,该函数将在运行时检索其值,例如:var m = _0xb0c3('0x1'); 请参阅以下有关如何配置此功能或多或少具有弹性的选项。 旋转字符串数组将字符串数组移动一个固定且随机的位置(在代码混淆中生成)。这使得将删除的字符串的顺序与其原始位置匹配变得更加困难。 如果您的原始源代码不小,则建议使用此选项,因为辅助功能会引起注意。 如果源代码不小,建议使用此选项。 重排字符串数组随机排序字符串数组。 字符串编码使用Base64或RC4 编码的所有字符串文字,并插入一个特殊的函数,该函数用于在运行时对其进行解码。 请注意,RC4选项比Base64选项慢大约30-35%,但是更难找回字符串。 字符串加密系数您可以使用此设置来调整将字符串文字插入的可能性(从0到1)。 此设置在大型代码库中很有用,因为反复调用该字符串加密函数会降低代码速度。 |
变量加密 |
转换混淆对象键。 例如,将此代码var a = {enabled: true};混淆后,此代码将隐藏enabled对象键:var a = {}; a[_0x2ae0[('0x0')] = true;。 需要使用字符串加密的参数设置 |
Unicode转义序列 |
转换混淆对象键。 将所有字符串转换为它们的unicode表示形式。例如,字符串"Hello World!"将被转换为"'\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21"。 此转换非常容易还原,并且将大大增加混淆的代码大小。不建议在较大的代码库中使用。 |
禁用控制台输出 |
禁止使用console.log,console.info,console.error和console.warn,这使得调试器的使用更加困难。 |
调试保护 |
使用该选项,几乎不可能使用开发人员工具的控制台选项卡(在Google Chrome和Mozilla Firefox上)。 调试保护间隔如果选中该选项,则会使用一个时间间隔在“ 控制台”选项卡上强制使用调试模式 ,从而使开发人员工具的其他功能难以使用。 在经过混淆的源代码中会插入一个反复调用的特殊代码进行运作。 |
锁定域名 |
锁定混淆的源代码,使其仅在特定的域和/或子域上运行。对于仅复制并粘贴源代码并在其他地方运行的人来说,这真的很难。 多个域名或者子域名 |
保留名称 |
禁用混淆和标识符的生成,这些标识符与通过的RegExp(正则)模式匹配。 例如,如果添加^bejsoncom,混淆器将确保 不会破坏以bejson开头的所有变量,函数名称和函数参数。 |
保留字符串 |
禁用字符串文字的转换,该文字与通过的RegExp(正则)模式匹配。 例如,如果添加^bejson *string,混淆器将确保所有以某个字符串开头的字符串 都不会在“字符串加密”中进行加密处理。 |
源码地图 |
源映射可以帮助您调试混淆的Java Script源代码。如果要在生产中进行调试,可以将单独的源映射文件上载到秘密位置,然后将浏览器指向该位置。 内联源地图 单独的源地图 |
种子 |
默认情况下(seed = 0),每次对代码进行混淆时,都会得到一个新的结果(即:不同的变量名,插入到中的不同变量 stringArray等)。如果要获得可重复的结果,请将设置seed为特定的整数。 |
混淆工具介绍
本工具可以混淆加密您的JS代码,让您的JS代码更难理解和被他人抄袭复制,保护您的代码成果,支持es3, es5, es2015, es2016, es2017, es2018, es2019 and partially es2020版本的JS。
本JS混淆工具完全免费,支持粘贴JS代码或文件上传方式混淆您的代码,没有长度和文件体积限制, 默认会带个小尾巴(最前面声明的一个obfucator的变量),当然您可以随意删除,不会影响程序执行。
本工具采用开源组件在您的本地客户端浏览器混淆加密您的JS代码,您的JS代码不会上传到网络服务器中处理, 完全在您的浏览器完成JS代码的加密混淆,您无需担心代码泄露,安全可信,请放心使用。
您的JS代码由开源组件完成混淆,如果您有高频混淆需求,建议使用CLI方式自动化混淆,更加高效便捷。
混淆预设方案
由于本工具配置项较多,默认提供了3套预设的混淆加密方案,可根据自身情况修改配置,预设方案分别是:
1、最佳混淆,性能较差(将会慢50-100%);
2、中等混淆,性能均衡(将会慢30-35%);
3、低度混淆,性能最佳(比未混淆稍慢)。
由于混淆过程中会修改程序的执行逻辑以及众多变量替换等操作,会影响原程序的执行性能和增大文件体积,混淆强度和程序性能互斥, 最佳混淆会让混淆效果最佳,解密和理解难度最大,但程序执行性能会受到较大影响。最低度的混淆虽然执行性能受影响最小,但混淆强度最低, 相对较容易理解混淆后的程序,当然您也可以折中选择中等的混淆强度,该方案相对均衡。
您也可以根据实际需要在预设的基础上调整某些配置,值得注意的是,切换预设配置可能会覆盖某些您的自定义设置,请留意配置情况。
一般而言,可以无需修改设置直接使用默认的混淆预设方案即可。
配置项介绍
一、基础设置
注意部分设置可能会破坏您的程序逻辑,请混淆后注意检查验证程序逻辑。
防止格式化:可以让代码美化工具对混淆后的代码不起作用。使用eval语句:使用eval语句方式实现程序混淆。转义Unicode:将变量值转换为Unicode编码,此项会大大增加文件体积,且很容易还原回去,建议只针对小文件使用。优化代码结构:精简代码,如将多个if else结构换为三目运算。
重命名全局变量:将全局变量重命名,可能会造成代码执行问题,请根据实际情况选择。
重命名属性名:将对象属性名重新命名,可能会造成代码执行问题,请根据实际情况选择。
分割变量字符串:将会以10个字符为一个单位,拆分混淆变量值的字符串。
数字转表达式:将数字转换为函数表达式的写法,增加复杂度。
禁止控制台调试:当控制台打开时终止程序执行,并进入死循环干扰控制台调试。
禁止控制台输出:屏蔽一些控制台输出信息,如log,error,debug等方法,减少程序流程提示。
二、混淆加密系数&规则
混淆加密规则及系数均可以选择关闭相应功能,提高程序的执行效率,系数设置范围为0-1,值越高则混淆加密强度越高,文件体积和代码执行效率会有所下降。
变量加密系数:混淆改变您的代码变量名称,值越高看起来越乱。
死代码注入系数:死代码也就是花指令,指向正常的程序中注入一些没什么用的废代码,让程序更乱更加难以理解,干扰解密过程。
控制流平坦化系数:改变程序的执行流程结构,模糊程序模块之间的前后关系,让程序看起来更加乱,增加程序分析难度。
变量加密规则:加密改变变量的方法,base64加密后比rc4执行效率要高,当然没有rc4强度高。
三、混淆高级设置
高级设置中所有的设置项每项一行,使用回车分隔每一个配置项。
安全域名:只允许混淆后的代码在指定的安全域名下执行(支持多个域名,子域名通配符用“.domain.com”表示), 在此之外的任何域名下执行均会重定向到所设置的URL中,这样即使您的代码被复制,对方也无法使用,强烈建议设置此项!
强制转换的字符串:强制加密编码一些比较敏感的字符串,让寻找及解密难度增大。
保留的变量标识符:需要保留的不希望被混淆的一些变量标识符。
保留的字符串:需要保留的不希望倍混淆的一些字符串。
为何要混淆代码?
混淆代码是为了保护您的代码成果,通常有以下几种情形:
1、避免让他人通过代码读懂您的产品逻辑,造成商业机密泄露。
2、防止一些白嫖党无节操的复制掠夺您的代码成果。
3、为客户开发程序,在未收到尾款前用于给客户展示的演示站。
4、删除代码注释等无用信息,提高代码文件的网络加载速度。
此外,还有很多类似场景...
其它提示
使用本工具完成代码混淆后,请勿使用其它代码压缩工具(如uglifyjs等)或混淆加密工具二次处理混淆结果,否则可能会造成混淆变量被修改造成脚本无法执行或者混淆失败,也不要使用工具二次混淆,仅混淆加密一次就已经足够安全了。
为了代码的完整性,建议混淆完毕后使用工具提供的一键复制或下载保存到本地。
工具将会默认记住您的混淆设置,只需设置一次即可,不需要每次使用都重新设置。
更多混淆加密细节请参考 Javascript Obfuscator。