一葱椭、 基本原理
混淆主要涉及兩種思路:
a.通過正則替換實(shí)現(xiàn)的混淆器;
b.通過語法樹替換實(shí)現(xiàn)的混淆器酌畜。
第一種實(shí)現(xiàn)成本低,但是效果也一般谬莹,適合對混淆要求不高的場景檩奠。第二種實(shí)現(xiàn)
成本較高,但是更靈活附帽,而且更安全埠戳,更適合對抗場景。
二蕉扮、 工具
2.1 javascriptobfuscator
包含在線版和桌面版整胃,試用了下效果不錯,沒有發(fā)現(xiàn)處理之后報錯喳钟、異常的情況屁使。
是一個不錯的js 混淆工具。
在線版:
桌面版:
2.2? Uglifyjs(開源)
uglifyjs是一個開源的js 壓縮工具奔则。這個從社區(qū)的評論里來看好像是最常使用
的蛮寂,在node環(huán)境下執(zhí)行。
Git 地址:https://github.com/mishoo/UglifyJS2
使用方法:http://blog.fens.me/nodejs-uglifyjs2-js/
Uglify混淆主要使用了以下方法(AST指抽象語法樹):
?? 字符串解析成AST
?? 解析AST易茬,計算出作用域酬蹋、變量名等
?? 提供遍歷AST的方法,找到你想要修改的節(jié)點(diǎn)
?? 提供把AST打印成源代碼的功能
?? 提供美化代碼的功能
?? 提供定位某個word位置的功能
2.3? jscrambler
jscrambler是一個商業(yè)級工具抽莱,看了很多社區(qū)的評論范抓,這個目前是最好的,需
要付費(fèi)食铐。
地址:https://jscrambler.com/
2.4? jsfuck(開源)
jsfuck 是一個開源的js 混淆工具匕垫,原理比較簡單,其實(shí)就是通過特定的字符
串加上下標(biāo)定位字符虐呻,再由這些字符替換源代碼象泵,從而實(shí)現(xiàn)混淆寞秃。官網(wǎng):http://
www.jsfuck.com/,混淆功能看上去比較強(qiáng)大单芜,但是本質(zhì)上我認(rèn)為是一種編碼:
而且文件體積會受很大影響蜕该。
git地址:https://github.com/aemkei/jsfuck
三犁柜、 總結(jié)
建議:如果要做二次開發(fā)洲鸠,建議使用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