decode-js
decode-js copied to clipboard
JS混淆代码的AST分析工具 AST analysis tool for obfuscated JS code
decode-js
基于 Babel 的 AST 分析器和处理器,可以处理以下情况:
- stringArray(包括添加了旋转操作,以及嵌套调用的情况)
- 死代码
- 控制流扁平化(switch)
- 局部代码变换(Object表达式、字符串分割等)
- 自定义代码(自保护,禁止控制台调试,禁止控制台输出)
An AST analyzer and processor based on Babel that can handle the following situations:
- stringArray (including Rotate, Wrappers, and ChainedCalls)
- deadCode
- controlFlowFlattening (switch)
- transformer (ObjectExpression, SplitString, and etc.)
- customCode (self-defending, debug-protection, console-output)
使用 Usage
如果在安装和运行过程中出现问题,请先排查isolated-vm的安装和使用要求
If problems occur during installation and execution, please check the requirements of isolated-vm first
-
准备一个nodejs环境 (16.x以上 推荐18.x)
Prepare a nodejs environment (>=16.x and 18.x is suggested)
-
通过
npm i安装依赖Install the dependencies via
npm i -
按如下方式运行插件:
Run the plugins as follows:
# pre-defined command
npm run xxx
# or full command
npm run decode -- -t type [-i input.js] [-o output.js]
xxx为预定义的指令,见package.json中的scripts字段。
xxx are predefined commands, see the scripts field in package.json.
type:
- common (高频局部混淆)
- jjencode (sojson.com 版本)
- sojson
- sojsonv7
- obfuscator
默认输入文件为input.js,文件中不能包含除混淆代码以外的内容(例如非混淆代码)。
The default input file is input.js. The file cannot contain additional codes other than obfuscated code (such as non-obfuscated code).
默认输出文件为output.js。
The default output file is output.js.