當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
javascript代码混淆的原理
生活随笔
收集整理的這篇文章主要介紹了
javascript代码混淆的原理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
如何對JavaScript進(jìn)行保護(hù)
代碼壓縮:
- 去除空格
- 換行等
代碼加密:
-
eval
- eval可以將其中的參數(shù)按照J(rèn)avaScript的的語法進(jìn)行解析并執(zhí)行,其實(shí)就是將JavaScript的代碼變成了eval的參數(shù)其中的一些字符會被按照特定的編碼
- 可以使用eval加密的網(wǎng)站進(jìn)行加密
- 因?yàn)榭梢詫⒓用芎蟮拇a直接輸出到控制臺,所以這種加密方法是非常弱的
-
Emscripten
- Emscripten是一個用于編譯的工具鏈asm.js公司使用LLVM構(gòu)建的WebAssembly可以讓你在沒有插件的情況下,在網(wǎng)絡(luò)上運(yùn)行C和C++。
- 核心:C/C++
- 編譯:Emscripten
- 結(jié)果:asm.js
-
調(diào)用:JavaScript
- 就是一些核心的功能可以使用c或者c++來實(shí)現(xiàn),然后通過Emscripten編譯器來生成asm.js文件,然后就可以在瀏覽器里調(diào)用,就可以實(shí)現(xiàn)它的執(zhí)行了,所以可以起到保護(hù)核心邏輯的功能了。
-
WebAssembly等
- 核心:C/C++
- 結(jié)果:wasm文件(字節(jié)碼文件)運(yùn)行速度會更快,體積會更小
- 調(diào)用:JavaScript
代碼混淆:
- 變量混淆(將變量名變成一些無意義的可以來較亂的字符串(16進(jìn)制)降低代碼的可讀性)
- 字符串混淆(進(jìn)行加密或者是編碼,目的:確保代碼里面,不可以使用搜索的方式來查到原始的字符串)
- 屬性加密(JavaScript里面有一些Object,可能是一些鍵值對,所以可以把對象進(jìn)行加密的轉(zhuǎn)換,就是把key-value的映射關(guān)系混淆掉)
- 控制流扁平化(打亂原有的代碼的執(zhí)行流程)
- 僵尸代碼注入(將一些無用的代碼注入到我們的代碼中,實(shí)現(xiàn)擾亂)
- 代碼壓縮(去除空格回車調(diào)試語句等等)
- 反調(diào)試 (無限debug、定時debug、debugger關(guān)鍵字)
- 多態(tài)變異(JavaScript一旦被調(diào)用,代碼就變成和原來完全不同的代碼,但是保證功能完全不變,避免代碼被動態(tài)的分析調(diào)試)
- 鎖定域名
- 反格式化
- 特殊編碼
總結(jié)
以上是生活随笔為你收集整理的javascript代码混淆的原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python多线程并发写入_Python
- 下一篇: 为人示弱,做事留余 | 摸鱼系列