
功能
JShaman专业版目前具有20项混淆加密功能。完整启用各功能时,保护效果如下所示:



以下给出各混淆加密项目的单独说明及保护效果。
局部变量名、函数名混淆
可对局部变量名称进行变形,赋以无意义、不规律的名称。效果如下:




全局变量名混淆、全局函数名混淆
与上相似,区别在于之前是针对局部变量,此处可处理全局变量。效果如下:




成员函数加密
可对JavaScript内置语法方法进行加密,如console.log()中的log函数。



数值常量加密
将数值常量变为运算表达式,效果如下:




二进制表达式混淆
将二进制表达式变形为函数调用表达式,效果如下:




布尔型数值加密
对 true、false 值进行加密



字符串 Unicode 化加密




Eval加密
对特定的语句进行 Eval 加密,效果如下:




平展控制流
将函数中代码平坦化,并打乱代码显示顺序,效果如下:




收缩控制流
将函数中符合条件的多行代码收缩为单行,形成逗号运算符语法,效果如下:



字符串阵列化
将代码中包含的字字符串集中放置到数组,效果如下:



阵列字符串加密
使用此功能时,会强制启用字符串阵列化。该功能会将阵列中的字符串内容进行加密,效果如下:




虚拟机执行保护
将某些代码转为虚拟机 OP 指令,在虚拟机中执行,效果如下:



代码压缩
去除回车换行、空格,压缩代码体积。效果如下:


反格式化
使用此功能时,会强制启用代码压缩、关闭保留注释。


AST 执行保护
将某些代码转为 AST,即:抽象语法树,并替换掉原始代码。代码运行时,直接执行此 AST。




代码防篡改
使用此功能时,会强制启用代码压缩、关闭保留注释。如下启用此功能后,保护后的代码,未做任何修改,可正常使用:

在下图中标识出的位置,增加一个变量定义:

增加变量定义,不会影响程序逻辑,如下图:

但此修改过的代码无法运行,会抛出错误:

注:修改内容发生在代码中哪个函数内,则哪个函数不能运行,未修改的函数不受影响。保留注释:默认保护后,会清除掉代码中所有注释语句,如需保留注释,则使用此项。
保留关键字
对指定名称的字符串、函数名、变量名不进行保护,效果如下:








