diff --git a/AST抽象语法树/15.AST代码还原案例/1-2020-06-09.js b/AST抽象语法树/15.AST代码还原案例/1-2020-06-09.js new file mode 100644 index 0000000..ccc4fc3 --- /dev/null +++ b/AST抽象语法树/15.AST代码还原案例/1-2020-06-09.js @@ -0,0 +1,27 @@ +const fs = require('fs'); +const {parse} = require("@babel/parser"); +const traverse = require("@babel/traverse").default; +const generator = require("@babel/generator").default; +const types = require('@babel/types'); +let encode_file = "./1-encode-2020-06-09.js"; + +let js_code = fs.readFileSync(encode_file, {encoding: "utf-8"}); +let ast = parse(js_code, { + sourceType: 'module', +}); + +const visitor = { + CallExpression: { + enter(path) { + let {node} = path + let arguments = node.arguments + if (arguments[1].value != 'Hello AST'){ + path.remove() + } + } + } +} + +traverse(ast, visitor); +let {code} = generator(ast); +console.log(code) \ No newline at end of file diff --git a/AST抽象语法树/15.AST代码还原案例/1-encode-2020-06-09.js b/AST抽象语法树/15.AST代码还原案例/1-encode-2020-06-09.js new file mode 100644 index 0000000..4094715 --- /dev/null +++ b/AST抽象语法树/15.AST代码还原案例/1-encode-2020-06-09.js @@ -0,0 +1,12 @@ +var s = { + 'hello': function(_0x4c52de) { + (function(_0xea7649, _0x55a64b) { + return function(_0x46f67a, _0x29dec9) { + return function(_0x56ee68, _0x1607ce) { + return _0x56ee68(_0x1607ce); + }(_0x46f67a, _0x29dec9); + }(_0xea7649, _0x55a64b); + } + )(alert, "Hello AST"); + }, +}