一、 基本原理
混淆主要涉及两种思路:
a.通过正则替换实现的混淆器;
b.通过语法树替换实现的混淆器。
第一种实现成本低,但是效果也一般,适合对混淆要求不高的场景。第二种实现
成本较高,但是更灵活,而且更安全,更适合对抗场景。
二、 工具
2.1 javascriptobfuscator
包含在线版和桌面版,试用了下效果不错,没有发现处理之后报错、异常的情况。
是一个不错的js 混淆工具。
在线版:
桌面版:
2.2 Uglifyjs(开源)
uglifyjs是一个开源的js 压缩工具。这个从社区的评论里来看好像是最常使用
的,在node环境下执行。
Git 地址:https://github.com/mishoo/UglifyJS2
使用方法:http://blog.fens.me/nodejs-uglifyjs2-js/
Uglify混淆主要使用了以下方法(AST指抽象语法树):
字符串解析成AST
解析AST,计算出作用域、变量名等
提供遍历AST的方法,找到你想要修改的节点
提供把AST打印成源代码的功能
提供美化代码的功能
提供定位某个word位置的功能
2.3 jscrambler
jscrambler是一个商业级工具,看了很多社区的评论,这个目前是最好的,需
要付费。
地址:https://jscrambler.com/
2.4 jsfuck(开源)
jsfuck 是一个开源的js 混淆工具,原理比较简单,其实就是通过特定的字符
串加上下标定位字符,再由这些字符替换源代码,从而实现混淆。官网:http://
www.jsfuck.com/,混淆功能看上去比较强大,但是本质上我认为是一种编码:
而且文件体积会受很大影响。
git地址:https://github.com/aemkei/jsfuck
三、 总结
建议:如果要做二次开发,建议使用Uglifyjs,
参考:
1.https://cnodejs.org/topic/5507dbd953ad0efa46bc500b
2.http://www.fly63.com/article/detial/45
3.http://www.lizhiqianduan.com/myblog/#/article/10082
4.https://www.zhihu.com/question/22841206