文章

REA 深度拆解:让 AI 智能体逆向二进制、应用与运行时行为的 MCP 项目

半年涨到 21 万 star,211 位贡献者、近 3000 次提交。REA 用一个 MCP 服务把智能体接到 Hopper、Ghidra、IDA 上,让它去回答"这个功能到底是怎么实现的"。

REA 深度拆解:让 AI 智能体逆向二进制、应用与运行时行为的 MCP 项目

看到一个喜欢的功能,想搞清楚它的原理,甚至在自己的项目里做一套类似的 —— 但没有源代码。

这是逆向工程一直以来的场景。传统做法是打开 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 / Fork211,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 能读懂反汇编结果”这一段 —— 让智能体能自己驱动分析工具,并给出可验证的结论。

三、工作流程

整个链路是四步:

  1. 智能体通过 MCP 调用 REA,说明要调查什么
  2. REA 用底层的分析工具检查目标、追踪相关代码
  3. REA 返回发现 + 对应的证据
  4. 智能体拿这些代码、引用和”未知项”去解释行为,或者编写并测试实现

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 这类商业工具的重度场景,授权成本要自己算

另外它对证据的强调是我比较欣赏的一点:不是丢给你一段”看起来对”的代码,而是给出支撑结论的引用和限制条件。逆向这件事,结论没有证据基本没法用。

参考

本文数据取自 2026 年 10 月 14 日的 GitHub API、项目 README 与 npm registry。Star 数和版本迭代很快,具体数字请以你查看时为准。

本文由作者按照 CC BY 4.0 进行授权