日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript代码混淆的原理

發布時間:2023/12/10 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript代码混淆的原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何對JavaScript進行保護

代碼壓縮:

  • 去除空格
  • 換行等

代碼加密:

  • eval

    • eval可以將其中的參數按照JavaScript的的語法進行解析并執行,其實就是將JavaScript的代碼變成了eval的參數其中的一些字符會被按照特定的編碼
    • 可以使用eval加密的網站進行加密
    http://www.jqueryfuns.com/tools/jsencode 加密前:console.log("hello") 加密后:eval(function(p,a,c,k,e,r){e=String;if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'^$'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('console.log("hello")',[],1,''.split('|'),0,{}))
    • 因為可以將加密后的代碼直接輸出到控制臺,所以這種加密方法是非常弱的
  • Emscripten

    • Emscripten是一個用于編譯的工具鏈asm.js公司使用LLVM構建的WebAssembly可以讓你在沒有插件的情況下,在網絡上運行C和C++。
    • 核心:C/C++
    • 編譯:Emscripten
    • 結果:asm.js
  • 調用:JavaScript

    • 就是一些核心的功能可以使用c或者c++來實現,然后通過Emscripten編譯器來生成asm.js文件,然后就可以在瀏覽器里調用,就可以實現它的執行了,所以可以起到保護核心邏輯的功能了。
  • WebAssembly等

    • 核心:C/C++
    • 結果:wasm文件(字節碼文件)運行速度會更快,體積會更小
    • 調用:JavaScript

代碼混淆:

  • 變量混淆(將變量名變成一些無意義的可以來較亂的字符串(16進制)降低代碼的可讀性)
  • 字符串混淆(進行加密或者是編碼,目的:確保代碼里面,不可以使用搜索的方式來查到原始的字符串)
  • 屬性加密(JavaScript里面有一些Object,可能是一些鍵值對,所以可以把對象進行加密的轉換,就是把key-value的映射關系混淆掉)
  • 控制流扁平化(打亂原有的代碼的執行流程)
  • 僵尸代碼注入(將一些無用的代碼注入到我們的代碼中,實現擾亂)
  • 代碼壓縮(去除空格回車調試語句等等)
  • 反調試 (無限debug、定時debug、debugger關鍵字)
  • 多態變異(JavaScript一旦被調用,代碼就變成和原來完全不同的代碼,但是保證功能完全不變,避免代碼被動態的分析調試)
  • 鎖定域名
  • 反格式化
  • 特殊編碼

總結

以上是生活随笔為你收集整理的javascript代码混淆的原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。