JavaScript eXtreme Obfuscator:JavaScript极限混淆器
功能:
1、格式化代码
2、根据前缀、后缀、正则表达式重命名变量,并可指定新变量名的前缀
3、根据前缀、后缀、正则表达式重命名函数,并可指定新函数名的前缀
4、去掉换行、空白、注释
5、数字混淆
6、字符串混淆
7、花指令混淆
8、流程混淆
9、打包(或者叫压缩)
截图:

说明:
1、格式化的过程不是简单地替换,而是进行了适当的改进。如:在语句的结束添加“;”,为if、for、while等增加“{}”,将正则表达式“/....../”改为“new RegExp”的形式。
2、数字混淆是将数字替换成一个十六进制的表达式。
3、字符串混淆是将字符串简单加密后通过一个函数进行解密。
4、花指令混淆:是随机插入一些比较让人迷惑的if……else……指令,加大阅读的困难。
5、流程混淆:用随机的循环配合if或switch,在不破坏执行顺序的情况下打乱代码的顺序,加大阅读的困难。
6、Pack:用一个简单的方法减小代码的长度,很常见。但会造成效率降低。
也正因为不是简单地替换,带来了新的麻烦。已知问题有:
1、某些朋友认为“{}” 比较多余,但我还是加上去了。
2、算数表达式之类的我加上了“()” ,这个到不是为了好看,而是因为我比较懒,不想去把精力花在处理运算符的优先级上。结果导致一个算数表达式可能会变成这样“1+2*3+4”=>“((1+(2*3))+4)”(MS比较恶心些,下次再改进吧)。
3、对于正则表达式,一般情况下不会出现问题。目前唯一已知的问题是JQuery中出现了“/=.../” 这种类型的正则表达式,会导致无法解析。
最后, 既然是混淆,不可避免地使代码变得庞大,但并会对效率造成什么太大的影响,这就是传说中的双刃剑吧。
