用 AI 写代码这件事,如今已经不是什么新鲜事了。但不知道你有没有过这种时刻:看到一个 App 里某个功能特别优雅——比如 Windows 计算器那个"200 + 10% = 220"的百分比逻辑,比如某款老游戏里丝滑的音效声场——你想搞明白它是怎么实现的,然后发现:没有源码。过去的路子只有一条,请一位专业逆向工程师,或者自己啃 Hopper、Ghidra、IDA 这三座大山。
今天五哥要给大家介绍的 REA(Reverse Engineer Anything),干的就是把这条路的门槛直接铲平的活儿。它的官方副标题一句话说完了所有野心:
One MCP for reverse engineering across binaries, applications, and runtime behavior. —— 一个 MCP,把逆向工程覆盖到二进制、应用程序和运行时行为。
一句话概括:给 AI 编码 Agent 装上一套逆向工程工具箱,让它无需源码就能拆开任何应用——从原生二进制、Electron 应用、.NET 程序集,到 Android APK 和网站,分析完还给你带证据链的结论。这个项目从今年 4 月建仓,到 10 月已经冲上 20 万 GitHub Star,npm 包 rea-agents 单周下载量 23 万次,是目前 AI Agent 工具赛道最现象级的开源项目之一。
📌 REA 是什么?
REA 出自 GitHub 用户 morluto 之手,TypeScript 写的,MIT 协议,官网在 rea.tools。它本质上是一个 MCP Server(Model Context Protocol),可以无缝挂到 Claude Code、Codex、Cursor、Gemini CLI、Windsurf、Devin、GitHub Copilot CLI 等十几款主流编码 Agent 上——只要你的 Agent 支持本地 MCP,就能用。
它的定位说得很清楚:不是"代码克隆工具",而是"可验证的逆向调查管线"。整个工作流被拆成三步:
- Decompile(反编译)——通过 Hopper、Ghidra、IDA 等引擎打开目标,还原可读伪代码、汇编、字符串、符号和调用关系;
- Understand(理解)——Agent 顺着调用链追踪逻辑,直到能清晰解释某个功能"到底是怎么实现的";
- Recreate(重建)——把理解转化成你自己项目里能跑的实现,并测试验证。
第三步是 REA 和普通反编译工具最大的区别:它不只是"给你看汇编",而是让 Agent 基于分析结果直接把功能重写出来。所有分析全程在本地运行,每条结论都附带 Evidence(证据)和 Limitations(局限),有迹可循、不凭空臆测。
🧰 它能拆什么?覆盖面相当吓人
这是 REA 最让人意外的地方——原以为它只是个"二进制反编译 MCP",实际看它的目标清单,几乎把软件的每一种形态都安排上了:
| 目标类型 | 能拿到什么 | 额外要求 |
|---|---|---|
| 原生二进制 | 伪代码、汇编、字符串、符号、调用引用 | Hopper / Ghidra / IDA 任一 |
| Go / Rust 二进制 | 编译器版本、模块信息、crate 依赖边 | 内置静态分析,无需装 Go/Rust |
| JavaScript / Electron 应用 | 模块、导入、source map、路由、IPC、原生插件关系 | Node.js 即可,无需反编译引擎 |
| 网站 | 页面结构、脚本、网络观察、截图 | Chrome 系浏览器 |
| .NET 程序集 | 元数据、CIL 指令、原生依赖、构建对比 | 纯静态,无额外依赖 |
| Android APK | Manifest 声明、类、反编译方法与引用 | Headless JADX + JDK |
| Android 设备 | 包、进程、日志、截屏、APK 传输 | adb(模拟器或真机) |
| Flutter 应用 | Dart 快照哈希、分 ABI 库摘要、引擎构建溯源 | 纯静态解析 |
| 固件 | 区域、提取结果、原生分析交接 | Binwalk / Unblob(Linux) |
| WASM / EVM 字节码 | 导入导出 WAT、合约 selector、参数推断 | WABT / Linux 本地分析 |
| SQLite 数据库 | 表、列、索引、视图、触发器、数据行 | 本地快照 |
| 抓包文件 | 请求响应、暴露的载荷、来源定位(HAR/SAZ) | mitmdump(可选) |
| 网络数据包 / 逻辑信号 | 端点、DNS、TLS SNI、协议分布、解码注解 | TShark / sigrok-cli(Linux) |
| 进程行为 | 终端输出、交互、退出码、文件系统观察 | Linux/macOS 原生 PTY |
从 1996 年的 Windows 老游戏到链上智能合约,从手机 App 到路由器固件,基本都在射程之内。而且静态的 JavaScript 和 .NET 分析完全不需要装任何反编译引擎,开箱即用。
🎯 官方案例:有多硬核?
官网 Showcase 里挂了三个完整的复盘案例,每一个都值得细品:
案例一:Windows 计算器的 % 按钮。这是个很多人被坑过的问题——为什么 200 + 10% 等于 220,而 200 × 10% 等于 20?REA 拆开安装好的 Calculator 的二进制,定位到 % 按钮的处理函数,还原出两条分支:加法后面的 % 取的是第一个数的百分比(200 的 10% 是 20,所以 200+20=220),乘法后面的 % 则把当前数除以 100(0.1×200=20)。官方拿微软开源的计算器源码交叉验证了还原结果,分毫不差。
案例二:Chrome 恐龙小游戏的加速规则。REA 通过浏览器调试通道读出运行中的游戏脚本,找到了那条加速规则:初速 6,每次更新加速 0.001,上限 13。然后 Agent 用这条还原出来的规则,重写了一个带速度滑杆的迷你版恐龙游戏——你能亲手把速度调到官方数值玩。
案例三:DX-Ball(1996)的声场计算。这是最能体现"考古级"能力的一个:从没有源码的老游戏 exe 里,顺着声音调用一路追到"球位置 → 左右声道"的声像函数,把不完整的伪代码补全成 C 语言,最终通过了 3205 个原始 x86 测试用例,重建函数的 63 字节机器码与原版完全一致——连编译器产出的字节都复刻了。
另外还有 Notion 剪贴板桥接、Aegis 验证器的六位动态口令(为什么每 30 秒变一次)等 Electron / Android 案例都在官网上挂着完整过程。
🚀 上手:一条命令的事
要求 Node.js 22.x(≥22.19)/ 24.x(≥24.11)/ 26+,装好 npm 即可。在你的 Agent 环境里跑:
npx rea-agents setup
它会列出要改的配置项(写入 MCP 注册 + 匹配的工作流指令),确认后自动备份原配置再写入,重启 Agent 就生效。想长期用可以全局安装:
npm install --global rea-agents
rea --help
然后就可以直接对你的 Agent 说人话了:
搞清楚备忘录 App 的搜索是怎么实现的,给我看证据,
然后在我的项目里做一个类似的功能。
不用 Agent 也行,CLI 直接干活。比如分析一个解包出来的 Electron 应用目录或 ASAR 文件:
npx -y rea-agents@latest analyze-javascript-application /绝对路径/应用目录 --json
几个常用的运维命令:
rea update # 升级
rea doctor # 全链路体检(所有 Agent + 引擎)
rea doctor --client codex --json # 只检查某个 Agent 的注册状态
rea doctor --provider ghidra # 只检查某个反编译引擎
原生二进制分析需要三选一:Hopper(setup 时经你确认可以自动装)、Ghidra、IDA Pro。后两者接你已有的安装,REA 不会替你装,也不会给你license——商业工具你得自己合法持有,README 里专门用一段强调了"不接受破解版"。
⚖️ 和传统逆向工具比,变了什么
| 对比项 | 传统流程(Hopper/Ghidra/IDA 手动分析) | REA + AI Agent |
|---|---|---|
| 上手门槛 | 需要系统学习反汇编与逆向方法论 | 自然语言提问即可 |
| 分析方式 | 人工逐函数阅读汇编/伪代码 | Agent 沿调用链自动追踪 |
| 产出 | 你自己的笔记和注释 | 解释 + 证据链 + 可运行的重写实现 |
| 覆盖目标 | 主要面向原生二进制 | 二进制/JS/.NET/APK/固件/抓包/信号全覆盖 |
| 可复现性 | 依赖个人经验 | 结论附带 Evidence 与 Limitations |
| 成本 | 工具付费或免费自选 | MIT 开源,引擎按需自备 |
它的定位其实很清晰:不是取代逆向工程师,而是把"看懂一个闭源软件"这件事,从专业技能变成一段对话。深度疑难杂症还是得人上,但 80% 的"我就想知道这个功能怎么实现的",现在一句话的事。
🤔 该说的边界,也得说
- ⚖️ 合法使用是硬前提——官方免责声明写得非常明确:REA 仅用于合法的研究、教育、互操作性、软件保存,以及你拥有或被授权分析的软件。拿它拆别人的商业闭源软件搞抄袭,不是这个项目的用途;
- 🔒 数据在本地——分析全程在本地执行,目标程序不会上传。但要留意你的 Agent 背后的模型服务商有自己的数据政策;
- 🧩 引擎自备——原生深度分析依赖 Hopper / Ghidra / IDA,静态 JS 与 .NET 则零依赖;Hopper 只在 setup 时经你明确批准才会安装;
- 🩹 版本迭代很快——项目更新频繁,遇到 bug 先
rea update,很多问题在新版本里已经修了; - 📄 MIT 协议——REA 自身代码完全开源免费,商业工具的授权责任在使用者自己。
💬 五哥总结
逆向工程这个行当,过去三十年基本是少数人的手艺活。REA 有意思的地方在于,它没有试图"用 AI 重做一个 Ghidra",而是把现有的专业引擎(Hopper / Ghidra / IDA / JADX / Binwalk / TShark……)全部接到 MCP 这一层,让 Agent 当那个读汇编的人。引擎还是那些引擎,但操作它们的门槛从"科班逆向工程师"降到了"会用 Claude Code 的开发者"。
半年 20 万 Star,说明这个需求是真刚需——毕竟"看到一个好功能想抄作业"这件事,写代码的人谁没干过呢?只是以前抄作业得先会破解题目的锁,现在 AI 帮你把锁打开了,还把解题步骤(Evidence)写得明明白白。
项目地址:
- GitHub:https://github.com/morluto/rea
- 官网:https://rea.tools/
- npm:rea-agents
你是怎么看"AI 逆向工程"这件事的?是效率神器,还是新的合规隐患?评论区聊聊。