REA 深度拆解:让 AI 智能体逆向二进制、应用与运行时行为的 MCP 项目
半年涨到 21 万 star,211 位贡献者、近 3000 次提交。REA 用一个 MCP 服务把智能体接到 Hopper、Ghidra、IDA 上,让它去回答"这个功能到底是怎么实现的"。
看到一个喜欢的功能,想搞清楚它的原理,甚至在自己的项目里做一套类似的 —— 但没有源代码。
这是逆向工程一直以来的场景。传统做法是打开 IDA 或 Ghidra,人工读汇编、跟调用、猜结构,门槛高、耗时长。而 REA 想做的事是:让 AI 智能体来干这活。
一、这是个什么项目
| 项目 | REA(Reverse Engineer Anything) |
|---|---|
| 仓库 | morluto/rea |
| 官网 | rea.tools |
| 协议 | MIT |
| 主要语言 | TypeScript(约 21.5 MB 代码),另有 Python / Java / C++ / Swift / C |
| 创建时间 | 2026-04-14 |
| 最新提交 | 2026-10-14(持续活跃) |
| Star / Fork | 211,574 / 51,982 |
| 贡献者 / 提交 | 211 人 / 2,985 次 |
| 最新版本 | rea-agents 6.4.0(2026-10-11) |
半年时间涨到 21 万 star,README 里专门写了一行「GitHub Star 达到 200,000 个,感谢大家」。这个量级放在整个 GitHub 上也是顶流。
它的自我定位很清晰:一个 MCP 服务 + 一个 CLI,把智能体连接到逆向分析工具链上。
二、它解决什么问题
官方的说法是:
在应用中看到一个想加入自己产品的功能?让智能体用 REA 调查它。即使没有源代码,智能体也可以检查应用、解释功能的工作方式、展示证据,并为你的项目实现类似功能。
注意这句话里的三个关键词:解释、证据、实现。
它不是要取代 IDA,而是补上”AI 能读懂反汇编结果”这一段 —— 让智能体能自己驱动分析工具,并给出可验证的结论。
三、工作流程
整个链路是四步:
- 智能体通过 MCP 调用 REA,说明要调查什么
- REA 用底层的分析工具检查目标、追踪相关代码
- REA 返回发现 + 对应的证据
- 智能体拿这些代码、引用和”未知项”去解释行为,或者编写并测试实现
CLI 命令走的是同一套工作流,所以你不接智能体、纯在终端里用也行。
四、快速上手
需要 Node.js 22.x(>= 22.19)、24.x(>= 24.11)或 26+,以及 npm。
接智能体:
1
npx rea-agents setup
选好智能体 → 检查它打算做的变更 → 批准 → 重启智能体。设置流程会注册 MCP 服务、安装配套的工作流指引,并备份已有配置。官方支持 Claude Code、Codex、Cursor、Gemini CLI、Grok Build 等,其他客户端可以手动注册 MCP。
纯命令行:
1
2
3
4
5
6
# 分析已解包的 JavaScript / Electron 应用或 ASAR 文件
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
# 常用的话装成全局命令
npm install --global rea-agents
rea --help
原生二进制分析需要先配置分析引擎(Hopper / Ghidra / IDA);纯静态的 JavaScript 和 .NET 检查不需要任何原生引擎。
五、能分析什么
这是 REA 最”重”的部分 —— 官方列了二十多类目标。按用途归一下类:
原生与二进制层
- 原生二进制文件 → 伪代码、汇编、字符串、符号、调用和引用(需 Hopper / Ghidra / IDA)
- 离线 ELF 布局 → 节、段、原始符号/重定位、静态防护机制候选项
- Go 二进制 → 内嵌编译器版本、模块、替换项、构建设置(内置检查,不需要装 Go)
- Rust 二进制 → 内嵌的 cargo-auditable 依赖清单
- WASM 工件 → 校验、节、精确的导入/导出 WAT 形式
- EVM 字节码 → 分派选择器、字节偏移、推断参数、状态可变性
- 固件 → 区域划分、提取结果,再转交原生分析
应用层
- JavaScript / Electron → 模块、导入、source map、路由、IPC 和原生扩展关系
- .NET 程序集 → 元数据、CIL 指令、声明的原生依赖、构建对比
- Flutter 应用 → Dart 快照哈希、按 ABI 的库摘要、引擎构建溯源
- Apple 应用 / 软件包 → 文件清单、plist、bundle 结构、提取的资源
移动端
- Android APK → 清单声明、类、反编译方法和引用(需无界面 JADX + 完整 JDK)
- Android 设备 → 设备、软件包、进程、日志、转储、截图、APK/文件传输(需 adb)
- Android 资源 → 解码后的清单、字符串表、语言区域(需 Apktool)
- JEB 项目 → 项目单元、工件摘要、类型/方法伪代码
运行时与网络
- 网站 → 页面结构、脚本、网络观察结果、按请求截图
- 已保存的网络捕获(HAR)→ 请求、响应、可访问载荷、来源位置
- 数据包捕获(pcap)→ 端点、DNS、TLS SNI、协议分布、HTTP 请求
- 进程行为 → 终端输出、交互、退出、文件系统观察结果、运行对比
- 已记录的 Linux 崩溃 → 原始 note、寄存器/信号、映射候选项
- 录制的逻辑信号 → 解码注释、样本范围、诊断信息
这里有个设计取向值得注意:静态检查只读文件、不运行应用;而运行时捕获会以你的用户权限运行目标或与之交互 —— 官方对两类操作的影响是分开说明的。
六、三个真实案例
官方 showcase 里有三个完成度很高的例子,能看出这东西的上限。
DX-Ball:重建声像计算
沿声音调用追踪到根据位置计算声像的辅助函数,检查指令,把不完整的伪代码转写成 C。
结果:重建版本通过了 3,205 个原始 x86 测试用例,并复现了编译后函数的全部 63 个字节 —— 也就是说,逆向出来的实现和原版逐字节一致。
Notion:追踪 Electron 剪贴板桥
从渲染进程的剪贴板 API 出发,沿 preload 和 IPC 一路追到主进程,检查富格式剪贴板数据是怎么传的。
TH04:恢复 DOS 环形子弹的计算
检查原始 PC-98 游戏的 16 位指令,恢复固定角度和瞄准角度的计算逻辑,再把重建的 C++ 与当年的编译器输出做对比。
前两个案例的重建项目都单独开源了,可以直接去看。
七、工程上值得说的几点
扒了一下仓库结构,这个项目的工程化程度相当高:
- 按目标类型分模块。
src/下是adb、android、ghidra、hopper、ida、jeb、evm、wasm、firmware、flutter、pcap、signals、dotnet、electron…… 基本一个分析目标一个目录。 - 引擎桥接层单独抽出来。
bridge/下是ghidra、cutter、mitmproxy、pwndbg、pwntools、nativeaot,还有一个hopper_bridge.py。说明不同引擎是通过统一桥接协议接进来的,加新引擎不用改上层。 - 60+ 篇文档。
docs/里除了安装和 CLI,还有architecture.mermaid、error-contract.schema.json、reconstruction-obligation-ledgers.md这类偏契约和验证的文档。 - 大型分析的资源控制。最近的版本专门做了:不加载全部 payload 也能发现保留的 Evidence,用摘要和选定视图检查 JS 图、二进制布局和函数档案;JS 分析在独立进程里跑,堆和超时可配,资源耗尽时保留已完成的事实和显式未知项。
最后一条其实挺关键 —— 逆向分析很容易”跑不完”,能把已完成的部分和明确的未知项保留下来,比直接失败有用得多。
发布节奏也很快:10 月 7 日 5.0.0 → 8 日 6.0.0 → 9 日 6.1/6.2/6.3 → 11 日 6.4.0。官方在 FAQ 里直接说”遇到错误先更新,最近的版本可能已经修了”。
八、隐私与合规
这两点是这类工具绕不开的,REA 的说明比较明确:
分析在本机运行,不上传你的应用。 智能体会收到工具结果,但模型提供商有自己的数据政策 —— 也就是说,真正决定数据流向的是你用的那个智能体。
定位是合法用途:研究、教育、互操作性、软件保存,以及分析你拥有或获准检查的软件。商用工具(IDA Pro / Hex-Rays、Hopper、JEB)需要你自己合法取得授权 —— REA 不提供许可、密钥或激活权利,明确禁止使用破解副本或绕过许可限制。
README 里还有一段少见的提醒:注意仿冒。官方渠道只有 morluto/rea 仓库、rea.tools 官网和 npm 上的 rea-agents 包 ——相似的仓库名或复制过去的 README 不能证明下载来源是官方的。
九、适合谁用
我的判断是这样:
适合
- 想搞清楚某个软件某个功能怎么实现,又没有源码
- 做安全研究 / CTF / 漏洞分析,需要快速摸清一个二进制的结构
- 做互操作性开发(比如给某个闭源应用写插件、对接它的数据格式)
- 做软件保存 —— 老游戏、老平台的逻辑复原
不太适合
- 只是想看看别人家 UI 怎么写的(那用浏览器开发者工具就够了,不用上 REA)
- 没有明确调查目标、指望”AI 自动帮我把这个软件逆向出来” —— 这轮 AI 的能力边界还在这
- 需要 IDA Pro / Hopper 这类商业工具的重度场景,授权成本要自己算
另外它对证据的强调是我比较欣赏的一点:不是丢给你一段”看起来对”的代码,而是给出支撑结论的引用和限制条件。逆向这件事,结论没有证据基本没法用。
参考
- 仓库:https://github.com/morluto/rea
- 官网与案例:https://rea.tools/
- npm 包:https://www.npmjs.com/package/rea-agents
- Discord 社区:https://discord.gg/GkcryMnJDM
本文数据取自 2026 年 10 月 14 日的 GitHub API、项目 README 与 npm registry。Star 数和版本迭代很快,具体数字请以你查看时为准。