JS代碼混淆

1,移動時代的前端加密:王浩集使用 estools 輔助反混淆Javascriptchichou

其中提到的重要思想:

執(zhí)行代碼字符串的方式有:創(chuàng)建執(zhí)行;調用setTimeout()執(zhí)行;創(chuàng)建new function()執(zhí)行;使用dom事件執(zhí)行;

2,__defineGetter__:

Number.prototype.constructor.constructor:

3,實戰(zhàn):

1,小段代碼會通過eval或者function來執(zhí)行,可以通過修改eval和function的原型來直接執(zhí)行從而獲取內部邏輯.比如:

eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('0 3(){2.1(\'這是準備用來做混淆的\')}0 5(){2.1(\'4 6 \')}',7,7,'function|log|console|test|haha|test2|hah'.split('|'),0,{}))

修改eval: eval = function() {

? console.log('eval', JSON.stringify(arguments));

};?

修改Function: Function = function() {

? console.log('Function', JSON.stringify(arguments));

? return function() {};

};

new Function(修改后的代碼字符串)();

截獲constructor: Function.prototype.__defineGetter__('constructor', function () {

? ? return function () {

? ? ? ? console.log('constructor', JSON.stringify(arguments));

? ? };

});

(function() {}).constructor('console.log("Hello world!")');

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 不支持上傳文件,所以就復制過來了。作者信息什么的都沒刪。對前端基本屬于一竅不通,所以沒有任何修改,反正用著沒問題就...
    全棧在路上閱讀 2,071評論 0 2
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,569評論 0 13
  • 工廠模式類似于現(xiàn)實生活中的工廠可以產生大量相似的商品,去做同樣的事情,實現(xiàn)同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 8,131評論 2 17
  • 零和游戲原理源于博弈論。博弈論的英文名為GAMETHEORY,直譯就是“游戲理論”。 一項游戲中,勝方所得與負方所...
    實實在在教語文閱讀 1,649評論 0 1
  • 讀到萬維鋼在得到上面的專欄中一篇關于道歉的文章《日課050|精英水平的道歉》,深有感觸。其中的主要觀點來自Jose...
    休止符UPUP閱讀 3,154評論 0 7

友情鏈接更多精彩內容