n1tr00-10/awesome-javascript-reverse-engineering

GitHub: n1tr00-10/awesome-javascript-reverse-engineering

一份汇集 JavaScript 反混淆、反压缩与打包解包工具、AST 操作框架及实战学习资料的精选资源列表,帮助开发者将混淆压缩过的现代前端代码还原为人类可读形式。

Stars: 0 | Forks: 0

# Awesome JavaScript 逆向工程 [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) 现代 Web 应用发布的代码通常都是经过打包、压缩,并且往往是故意混淆过的。本列表汇集了你真正需要的工具和知识,帮助你将这些代码还原成人类可读的形式——无论你是在进行安全审查、恶意代码分析、漏洞赏金工作,还是仅仅想了解其底层运行机制。 ## 目录 - [反混淆与反压缩工具](#deobfuscators--unminifiers) - [打包解包工具](#bundle-unpackers) - [AST 工具](#ast-tooling) - [在线演练场](#online-playgrounds) - [学习资源与实战文章](#learning--writeups) - [了解你的对手:混淆器](#know-your-enemy-obfuscators) - [基准测试](#benchmarks) - [贡献指南](#contributing) ## 反混淆与反压缩工具 - [webcrack](https://github.com/j4k0xb/webcrack) — 对 `obfuscator.io` 输出的代码进行反混淆、反压缩,并解包打包过的 JavaScript。无需配置即可自动识别模式;被认为是处理重度混淆的最先进工具。使用 TypeScript 编写。 - [restringer](https://github.com/HumanSecurity/restringer) — 还原字符串并简化复杂逻辑。包含 40 多个模块化的反混淆模块,分为安全/不安全两类,不安全的评估操作通过 `isolated-vm` 进行沙盒处理。 - [obfuscator-io-deobfuscator](https://github.com/ben-sb/obfuscator-io-deobfuscator) — 专门用于还原 `javascript-obfuscator` / `obfuscator.io` 的转换操作。 - [humanify](https://github.com/jehna/humanify) — 使用 LLM 重命名变量和函数,同时由 Babel 在 AST 层面处理结构转换,确保代码保持 1:1 的语义等价。 - [de4js](https://github.com/lelinhtinh/de4js) — 经典的基于浏览器的 JS 反混淆和解包工具,支持多种常见的打包器(Eval、`_Array`、JSFuck 等)。 ## 打包解包工具 - [wakaru](https://github.com/pionxzh/wakaru) — 用于现代前端打包包的反编译器。能够从 webpack/esbuild/Bun/Browserify/Rollup 的输出中恢复可读的 ESM 模块,还原转译器辅助函数(如 async/await、可选链等),并有语义等价测试套件作为支持。与 webcrack 搭配使用效果更佳(先用 webcrack 去除混淆,然后再进行解包)。 ## AST 工具 - [Babel](https://babeljs.io/) — 绝对的主力工具。`@babel/parser`、`@babel/traverse`、`@babel/generator` 和 `@babel/types` 几乎是所有自定义反混淆脚本的核心。 - [AST Explorer](https://astexplorer.net/) — 用于检查由多种解析器生成的 AST 的交互式工具。编写 visitor 必不可少。 - [Babel AST Explorer](https://lihautan.com/babel-ast-explorer/) — 专用于 Babel 的 AST 探索器,侧重于编写和测试插件。 - [ast-grep](https://github.com/ast-grep/ast-grep) — 基于 Rust 的快速工具,通过 AST 模式而非纯文本进行结构化搜索、lint 和重写。 - [poc-ast-tools](https://github.com/0xdevalias/poc-ast-tools) — 用于处理(主要是 JavaScript)AST 的 PoC 脚本和工具集合。 ## 在线演练场 - [webcrack playground](https://webcrack.netlify.app/) — 粘贴混淆代码,在浏览器中获取反混淆输出。 - [wakaru playground](https://wakaru.vercel.app/) — 粘贴打包代码,还原并获取模块。 - [de4js](https://lelinhtinh.github.io/de4js/) — 在浏览器中进行反混淆和解包。 ## 学习资源与实战文章 - [ReverseJS (steakenthusiast)](https://steakenthusiast.github.io/) — 关于通过 Babel 进行 AST 操作来反混淆 JavaScript 的精彩系列教程:涵盖字符串隐藏、死代码移除、常量折叠等。如果你想编写自己的反混淆工具,这是最好的起点。 - [Trickster.dev](https://www.trickster.dev/) — 侧重于代码层面的文章,内容包括 Web 抓取、灰帽自动化以及使用 Babel 进行 AST 操作。 - [0xdevalias — Deobfuscating / Unminifying Obfuscated Web App Code](https://gist.github.com/0xdevalias/d8b743efb82c0e9406fc69da0d6c6581) — 一个持续更新的 gist,包含了整个领域的笔记、工具和链接。简直是一座宝库。 ## 了解你的对手:混淆器 了解代码是如何被混淆的,是学习如何逆向它的最快途径。 - [javascript-obfuscator](https://github.com/javascript-obfuscator/javascript-obfuscator) — 使用最广泛的开源混淆器(驱动了 `obfuscator.io`)。支持字符串数组、控制流平坦化、死代码注入、自我防御和调试器保护。大多数反混淆工具都以它的输出为目标。 ## 基准测试 - [JsDeObsBench](https://github.com/Ch3nYe/JsDeObsBench) — 用于衡量 LLM 在 JS 反混淆方面有效性的基准测试,并设有[公开排行榜](https://jsdeobf.github.io/)。 ## 贡献指南 欢迎您的贡献!请提交 pull request 来添加工具、资源或实战文章。请确保添加的内容确实有用,为每个条目包含一句简短的描述说明其使用价值,并将它们放置在对应的章节中。 _本列表仅供安全研究、学习和合法的逆向工程使用。请在分析代码时遵守相关代码的服务条款。_
标签:C2, CMS安全, JavaScript, Web安全分析, 云资产清单, 代码反混淆, 前端逆向, 可视化界面, 数据可视化, 自动化payload嵌入, 资源大全, 逆向工程