AST还原功能说明文档
生活随笔
收集整理的這篇文章主要介紹了
AST还原功能说明文档
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 還原工具各功能說明文檔
- 1.字符還原
- 2. 成員表達式連接符變更
- 3. 標識符重復賦值
- 4. 未修改常量替換
- 5. 標識符簡化
- 6. 序列表達式
- 7. 對象合并
- 8. 數組簡化
- 9. 成員表達式字符合并
- 10. 對象屬性字符合并
- 11. Return函數簡化
- 12. 自執行實參替換形參
- 13. 自執行空實參替換順序語句
- 14.花指令處理
- 15.反控制流平坦化
- 16.常量計算
- 17.死代碼刪減
- 19.大數組解密
- 20.禁用console輸出功能刪減
- 21.debugger保護及定時器刪減
還原工具各功能說明文檔
1.字符還原
樣例Demo: https://jia666666.blog.csdn.net/article/details/120202376還原前:
var a='\x73\x70\x6c' + '\x69\x74'; var b=0x10; var c='\u4EBA\u751F\u82E6\u77ED\uFF0C\u4F55\u5FC5python\uFF1F';還原后:
var a = "spl" + "it"; var b = 16; var c = "人生苦短,何必python?";2. 成員表達式連接符變更
樣例Demo: https://jia666666.blog.csdn.net/article/details/120269625還原前:
console.log('12'); window.s=1; console.log(new Date().format('yyyy-MM-dd'));還原后:
console["log"]('12'); window["s"] = 1; console["log"](new Date()["format"]('yyyy-MM-dd'));3. 標識符重復賦值
樣例Demo: https://jia666666.blog.csdn.net/article/details/120352005還原前:
let a=3; let b=a; let c=b; let d=c;function hi() {var _0x4a763f = _0x33ba;console[_0x4a763f(0x121)](_0x4a763f(0x11f)); }還原后:
let a = 3; let d = a;function hi() {console[_0x33ba(0x121)](_0x33ba(0x11f)); }4. 未修改常量替換
樣例Demo: https://jia666666.blog.csdn.net/article/details/120323615還原前:
var aa =4878 ; const bb = -5+5; let cc = global; let ff=aa+2; let jj="hello,AST!" var f = cc.console.log(jj); //默認對沒有引用的常量的常量進行刪除 var ss=0; //對數組與字典不做處理,因為數組與字典經常增刪元素 let dd=[1,2]; let ee={'k':'1'}; //對修改的常量,不會進行替換 let hh=5; hh=6;function gg(){var s=dd[1];var t=ee['k'];return aa + bb + f+ff +hh; }還原后:
//對未修改的常量進行替換 //默認對沒有引用的常量的常量進行刪除 //對數組與字典不做處理,因為數組與字典經常增刪元素 let dd = [1, 2]; let ee = {'k': '1' }; //對修改的常量,不會進行替換let hh = 5; hh = 6;function gg() {var s = dd[1];var t = ee['k'];return 4878 + -5 + 5 + global.console.log("hello,AST!") + 4878 + 2 + hh; }5. 標識符簡化
樣例Demo: https://jia666666.blog.csdn.net/article/details/120283040還原前:
let a=1; let b=2; let c=a+b; //a,b被使用,保留,c定義后,沒有被使用,刪除let dd,e,f; //定義后,未使用,刪除function ffd(){console.log('dad'); } ffd(); //函數ffd被使用,保留function f1() {console.log('ello') } //f1未被使用,將會刪除function f2(){let a={'l':1,'p':2}let b={'l2':1,'p2':2}//這里b沒有被使用,將刪除let c=a['p'];//c沒有被使用,刪除 } f2(); //函數f2被使用,保留還原后:
let a = 1; let b = 2;function ffd() {console.log('dad'); }ffd(); function f2() {let a = {'l': 1,'p': 2}; }f2();6. 序列表達式
樣例Demo: https://jia666666.blog.csdn.net/article/details/120367680還原前:
(function () {}(), console['log']('Hello\x20World!'));還原后:
(function () {}()); console['log']('Hello\x20World!');7. 對象合并
樣例Demo: https://jia666666.blog.csdn.net/article/details/120203074還原前:
function test0() {let a = {};a['sp;ldi'] = 1;a['a1'] = 'sd';a['jia']=function (a,b){return a+b;}a.b='dsd'+'ds'; }let a={}; a.s=5;還原后:
function test0() {let a = {"sp;ldi": 1,"a1": 'sd',"jia": function (a, b) {return a + b;},"b": 'dsd' + 'ds'}; }let a = {"s": 5 };8. 數組簡化
樣例Demo: https://jia666666.blog.csdn.net/article/details/120269134還原前:
var a = ['test', {'l': 'fa'}, 12, 15, 'sta']; let c=a[4]; function bb() {var a = [1,2,3,4,5,6,7,8,9];let b = a[1] + a[2] + a[3];let c = a[4];let d = a[5];let e=a[6]; }還原后:
let c = 'sta';function bb() {let b = 2 + 3 + 4;let c = 5;let d = 6;let e = 7; }9. 成員表達式字符合并
這一項必須配合【7】對象合并
樣例Demo: https://jia666666.blog.csdn.net/article/details/120202854還原前:
function test0() {let a = {};a['s' + 'p;ldi'] = 1;a['a' + 1] = 'sd'; }var b={}; b['sd'+'45']='asd';還原后:
function test0() {let a = {};a["sp;ldi"] = 1;a['a' + 1] = 'sd'; }var b = {}; b["sd45"] = 'asd';10. 對象屬性字符合并
這一項必須配合【7】對象合并
樣例Demo: https://jia666666.blog.csdn.net/article/details/120367419還原前:
let aa={'bb':'ds'+'das','cc':'ds'+'das'+'ds','dd':'ds'+'das'+'ds'+12, }還原后:
let aa = {'bb': "dsdas",'cc': "dsdasds",'dd': "dsdasds12", };11. Return函數簡化
樣例Demo: https://jia666666.blog.csdn.net/article/details/120267409還原前:
function bD2(cu, cv) {return cu||cv; } b=bD2(1,2);還原后:
b=1||2;12. 自執行實參替換形參
樣例Demo: https://jia666666.blog.csdn.net/article/details/120301341還原前:
(function(_0xb28de8) {_0xb28de8.bbb = ccc; }(window))還原后:
(function() {window.bbb = ccc; }())13. 自執行空實參替換順序語句
這一項經常搭配【12】自執行實參替換形參。慎用!可能涉及到作用域的問題。
樣例Demo: https://jia666666.blog.csdn.net/article/details/120303435還原前:
(function() {b = 123;c = 456; }())還原后:
b = 123; c = 456;14.花指令處理
樣例Demo: https://jia666666.blog.csdn.net/article/details/120287559還原前:
var _0xb28de8 = {"abcd": function (_0x22293f, _0x5a165e) {return _0x22293f == _0x5a165e;},"dbca": function (_0xfbac1e, _0x23462f, _0x556555) {return _0xfbac1e(_0x23462f, _0x556555);},"aaa": function (_0x57e640) {return _0x57e640();},"bbb": "eee" }; var aa = _0xb28de8["abcd"](123, 456); var bb = _0xb28de8["dbca"](bcd, 11, 22); var cc = _0xb28de8["aaa"](dcb);還原后:
var aa = 123 == 456; var bb = bcd(11, 22); var cc = dcb();15.反控制流平坦化
樣例Demo: https://jia666666.blog.csdn.net/article/details/120283982還原前:
var _0xb28de8 = "3|1|2".spilt("|"),_0x8de8b2 = 0; while(true) {switch(_0xb28de8[_0x8de8b2++]) {case '1':var a = 1;continue;case '2':var b = 3;continue;case '3':var c = 0;continue;}break; }還原后:
var aa = 123 == 456; var bb = bcd(11, 22); var cc = dcb();16.常量計算
樣例Demo: https://jia666666.blog.csdn.net/article/details/120268075還原前:
var a = !![];var b = "abc" == "bcd";var c = 1 << 3 | 2;var d = parseInt("5" + "0")還原后:
var a = true;var b = false;var c = 10;var d = 50;17.死代碼刪減
這一項經常搭配【16】常量計算
https://jia666666.blog.csdn.net/article/details/120268417還原前:
var _0x355406 = function () {let m;if (false) {m = 1;} else {m = 2;}return m; };還原后:
var _0x355406 = function () {let m;m = 2;return m; };19.大數組解密
詳見樣例 https://jia666666.blog.csdn.net/article/details/12030480220.禁用console輸出功能刪減
詳見樣例 https://jia666666.blog.csdn.net/article/details/12035425721.debugger保護及定時器刪減
詳見樣例 https://jia666666.blog.csdn.net/article/details/120368087總結
以上是生活随笔為你收集整理的AST还原功能说明文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python代码编译和反编译exe执行文
- 下一篇: 尼康图像处理软件——nx studio