如何用 REA(rea-agents)通过 MCP 让 AI Agent 完成二进制逆向分析:完整配置与证据验证指南
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
在别人的应用里看到一个想要的功能、却没有源码可看,是逆向工程里最常见的起点。REA(npm 包名rea-agents)是一个面向这个问题的 MCP 服务:它在本地对二进制、JavaScript/Electron 应用、.NET 程序集与网站做逆向分析,并把每条结论连同证据与限制一起返回给 AI Agent。终端里的 CLI 与 Agent 调用的 MCP 走同一套工作流和证据契约,因此你可以用自然语言下达调查指令,也可以用脚本化命令独立复核结果。
问题场景:调查闭源功能时的两个痛点
手动调查一个闭源功能,通常意味着在反汇编器、反编译器与调试器之间来回切换,逐条读指令,而且得到的结论很难向他人复现。REA 对此给出两个贯穿始终的承诺:其一,分析在本地运行,目标文件不会被上传(你的 Agent 模型提供商另有自己的数据政策);其二,每个结论都附带证据与限制说明,未确认的部分会作为未知项一并列出。
⚡ 三步跑起来:从注册 Agent 到终端验证
一条命令注册 Agent:npx rea-agents setup完整流程
在装有 Node.js 与 npm 的机器上执行:
npx rea-agents setup交互流程是:选择要配置的 Agent → 审阅拟议的变更 → 批准。Setup 会为选中的客户端写入 REA 的 MCP 服务器注册与配套工作流指令(skill),并在动手前备份现有配置,完成后重启 Agent 即可。它对配置修改采取"先备份、后写入、再校验"的保守事务:配置路径不安全(如符号链接未解析到当前用户拥有的普通文件)、备份失败、写入失败、写后校验失败这四种情形各自给出可操作的诊断;任何一步失败都会向用户暴露完整原因,而不是留下半成品的注册,必要时可恢复.rea.backup后重跑 setup(见 src/application/SetupClients.ts)。
运行时要求为 Node.js 22.x(>=22.19)、24.x(>=24.11)或 26+ 以及 npm;23、25 与预发布版本不受支持,且 REA 从不升级 Node.js、npm 或 Homebrew。支持的客户端与--client值(节选,完整清单见 安装指南 的 supported-agents 一节):
| 客户端 | --client值 | 客户端 | --client值 |
|---|---|---|---|
| Claude Code | claude_code | Gemini CLI | gemini_cli |
| Claude Desktop | claude_desktop | Windsurf | windsurf |
| Codex | codex | Devin | devin |
| Cursor | cursor | OpenCode | opencode |
| Antigravity | antigravity | GitHub Copilot CLI | copilot_cli |
| Command Code | commandcode | Qwen Code | qwen_code |
| VS Code | vscode | Grok Build | grok_build |
清单中还包括omp、pi、hermes、qoder、trae、zcode与dsh(DeepSeek Harness,在 6.4.0 之后的某个发布进入 npm 前仅 main 可用)。任何支持本地 MCP 服务器的 Agent 都能接入:表内客户端一键配置,表外客户端按安装指南的 mcp-registry 一节手动注册。
版本钉住值得注意:持久 MCP 注册钉在真正执行 setup 的版本上,之后运行新版 setup 才会在审阅过的 setup 事务中迁移旧注册;npm 询问"是否下载并运行"的批准只覆盖包本身,不覆盖 REA 后续对 Agent 配置或 Hopper 的安装。
一句话发起调查:典型自然语言指令
Understand how search works in the Notes app, show me the evidence, and build a similar feature for my project.把 Notes 换成你的目标应用与功能即可。回路是:Agent 经 MCP 调用 REA 检查目标并追踪相关代码,REA 返回带证据的发现,Agent 据此追问、解释行为,或编写并测试一个实现。
终端里验证结果:脚本化分析与--json输出
检查一个已解包的 JavaScript/Electron 应用目录或 ASAR:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json返回模块、导入关系、Electron 边界及其完整 Evidence 记录,静态分析不需要任何逆向引擎;Windows 上把路径替换为"D:/apps/example"之类。安装rea命令供日常使用:
npm install --global rea-agents rea --help原生二进制分析需要先配置分析引擎(provider):
rea analyze /absolute/path/to/program --provider ghidra --json rea search /absolute/path/to/program "search" --provider ghidra --json rea decompile /absolute/path/to/program 0x1000 --provider ghidra --jsonanalyze/inspect共用原生概览工作流,function返回函数档案(dossier),只看汇编指令用rea instructions;macOS 的.app包可直接作为目标。保持更新用rea update(npx 用户重跑npx rea-agents@latest setup以刷新注册与 skill),一次性命令统一用npx rea-agents@latest <command>。
目标清单:REA 能分析什么
各目标类型、返回内容与前置要求(基于当前 README 矩阵重构,指南均为仓库内文档):
| 分析对象 | REA 返回 | 前置要求与指南 |
|---|---|---|
| 原生二进制 | 伪代码、汇编、字符串、符号、调用与引用 | Hopper、Ghidra 或 IDA;原生分析 |
| JavaScript / Electron | 模块、导入、source map、路由、IPC 与原生插件关系 | Node.js 与 npm;无需逆向引擎 |
| .NET 程序集 | 元数据、CIL 指令、声明的原生依赖与构建比较 | 无,纯静态检查;托管代码 |
| 网站 | 页面结构、脚本、网络观察与截图 | Chrome 系浏览器;浏览器观察 |
| 离线 ELF 布局 / 记录的 Linux 崩溃 | 段节、原始符号与重定位、缓解候选;各线程寄存器与信号 | Linux x64 调用方自备 pwntools,可选 GDB/pwndbg;二进制诊断、记录崩溃 |
| EVM 字节码 | 分发选择器、字节偏移、推断参数与可变性 | Linux x64 本地 raw/hex 载体;EVM 指南 |
| Android APK / 设备 / 资源 | Manifest 声明、类、反编译方法与引用;设备日志、屏幕与文件传输;解码资源表 | 无头 JADX + 完整 JDK;调用方 adb;Apktool;Android、ADB、资源 |
| Go 二进制 / WASM / Flutter | 编译器版本、模块与构建设置;WAT 校验与精确导入导出形式;Dart 快照与引擎指纹 | 内置静态检查 / 调用方 WABT 1.0.42 / 静态 APK 解析 |
| 固件 | 区域、解包结果与原生分析交接 | Linux 上 Binwalk / Unblob;固件指南 |
| 包与资源 | 文件清单、摘要、plist、Apple bundle 解剖与解出资源 | JavaScript 工件、Apple 应用 |
| 进程行为 | 终端输出、交互、退出、文件系统观察与运行比较 | Linux/macOS 且需原生 PTY;进程捕获 |
| 已保存网络抓包 | 请求、响应、暴露载荷与来源位置 | HAR 格式;Linux 下原生 mitmproxy 抓包需 mitmdump;抓包指南 |
Provider 选择规则:rea providers --json与rea capabilities --json列出可用引擎及能力;自动选择仅在唯一可用 provider 支持目标时生效,多个候选必须显式--provider。环境变量REA_ANALYSIS_PROVIDER是常设偏好,显式--provider覆盖它;MCP 侧则给open_binary传provider_id。选中的 provider 绑定会话,直到显式切换或关闭;ambiguous错误可从details.candidate_ids里挑选,provider_unavailable时运行rea doctor --provider ID --json诊断该引擎。
安全边界:静态 JavaScript 与 .NET 检查只读取给定文件、不运行应用;而运行时捕获会以你的用户权限运行或交互选中目标,每条运行时指南都写明其副作用。
结论为何可信:证据链的三段设计
入口同源。scripts/rea.mjs 是唯一入口,参数为mcp时路由到 MCP 工具服务,其余走 CLI;两侧复用 src/application 下的应用服务(setup、快照、诊断),终端与 Agent 拿到的是同一工作流下的结果。
证据契约。src/domain/evidence.ts 定义 Evidence 记录保留工件标识、来源位置、观察、推断与未决发现;错误响应同样受 error-contract.schema.json 约束。CLI 提供evidence-import校验、evidence-export导出规范形式与两 bundle 比较。
快照复用。快照仅在目标字节、操作、参数、provider 与设置完全匹配时复用同一结果,文件本地保存且仅限属主权限;CLI 缓存命中发生在启动 provider 进程之前,MCP 侧open_binary接受snapshot_path原子导入,close_binary带overwrite: true可先保存再释放资源(详见 CLI 指南)。
三个实战案例:从伪代码到可复现实现
- DX-Ball(声像重建):跟随一次声音调用进入"位置→声像"辅助函数,把不完整的伪代码补成 C,重建通过 3,205 个 original-x86 用例并复现全部 63 个编译后的函数字节。
- Notion(Electron 剪贴板桥):定位渲染进程的剪贴板 API,经 preload 与 IPC 追进主进程,检查富剪贴板格式。
- TH04(DOS 弹幕计算):检查 PC-98 原作的 16 位指令,恢复固定与瞄准角计算,并把重建的 C++ 与历史编译器输出对比。
这些结论不是孤证:仓库内提供真实引擎全链路验证脚本(如 scripts/verify-real-hopper.mjs)与 tests/boundary 下的 483 个边界测试文件,案例过程可由脚本复验。
❓ 常见疑问
哪些 Agent 能用 REA?任何支持本地 MCP 服务器的 Agent。支持清单内的客户端一键配置,其余走手动 MCP 注册。
必须有 Hopper、Ghidra 或 IDA 吗?只有深度原生分析需要三者之一;静态 JavaScript 与 .NET 检查不需要逆向引擎。Setup 可在批准后代装 Hopper,Ghidra 与 IDA 使用你已有的安装。
需要预先启动 Hopper 吗?不需要,REA 在操作需要时自行启动。macOS 首跑可能弹出选择演示模式或激活授权的对话框,需在相同用户会话内完成。
只从 skills.sh 安装 skill 会怎样?它只提供调查指令。完整路径是npx rea-agents setup注册 MCP 服务器并安装配套指令,然后重启 Agent。
REA 会上传我的应用吗?不会。分析在本地进行,模型提供商有各自的数据政策。
遇到 bug 怎么办?先更新(rea update或npx rea-agents@latest setup),重启 Agent 重试;仍复现则附 REA 版本、目标类型、复现步骤与错误输出提 issue。
下一步:文档入口与版本边界
深入阅读路径:安装与设置(Agent 注册、provider 配置、更新与卸载)、CLI 与 Evidence(命令、provider 选择、快照、导入导出与退出状态)、MCP 契约 与 Agent 提示(工具结果、会话与引导式调查)、路线图;漏洞按 SECURITY.md 报告。
版本边界:仓库 main 分支描述当前代码与其生成的工具目录,@latest选的是 npm 发布版,可用npm view rea-agents dist-tags.latest核对;功能判断以已连接服务器的实际工具列表与声明的输入 schema 为准。当前仓库版本为 6.4.0(截至 5.0.0 发布时,工具目录为 133 个 MCP 工具)。
源码分层可对照理解:src/hopper/、src/ghidra/、src/ida/是三个原生引擎适配层,src/browser/是 CDP/Playwright 浏览器观察层,src/application/为 CLI 与 MCP 共享的应用服务,src/contracts/集中定义工具输入输出契约。
REA 面向合法的逆向工程研究、教育与软件分析使用;获取必要授权并遵守适用法律法规由使用者负责,项目不认可任何非法或未授权的用途。
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考