rea逆向
REA:把逆向工具接进 AI Agent,而不是让模型猜代码
给 AI 一段汇编,让它解释逻辑,这件事现在并不难。真正麻烦的是:目标程序在哪里?某个函数由谁调用?Electron 的 IPC 最后落到了哪个主进程模块?APK 里的方法如何对应到资源?只靠聊天窗口,AI 很难自己把这些线索串起来。
REA(Reverse Engineer Anything) 想解决的就是这层连接问题。它是一个本地 MCP 服务,把 Hopper、Ghidra、IDA、JADX、浏览器、ADB 等工具接到支持 MCP 的 AI Agent 上。Agent 不再是“根据你贴的代码猜”,而是可以调用分析工具,拿回伪代码、汇编、调用关系、文件结构,以及每项结论背后的证据和未知项。
- 项目地址:morluto/rea
- 官网与案例:rea.tools
它实际在做什么
REA 本身不是反编译器,也不是一个包办所有格式的万能分析器。它更像中间层:把不同目标的分析工具统一成 MCP 工具和 CLI 命令,再让 Agent 按照调查流程逐步使用。
1 | 你的问题 |
分析结果会明确标出证据和限制。这个设计很重要,因为反编译出来的伪代码看起来像源码,但不等于原始源码;AI 给出的解释再有条理,也仍然需要回到函数、引用和实际运行结果上核对。
覆盖范围
REA 的覆盖面相当宽,下面几类最值得关注:
| 目标 | 能拿到什么 | 额外依赖 |
|---|---|---|
| 原生二进制 | 伪代码、汇编、字符串、符号、调用关系和交叉引用 | Hopper、Ghidra 或 IDA |
| JavaScript / Electron | 模块、导入关系、Source Map、路由、IPC 和原生插件关系 | 静态分析不需要原生分析引擎 |
| .NET 程序集 | 元数据、CIL 指令、原生依赖和构建差异 | 静态分析不需要额外引擎 |
| Android APK | Manifest、类、反编译方法、引用和签名信息 | 部分功能需要 JADX、JDK 或 Apktool |
| 网站与运行时 | DOM、脚本、网络观察、截图、进程行为和日志 | 浏览器、PTY、ADB 等 |
| 抓包与固件 | HAR/SAZ、PCAP、协议字段、固件分区和提取结果 | mitmproxy、TShark、Binwalk 等 |
| 专用格式 | Go/Rust 构建信息、IL2CPP、Godot PCK、WASM、EVM、SQLite、模型文件等 | 视格式而定 |
这些能力并不是每个都开箱即用。比如分析原生二进制通常仍然需要配置一个重量级反编译工具;APK 分析可能需要完整的 JDK;抓包和固件功能也要准备对应的命令行工具。REA 做的是减少来回复制粘贴和手工整理,不是替你安装整个逆向环境。
安装与上手
官方当前要求 Node.js 22.x(不低于 22.23.4)、24.x(不低于 24.22.1)或 26.12.1+,同时需要 npm。版本要求比较具体,机器上装了 Node 不代表一定符合条件。
最省事的安装方式是:
1 | npx rea-agents@latest setup |
安装程序会先列出支持它的 Agent,并展示即将修改的配置。Codex、Claude Code、Cursor、Gemini CLI、Grok Build 以及支持本地 MCP 的其他客户端都可以接入。确认后,它会注册 MCP 服务并安装配套的工作流说明,完成后需要重启 Agent。
原生二进制的深分析,需要先准备 Hopper、Ghidra、IDA 或文档中列出的其他 provider。可以先检查环境:
1 | rea doctor --provider ghidra --json |
全局安装后,可以直接在终端使用:
1 | npm install --global rea-agents |
如果只想先看 JavaScript/Electron,不配 Ghidra 也能开始:
1 | npx -y rea-agents@latest analyze-javascript-application \ |
接好 Agent 后,提示词最好围绕一个明确问题展开,例如:
1 | 分析这个应用里“导出项目”功能的数据流。 |
这类问题比“帮我逆向这个 App”更容易得到可检查的结果。先看整体结构,再追一个函数,最后对照实际行为验证,通常比一次要求 AI 解释整个程序可靠。
适合哪些人
- 有合法授权的安全研究人员:做样本分析、漏洞研究、事件响应或 CTF,希望减少在多个工具之间搬运结果的时间。
- 需要兼容已有软件格式的开发者:研究文件结构、通信协议或功能实现,为自己的项目做互操作和迁移。
- Electron 和桌面应用开发者:排查模块边界、IPC、原生插件和打包产物,REA 在这一块的前置成本相对低。
- 已经使用 AI 编程 Agent 的人:如果工作流离不开 Codex、Claude Code 或 Cursor,MCP 接入很顺手。
- 学习逆向的学生和教师:适合做有明确目标的练习,但前提仍然是能看懂函数、引用和汇编证据。
不太适合这些情况:
- 只想找一键破解、绕过授权、去除 DRM 或作弊工具的人。项目声明明确不支持这些用途。
- 不愿意安装反编译工具、阅读证据或复核结论的人。REA 降低的是操作成本,不是理解成本。
- 只想分析自己电脑上的一个普通可执行文件,却没有合法授权或明确研究目标的人。
- 使用不在支持范围内的 Node.js 版本,或者不愿处理平台依赖的人。
优点
工具链集中,少做机械搬运。 查函数、看交叉引用、反编译、搜索字符串、保存分析结果,都可以沿同一套 MCP/CLI 工作流完成。对经常同时开好几个逆向工具的人来说,这能省下不少窗口切换和格式转换。
结果带证据,不是只给一段“看起来很像源码”的文字。 对追踪调用链、定位关键分支特别有用。Agent 可以继续追问,而不是在第一次回答后就结束。
静态分析路径比较轻。 JavaScript/Electron 和 .NET 的静态检查不需要先装 Hopper、Ghidra 或 IDA,适合先摸清目标结构,再决定是否进入原生分析。
Agent 和终端共用同一套能力。 平时可以用 CLI 做可重复的脚本化检查,也可以把同一批工具交给 Agent 做调查和解释。
开源,授权边界清楚。 项目使用 MIT 许可证,代码和文档都公开;第三方商业工具仍然按它们自己的许可证使用,REA 不会附带 IDA、Hopper 或 JEB 的授权。
缺点与限制
安装门槛不算低。 Node.js 的版本范围很具体;原生分析还要配置 provider,Linux 上部分功能还要求兼容 procps 的 ps,APK、固件和抓包则各有独立依赖。第一次跑通需要耐心。
商业分析工具仍然要自己买、自己授权。 Hopper、IDA Pro / Hex-Rays、JEB 不是 REA 送的。只装了 REA 并不能直接获得这些工具的能力。
分析结果可能不完整,也可能出错。 项目文档写得很直接:反编译、重建、启发式分析和 AI 辅助分析都可能不准确。遇到关键结论,应该回看函数、引用和运行结果,不要拿 AI 的解释当最终事实。
Agent 会消耗模型额度和上下文。 真实应用的 Evidence 可能有几百 MB,直接塞给模型既贵也没有必要。更合理的做法是先保存结果,再看摘要、模块页或指定函数。用 --detail summary --evidence_output 这类方式控制输出会更稳。
本地分析不等于数据完全不出机器。 目标文件由 REA 在本地处理,但分析结果会交给你的 Agent,模型服务商仍有自己的数据处理规则。处理敏感样本或私有代码时要先看清楚这一点。
运行时分析会改变目标状态。 进程捕获、网站观察、ADB 操作和交互式运行可能真的启动程序、读取数据、连接设备或影响账号状态。自己有文件,不代表有权执行、拦截或操作它涉及的所有系统。
项目迭代很快。 新功能、依赖和新限制都出现得比较频繁,旧教程容易过时。安装和排障时优先看仓库文档,并用 rea doctor 检查当前环境,而不是照抄半年前的命令。
用之前先想清楚三件事
- 权限先行。 确认软件、设备、账号和网络流量都在你的授权范围内。项目本身明确了允许的研究场景,也明确了不支持的绕过和规避用途。
- 先窄后宽。 从一个函数、一个 IPC、一段协议或一个文件格式开始。问题越具体,Agent 越容易给出可验证的线索。
- 证据优先于措辞。 让 Agent 给出文件、函数、地址和引用,再自己回到工具里确认。能复现、能测试的实现,比一段漂亮的功能说明更有价值。
REA 的看点不是“AI 会不会逆向”,而是它把现成的逆向工具整理成了 Agent 能调用的接口,并且尽量保留了分析过程的证据。
如果你已经有 Ghidra、Hopper 或 IDA,或者经常拆 Electron 应用,值得花半个小时跑一遍 setup。它不会让逆向变成零门槛,但能把“查一下、追一下、再解释一下”这条链路接得更顺。
