工具

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 文档逐项列出可还原的变换,以及变量重命名等会丢失信息、无法恢复的变换。

使用条件与局限

  • 仓库未发布 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. README.md GitHub · echo094/decode-js · 修订 ca4690a
  2. package.json GitHub · echo094/decode-js · 修订 ca4690a
  3. docs/jsconfuser.md GitHub · echo094/decode-js · 修订 ca4690a
  4. src/main.js GitHub · echo094/decode-js · 修订 ca4690a
  5. src/plugin/eval.js GitHub · echo094/decode-js · 修订 ca4690a
  6. src/plugin/obfuscator.js GitHub · echo094/decode-js · 修订 ca4690a
  7. src/visitor/obfuscator/string-array.js GitHub · echo094/decode-js · 修订 ca4690a
  8. test GitHub · echo094/decode-js · 修订 ca4690a
  9. .github/workflows/test.yml GitHub · echo094/decode-js · 修订 ca4690a
  10. LICENSE GitHub · echo094/decode-js · 修订 ca4690a

同分区更多条目:网站

网站分区全部 38 项资源