REA - 面向 AI Agent 的一站式逆向工程 MCP 工具集
约 2096 字大约 7 分钟
AI逆向工程MCP开发工具
2026-10-13
简介
REA(Reverse Engineer Anything)是由 morluto 开发的一套面向 AI Agent 的逆向工程工具集,官方定位是「One MCP for reverse engineering across binaries, applications, and runtime behavior」——用一个 MCP Server 覆盖从应用行为到原生二进制的全部逆向场景。
它做的事情很直接:当你在某个 App 里看到一个喜欢的功能,想让自己的产品也拥有时,让 AI Agent(Claude Code、Codex、Cursor、Gemini CLI、Grok Build 等)通过 REA 去检查没有源码的目标,解释这个功能怎么实现的、给出证据(evidence),并据此为你的项目实现一个类似版本。
REA 用 TypeScript 编写,采用 MIT 协议,通过 rea-agents 这个 npm 包分发。它把 Hopper、Ghidra、IDA、JADX、Apktool、Binwalk、TShark 等一堆逆向/分析工具,统一封装成了 MCP 工具 + CLI 命令两层接口,让 Agent 和人都能用同一套工作流。分析全部在本地进行,并且每个结论都会附带证据与「已知局限」。
解决什么问题?
把「逆向工程」这件事交给 AI Agent 时,常见的痛点:
- 工具链割裂:分析二进制要用 Hopper/IDA,看 Electron 要拆 ASAR,看 APK 要用 JADX,抓包要 TShark——每个工具一套 GUI、一套输出格式,Agent 无从下手
- Agent 缺乏「证据」意识:直接让大模型描述某功能如何实现,容易一本正经地编造,且无法追溯结论来源
- 上下文难以回传:GUI 工具的分析结果是给人看的,很难结构化成 Agent 能消费的数据
- 上手成本高:装环境、配 provider、拼命令行参数,劝退大部分非专业逆向人员
REA 的思路是:把每种目标类型的分析能力都抽象成一个 MCP Tool,Agent 调用后拿到的是「代码 + 引用 + 未知项」这类结构化结论,再基于它去解释、实现、验证。CLI 命令与 MCP 工具共享同一套 workflow,所以人也能在终端里复现 Agent 的分析过程。
核心概念
分层架构
| 层 | 说明 |
|---|---|
| MCP Server | npx rea-agents setup 注册到 Agent,暴露统一的 tool catalog |
| CLI | rea 命令,与 MCP 共享分析 workflow,可脚本化、可 --json 输出 |
| Provider(深度分析后端) | 原生二进制分析依赖 Hopper / Ghidra / IDA 之一;setup 可在你批准后安装 Hopper |
分析工作流
- 你的 Agent 通过 MCP 向 REA 提出针对本地目标的问题
- REA 调用对应分析工具进行 inspect + trace
- REA 返回带证据的发现(代码、引用、以及尚不确定的部分)
- Agent 据此追问、解释行为,或直接编写并测试一个实现
能分析的对象(节选)
REA 覆盖面非常广,以下是 README 中最重要的几类:
| 目标类型 | REA 返回什么 | 依赖 |
|---|---|---|
| 原生二进制 | 伪代码、汇编、字符串、符号、调用与引用 | Hopper / Ghidra / IDA |
| Go 二进制 | 编译器版本、模块、replacements、build settings | 内置静态 ELF/PE/Mach-O 解析,无需装 Go |
| JavaScript / Electron | 模块、imports、source map、路由、IPC、native add-on 关系 | Node.js + npm(无需原生分析引擎) |
| 网站 | 页面结构、脚本、网络观测、按需截图 | Chrome 系浏览器 |
| .NET 程序集 | 元数据、CIL 指令、原生依赖声明、构建对比 | 无(纯静态) |
| Android APK | Manifest 声明、classes、反编译方法、引用 | Headless JADX + 完整 JDK |
| Android 设备 | 设备、包、进程、日志、dump、截屏、文件传输 | 需自备 adb |
| WASM / EVM 字节码 | 校验、section、import/export 的 WAT 形式;EVM 派发选择器与偏移 | WABT / 本地 carrier |
| SQLite 数据库 | 表、列、索引、视图、触发器及指定行 | 本地 DB/WAL 快照 |
| 网络抓包 | 请求、响应、暴露的 payload、来源位置 | HAR / SAZ 文件 |
| 固件 / 数据包 / 逻辑信号 | 区域与提取结果;字段与过滤;解码注解 | Binwalk/Unblob、TShark、sigrok-cli |
| 进程行为 | 终端输出、交互、退出与文件系统观测、运行对比 | Linux/macOS 原生 PTY |
纯静态分析(JavaScript、.NET)只读文件、不运行程序;而运行时捕获(runtime capture)会以你的用户权限实际运行或交互目标,每份运行时指南都会说明其副作用。
安装与配置
前置要求:
- Node.js 22.x(>=22.19)、24.x(>=24.11)或 26+,以及 npm
- 深度原生分析需 Hopper / Ghidra / IDA 之一(纯 JS / .NET 静态分析不需要)
- 部分目标需要额外工具(pwntools、JADX、Apktool、Binwalk、TShark、sigrok-cli 等),具体要求见上表
为 Agent 注册(推荐):
npx rea-agents setup执行后会引导你选择 Agent、预览将写入的配置变更并确认,随后写入 REA 的 MCP Server 与配套的 workflow 指令,已有配置会自动备份。完成后重启 Agent 即可。
安装常驻 CLI:
npm install --global rea-agents
rea --help更新(REA 迭代很快,建议常更新):
rea update # 全局安装方式
npx rea-agents@latest setup # npx / Agent setup 方式使用方式
最自然的方式:直接对 Agent 说话
setup 完成后,你不需要记任何命令,只需描述目标与诉求:
Understand how search works in the Notes app, show me the evidence,
and build a similar feature for my project.把
Notes换成你的目标应用,把search换成你想弄懂的功能即可。
命令行方式:静态分析 JS / Electron
# 分析已解包的 JS/Electron 应用目录或 ASAR 文件
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json输出包含模块、imports、Electron 边界(preload / renderer / main 的 IPC 关系)及其证据。--json 便于接入脚本。
原生分析的 provider 选择
原生分析需要先配置 provider(Hopper / Ghidra / IDA):
- Hopper:setup 可在批准后安装;首次运行可能弹窗选择 demo 模式或激活授权,需在同一用户会话内完成
- Ghidra:使用你已有的安装,另支持 16-bit DOS 分析
- IDA:提供指南,含可选的 native MCP bridge
大型二进制可调高启动超时:
export REA_GHIDRA_STARTUP_TIMEOUT_MS=... # 或 REA_HOPPER_STARTUP_TIMEOUT_MS实际示例
官方提供了三个完整 showcase,覆盖「从应用行为到二进制」的不同深度:
1. DX-Ball:重建一个音量平移(sound-pan)算法
从一次 sound 调用出发,追进「位置 → 声像」的辅助函数,查看指令,把残缺的伪代码补全成 C。结果通过了 3205 组原始 x86 用例,并逐字节复现了 63 字节的编译产物。
2. Notion:追踪 Electron 剪贴板桥接
找到 renderer 的剪贴板 API,沿着 preload → IPC → main process 一路追踪,并检查富文本剪贴板格式。
3. TH04:恢复 DOS 弹幕环计算
检查原版 PC-98 游戏的 16-bit 指令,恢复固定角度与瞄准角度的计算,并把重建的 C++ 与历史编译器输出做对比。
共同的模式是:Agent 提问 → REA 在本地 inspect + trace → 返回证据 → Agent 解释/实现/验证。
如何更好地利用
- 先想清楚「要回答什么问题」:REA 的价值不是「dump 出所有反汇编」,而是回答「这个功能是怎么做到的」。带着具体问题问 Agent,证据链才有意义
- 把它当成「功能借鉴」的合法工具:典型用法是理解一个你有权分析的程序如何实现某功能,再在自己的项目里独立实现——而不是直接拷贝他人代码
- 善用 CLI 的
--json:把 REA 接入自己的自动化脚本或 CI,做回归式的二进制对比 - 区分静态与运行时:静态分析零副作用、可无脑用;运行时捕获会真实运行目标,注意其在文件系统/网络上的影响
- 注意合规红线:使用 IDA Pro / Hex-Rays、Hopper、JEB 等商业工具必须自行合法获得授权,REA 不提供任何 license 或激活;README 的免责声明明确禁止使用破解版、盗用 key 或绕过授权
- 及时更新:项目迭代频繁,遇到 bug 先
rea update再提 issue
相关链接
- GitHub:morluto/rea
- 官网:rea.tools
- 指南:rea.tools/guides
- 案例展示:rea.tools/showcase
- npm:rea-agents
- Discord:社区
- 协议:MIT(第三方材料保留各自许可)
