JShaman专业版目前具有20项混淆加密功能。完整启用各功能时,保护效果如下所示:
以下给出各混淆加密项目的单独说明及保护效果。
可对局部变量名称进行变形,赋以无意义、不规律的名称。效果如下:
与上相似,区别在于之前是针对局部变量,此处可处理全局变量。效果如下:
可对JavaScript内置语法方法进行加密,如console.log()中的log函数。
将数值常量变为运算表达式,效果如下:
将二进制表达式变形为函数调用表达式,效果如下:
对 true、false 值进行加密
对特定的语句进行 Eval 加密,效果如下:
将函数中代码平坦化,并打乱代码显示顺序,效果如下:
将函数中符合条件的多行代码收缩为单行,形成逗号运算符语法,效果如下:
将代码中包含的字字符串集中放置到数组,效果如下:
使用此功能时,会强制启用字符串阵列化。该功能会将阵列中的字符串内容进行加密,效果如下:
将某些代码转为虚拟机 OP 指令,在虚拟机中执行,效果如下:
去除回车换行、空格,压缩代码体积。效果如下:
使用此功能时,会强制启用代码压缩、关闭保留注释。
将某些代码转为 AST,即:抽象语法树,并替换掉原始代码。代码运行时,直接执行此 AST。
使用此功能时,会强制启用代码压缩、关闭保留注释。如下启用此功能后,保护后的代码,未做任何修改,可正常使用:
在下图中标识出的位置,增加一个变量定义:
增加变量定义,不会影响程序逻辑,如下图:
但此修改过的代码无法运行,会抛出错误:
注:修改内容发生在代码中哪个函数内,则哪个函数不能运行,未修改的函数不受影响。保留注释:默认保护后,会清除掉代码中所有注释语句,如需保留注释,则使用此项。
对指定名称的字符串、函数名、变量名不进行保护,效果如下: