# decode-js JavaScript 反混淆 AST 工具

> 基于 Babel AST 的处理工具，可把混淆过的 JavaScript 还原为可读源码，每次运行选择一个目标：javascript-obfuscator（obfuscator.io）、JS-Confuser 2.x（直至 high 预设）、sojson 及其面向 jsjiami.com.v7 的 v7 变体、sojson 风格的 jjencode，以及处理不可达代码、嵌套代码块和常量表达式的通用目标。另一个按版本区分的 obfuscator.io 目标会报告检测到的编码器版本区间；遇到无法读取的字符串数组层时，它不输出结果并说明原因，而不是给出解了一半的程序。JS-Confuser 文档逐项列出可还原的变换，以及变量重命名等会丢失信息、无法恢复的变换。

- 类型：工具
- 目标：网站
- 类别：网站分析工具
- 关联：基础工具
- 来源复核于：2026-10-20
- 收录于：2026-11-02
- 原始资源：<https://github.com/echo094/decode-js>
- 一手来源：<https://github.com/echo094/decode-js/blob/ca4690abacd3dc3666363769a7e846758e7311e9/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/decode-js/>
- 记录 JSON：<https://awesomerea.org/resources/decode-js/record.json>
- 英文版：[English](https://awesomerea.org/resources/decode-js/index.md)

## 使用条件与局限

- 仓库未发布 Release 或标签；所审阅的 main 分支提交日期为 2026-10-17，需从源码运行。package.json 要求 Node.js 26.x，以配合原生依赖 isolated-vm 7；README 提醒先查看 isolated-vm 的构建要求。执行 npm i 后，可通过 npm run decode -- -t <目标> 运行命令行工具，并可指定输入和输出路径，也可使用 deob、deobx、dejsc、deso、desov7 等快捷命令。
- 输入为单个混淆脚本，默认是 input.js；README 说明该文件中不能夹杂其他未混淆的代码。适用范围取决于混淆器及其版本：按版本区分的目标覆盖 javascript-obfuscator 2.x 各阶段和 5.5.0，3.0.0–4.2.2 尚未验证，落在该区间的样本会报告为未知；JS-Confuser 目标无法还原 RenameVariables、RenameLabels 和 ObjectExtraction。
- 解码时会执行输入中的部分代码：字符串数组解码函数和 JS-Confuser 运行时辅助函数在 isolated-vm 沙箱中运行，但 obfuscator、sojson 和 sojsonv7 目标会在解码器自身进程中用 Node.js 的 eval 解开最外层的 eval 包装。应把输入视为不受信任的代码，还原出的字符串和控制流也需对照原始脚本核实。
- CI 在 Node.js 26 上运行 Vitest 测试套件；测试样例针对 JS-Confuser、obfuscator.io 和 sojson v7 目标，把混淆样本（大多由仓库内附的源文件生成）与预期解码结果配对。README、LICENSE 和 package.json 均声明 GPL-3.0-or-later。

## 一手来源

1. <https://github.com/echo094/decode-js/blob/ca4690abacd3dc3666363769a7e846758e7311e9/README.md>
2. <https://github.com/echo094/decode-js/blob/ca4690abacd3dc3666363769a7e846758e7311e9/package.json>
3. <https://github.com/echo094/decode-js/blob/ca4690abacd3dc3666363769a7e846758e7311e9/docs/jsconfuser.md>
4. <https://github.com/echo094/decode-js/blob/ca4690abacd3dc3666363769a7e846758e7311e9/src/main.js>
5. <https://github.com/echo094/decode-js/blob/ca4690abacd3dc3666363769a7e846758e7311e9/src/plugin/eval.js>
6. <https://github.com/echo094/decode-js/blob/ca4690abacd3dc3666363769a7e846758e7311e9/src/plugin/obfuscator.js>
7. <https://github.com/echo094/decode-js/blob/ca4690abacd3dc3666363769a7e846758e7311e9/src/visitor/obfuscator/string-array.js>
8. <https://github.com/echo094/decode-js/tree/ca4690abacd3dc3666363769a7e846758e7311e9/test>
9. <https://github.com/echo094/decode-js/blob/ca4690abacd3dc3666363769a7e846758e7311e9/.github/workflows/test.yml>
10. <https://github.com/echo094/decode-js/blob/ca4690abacd3dc3666363769a7e846758e7311e9/LICENSE>

## 同分区更多条目：网站

- [javascript-deobfuscator Obfuscator.io 字符串还原网页工具（LostMyCode）](https://awesomerea.org/zh/resources/lostmycode-javascript-deobfuscator/index.md) · 工具
- [minusone 脚本去混淆引擎](https://awesomerea.org/zh/resources/minusone-script-deobfuscator/index.md) · 工具
- [JS-Deobfuscator（0x1Avram）Obfuscator.io 反混淆工具](https://awesomerea.org/zh/resources/0x1avram-js-deobfuscator/index.md) · 工具
- [HTTP Toolkit HTTP(S) 调试代理](https://awesomerea.org/zh/resources/http-toolkit/index.md) · 工具
- [willnode JavaScript 手动反混淆编辑器](https://awesomerea.org/zh/resources/willnode-deobfuscator/index.md) · 工具
- [go-fAST JavaScript 语法树库](https://awesomerea.org/zh/resources/go-fast-js-ast/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
