diff --git a/AST抽象语法树/6.AST操作之API用法-node节点/decode.js b/AST抽象语法树/6.AST操作之API用法-node节点/decode.js new file mode 100644 index 0000000..9d69cb3 --- /dev/null +++ b/AST抽象语法树/6.AST操作之API用法-node节点/decode.js @@ -0,0 +1 @@ +var a = 123; \ No newline at end of file diff --git a/AST抽象语法树/6.AST操作之API用法-node节点/decode_obfuscator.js b/AST抽象语法树/6.AST操作之API用法-node节点/decode_obfuscator.js new file mode 100644 index 0000000..4089908 --- /dev/null +++ b/AST抽象语法树/6.AST操作之API用法-node节点/decode_obfuscator.js @@ -0,0 +1,21 @@ +const fs = require('fs'); +const { parse } = require('@babel/parser'); +const traverse = require('@babel/traverse').default; +const generator = require('@babel/generator').default; +let encode_file = './encode.js'; + +let js_code = fs.readFileSync(encode_file, { encoding: 'utf-8' }); +let ast = parse(js_code, { + sourceType: 'module', +}); + +traverse(ast, { + NumericLiteral(path) { + path.replaceWith( + parse(3).program.body[0].expression + ); + }, +}); + +const output = generator(ast).code; +console.log(output); diff --git a/AST抽象语法树/6.AST操作之API用法-node节点/encode.js b/AST抽象语法树/6.AST操作之API用法-node节点/encode.js new file mode 100644 index 0000000..9d69cb3 --- /dev/null +++ b/AST抽象语法树/6.AST操作之API用法-node节点/encode.js @@ -0,0 +1 @@ +var a = 123; \ No newline at end of file