15.AST代码还原案例

This commit is contained in:
aiyingfeng 2023-08-25 16:00:54 +08:00
parent f58aecceb3
commit b304f9f37b
2 changed files with 39 additions and 0 deletions

View File

@ -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)

View File

@ -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");
},
}