From c1afbed128f4a2ebca40d4befcab3eab5eb1ed0e Mon Sep 17 00:00:00 2001 From: aiyingfeng Date: Mon, 17 Jul 2023 20:52:16 +0800 Subject: [PATCH] =?UTF-8?q?AST=E6=93=8D=E4=BD=9C=E4=B9=8BAPI=E7=94=A8?= =?UTF-8?q?=E6=B3=95-node=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../6.AST操作之API用法-node节点/decode.js | 1 + .../decode_obfuscator.js | 21 +++++++++++++++++++ .../6.AST操作之API用法-node节点/encode.js | 1 + 3 files changed, 23 insertions(+) create mode 100644 AST抽象语法树/6.AST操作之API用法-node节点/decode.js create mode 100644 AST抽象语法树/6.AST操作之API用法-node节点/decode_obfuscator.js create mode 100644 AST抽象语法树/6.AST操作之API用法-node节点/encode.js 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