REA:用 AI 智能体逆向分析应用与原生二进制
Reverse engineer anything with agents, from app behavior down to native binaries
REA 是一个把 Hopper、Ghidra、IDA 等本地逆向分析工具接入 AI 智能体的 MCP 服务器,配套有 CLI 与工作流指令。
展示了把 Hopper、Ghidra、IDA 等本地分析工具接入 AI 智能体的 MCP 工作流,读者可直接复用其脚手架搭建同类逆向分析流程。
在某个应用中看到了你想要的功能,想加入自己的产品?让你的代理使用 REA 进行调查。它可以在没有源代码的情况下检查应用,解释该功能的工作原理,展示证据,并为你的项目构建一个版本。
REA 将你的代理连接到用于检查原生二进制文件、JavaScript 和 Electron 应用、.NET 程序集以及网站的工具。你也可以从终端使用同样的工具。分析在本地运行,结果会包含每个结论背后的证据和局限。
安装程序会在你的代理中注册 REA,并安装匹配的工作流指令。原生分析可以使用已有的 Hopper、Ghidra 或 IDA 安装;安装程序可在你许可后选择性地安装 Hopper。静态 JavaScript 分析不需要原生分析引擎。
访问 REA 网站 获取安装说明、配图指南和真实案例研究。
快速入门
设置你的代理
安装好 Node.js 和 npm 后,运行:
npx rea-agents setup
选择你的代理,审阅提议的更改,并批准它们。安装程序会添加 REA 的 MCP 服务器和匹配的工作流指令,并备份现有 配置。完成后重启你的代理。
安装程序支持 Claude Code、Codex、Cursor、Gemini CLI、Grok Build 以及 其他代理。有关提供方配置和手动 MCP 注册,请参阅 安装与设置。
询问你的代理
Understand how search works in the Notes app, show me the evidence, and build a
similar feature for my project.
将 Notes 替换为你的目标应用以及你想要了解的功能。
使用终端
检查已解压的 JavaScript/Electron 应用目录或 ASAR:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
结果包含模块、导入、Electron 边界及其证据。
将路径替换为目标路径,例如 Windows 上的 "D:/apps/example"。
要安装 rea 命令以供常规使用:
npm install --global rea-agents rea --help
要进行原生分析,请先配置一个提供方。有关原生命令、提供方选择、快照和脚本编写,请参阅 CLI 与证据指南。
更新 REA
REA 变化很快,新版本通常包含频繁的错误修复。请保持你的安装为最新。
对于使用 npm install --global 或 bun add --global 安装的 CLI:
rea update
Bun 的全局更新需要 Bun 1.2.17 或更高版本。若 Bun 版本较旧,请在运行 rea update 之前手动升级 Bun。
若要刷新代理注册和技能,请运行更新所输出的安装命令。
如果使用 npx,请用以下命令更新你的代理设置:
npx rea-agents@latest setup
审阅安装更改并重启你的代理。对于一次性 CLI 命令,使用 npx rea-agents@latest 后接命令。使用 Bun 时,用 bunx rea-agents@latest 代替 npx rea-agents@latest。
REA 的工作原理
你的代理通过 MCP 调用 REA 来检查目标并追踪相关代码。REA 返回带有证据的发现。代理利用这些发现提出后续问题、解释行为,或编写并测试实现。CLI 命令使用相同的工作流。
你可以分析的内容
REA 要求 Node.js 22.x(>=22.19)、24.x(>=24.11)或 26+,以及 npm。额外的工具和宿主支持取决于目标:
| 目标 | REA 返回的内容 | 要求与指南 |
|---|---|---|
| 原生二进制文件 | 伪代码、汇编、字符串、符号、调用与引用 | Hopper、Ghidra 或 IDA;原生分析 |
| 离线 ELF 布局 | 节、段、原始符号/重定位以及静态缓解候选 | 调用方提供的 Linux x64 pwntools;二进制诊断 |
| Go 二进制文件 | 内嵌编译器版本、模块、替换与构建设置 | 内置静态 ELF/PE/thin Mach-O 检查;无需安装 Go |
| WASM 制品 | 验证、节、精确的导入/导出 WAT 形式以及解码后的 WAT | 调用方提供的 WABT 1.0.42;inspect_wasm_artifact |
| EVM 字节码 | Dispatch 选择器、字节偏移、推断参数与可变性 | Linux x64 上的本地原始/十六进制载体;离线 EVM 指南 |
| 录制的 Linux 崩溃 | 原始记录、每个录制线程的寄存器/信号及可选映射候选 | Linux x64 上调用方提供的 pwntools;可选 GDB/pwndbg;录制的崩溃 |
| JavaScript / Electron | 模块、导入、source map、路由、IPC 与原生插件关系 | Node.js 与 npm;应用程序分析 |
| 网站 | 页面结构、脚本、网络观察结果与请求的截图 | 一款 Chromium 内核浏览器;浏览器分析 |
| 已保存的网络抓包 | 请求、响应、暴露的载荷与源码位置 | HAR;Linux 上的 mitmdump 用于原生 mitmproxy 抓包;抓包指南 |
| .NET 程序集 | 元数据、CIL 指令、声明的原生依赖与构建对比 | 无(仅静态);托管代码指南 |
| Android APK | 清单声明、类、反编译方法与引用 | Linux/macOS/Windows x64 上的无头 JADX 与完整 JDK;Android 指南 |
| Android 设备 | 设备、包、进程、日志、转储、截屏以及 APK/文件传输 | 调用方提供的 adb(模拟器或硬件);ADB 指南 |
| JEB 工程 | 由引擎支撑的工程单元、制品摘要与类型/方法伪代码 | 由调用方启动并提供 MCP 服务的 JEB 客户端,通过 REA_JEB_MCP_URL 选择;JEB 指南 |
| Android 资源 | 解码后的清单、字符串表、区域设置与版本信息 | 调用方提供的 Apktool 启动器;资源指南 |
| Flutter 应用 | Dart 快照哈希、按 ABI 列出的库摘要与引擎构建来源 | 无(仅 APK 静态解析);Flutter 指南 |
| 固件 | 区域、提取结果与原生分析交接 | Linux 上的 Binwalk / Unblob;固件指南 |
| 包与资源 | 文件清单、摘要、plist 文件、Apple 包结构与提取的资源 | 制品与 JavaScript 指南、Apple 应用 |
| 进程行为 | 终端输出、交互、退出与文件系统观察结果,以及运行对比 | Linux/macOS 上的原生 PTY;进程捕获 |
静态 JavaScript 与 .NET 检查在不运行应用的情况下读取所提供的文件。运行时捕获使用你的用户权限运行所选目标或与之交互;每份运行时指南都会描述其作用。
原生格式与主机支持因提供商而异。请参阅
Hopper 与 Ghidra 设置、
IDA 指南,以及
实验性的 Windows Ghidra 支持。
Ghidra 还支持 16 位 DOS 分析。
对于较大的二进制文件,可通过
REA_GHIDRA_STARTUP_TIMEOUT_MS 或 REA_HOPPER_STARTUP_TIMEOUT_MS 提高提供商的启动超时时间。
有关提供商选择,请参阅 CLI 指南。
查看 发布可用性
以了解自最新 npm 版本以来新增的功能。
案例展示
DX-Ball:重构声音声道平衡计算
跟踪一次声音调用进入其位置转声道的辅助函数,检查指令, 并将不完整的伪代码转换为 C。该重构通过了 3,205 个原始 x86 用例,并复现了全部 63 个编译后的函数字节。
Notion:追踪 Electron 剪贴板桥接
找到渲染进程的剪贴板 API,沿着 preload 与 IPC 一路跟踪到 主进程,并检查富文本剪贴板格式。
TH04:恢复 DOS 子弹环形弹幕计算
检查原版 PC-98 游戏的 16 位指令,恢复固定角度和瞄准角度的计算,并将重建后的 C++ 与历史编译器输出进行比较。
如果你在某些有趣的项目上使用过 REA,我们很期待看到。请通过 issue 或 pull request 分享你的案例,包括目标、你提出的问题、REA 如何帮到你,以及你发现了什么。
FAQ
哪些代理可以使用 REA?
任何支持本地 MCP 服务器的代理都可以。安装程序会配置 支持的代理;其他客户端可以使用 手动 MCP 注册。
需要 Hopper、Ghidra 或 IDA 吗?
深度原生分析需要使用其中之一。静态 JavaScript 和 .NET 检查无需原生分析引擎即可工作。安装程序经批准后可安装 Hopper; Ghidra 和 IDA 会使用你现有的安装版本。参见 提供者设置。
需要先启动 Hopper 吗?
REA 在操作需要时会启动 Hopper。在 macOS 上,首次运行对话框可能会让你选择演示模式或激活许可证。请在首次进行 CLI/MCP 操作或无人值守任务之前,于同一用户会话中完成该提示。如有需要,可手动打开 Hopper。参见 Hopper 启动与故障排除。
从 skills.sh 安装该 skill 会有什么作用?
该 skill 为你的代理提供调查指令。使用 npx rea-agents setup
注册 REA 的 MCP 服务器并安装相应的指令,然后重启你的代理。参见 仅 skill 安装。
REA 返回什么样的代码?
原生分析返回伪代码和汇编。JavaScript/Electron 分析会恢复模块及其关系。你的代理基于这些发现来编写并测试实现;示例展示 提供了具体的范例。
REA 会上传我的应用吗?
REA 在本地对目标进行分析。你的代理接收工具结果,其模型提供者则另有自己的数据策略。
遇到 bug 该怎么办?
首先更新;最近的版本可能已经修复了该问题。
对于通过 npm install --global 或 bun add --global 安装的 CLI:
rea update
对于通过 npx 完成的代理设置:
npx rea-agents@latest setup
如果正在使用代理,请完成 设置刷新 后重启它。重试同一任务。如果问题仍然存在,请 提交 issue, 并附上你的 REA 版本、目标类型、复现步骤和错误输出。
文档
先从网站的 实战指南 入手。 若需了解具体选项、先决条件和结果契约:
- 安装与设置:代理注册、提供者配置、更新与卸载。
- 就绪检查与故障排除:诊断单个代理或分析引擎。
- CLI 与证据:命令、提供者选择、快照、导入/导出以及退出状态。
- MCP 契约 与 代理提示:工具结果、会话与引导式调查。
- 工具目录:自动生成的工具、提供者和 CLI 命令清单。
- 路线图:计划中的工作与能力跟踪。
通过 SECURITY.md 上报漏洞。
Star 历史
🎉 110,000 GitHub stars —— 感谢大家!
感谢每一位使用 REA、反馈 bug、提出功能请求、参与构建测试以及贡献修复的朋友。
免责声明
有关负责任使用的指导,请参阅 DISCLAIMER.md。
该项目对非法或未经授权使用的立场涵盖所有 REA 版本、分发渠道和平台;每个副本保留其适用的许可证。
REA 用于合法的研究、教育、互操作性、软件保护,以及对你拥有或有权检查的软件进行分析。
贡献
我们非常欢迎你为 REA 贡献力量!提交 issue 以报告 bug 或建议新功能,或 发送 pull request 来改进代码或文档。
有关开发环境与检查,请参阅 CONTRIBUTING.md;验证流程请参阅 测试;项目结构请参阅 架构图。
许可证
REA 编写的代码基于 MIT 协议授权。第三方材料保留其各自的许可证与版权声明;请参阅第三方声明以获取依赖项清单、保留的许可证文本以及外部工具条款。
您必须合法获取并获得授权方可使用商业工具,包括 IDA Pro / Hex-Rays 反编译器、Hopper 和 JEB,并应遵守其适用的许可证。REA 不授予任何工具许可证、密钥或激活权限。试用版与演示版仍受厂商条款约束,包括用户、功能、自动化及输出共享方面的限制。未经授权,不得使用破解副本、盗取的密钥、共享未经授权的密钥以及绕过许可证限制。本指引不修改 MIT 或第三方许可证。
来源:Hacker News · github.com
