如何把 REA 逆向分析快速接入你的 AI Agent
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
REA 是一个逆向工程的 MCP 服务器和 CLI,把 Hopper、Ghidra、IDA 等本地分析引擎接入 AI Agent,供想调查二进制、JavaScript 应用和 .NET 程序集的开发者使用。最大差异点:每个结论都附带可追溯的证据,没查到的部分被明确记为未知项,而不是被省略。
🎯 场景:复刻一个交互,要绕多少弯路
假设你在某个桌面 App 里看到一个不错的交互(比如官方案例里 Notion 的剪贴板桥接),想在自家产品里复刻类似效果。传统流程是:自己打开反汇编器,从字符串和符号里找入口,逐个函数追交叉引用,耗时且依赖经验,而且做完之后"结论"往往没有任何支撑材料可以给别人复核。
REA 的用法是:你只需用一句话描述目标,例如"研究 Notes 应用的搜索是怎么工作的,展示证据,并在我的项目里实现类似功能"。Agent 会依次完成打开目标、检索线索、追踪引用、反编译关键函数这些步骤,最后给出行为解释和可以写进你项目的实现参考。
官方的调查链路分三步走:先恢复可读产物(伪代码、汇编、字符串、符号),再追踪代码路径直到能解释目标行为,最后在你自己的代码里重建实现并做校验。同一套 MCP 工具和 CLI 命令都对应这条主线,所以你可以让 Agent 全程代劳,也可以在终端里手动复现其中某一步。
🚀 最小上手路径:三条命令先拿到结果
前置条件只有一个:Node.js(22.x ≥ 22.19、24.x ≥ 24.11 或 26+)加 npm。
第一步,注册 Agent。运行下面这条命令,它会交互式列出支持接入的 Agent(Claude Code、Codex、Cursor、Gemini CLI、Grok Build 等),先展示包含具体路径和文件变更的完整计划,你批准后才会写入,并自动备份现有配置:
npx rea-agents setup完成后按提示重启对应 Agent 即可。
第二步,体检环境。下面这条命令检查宿主前置条件、各 Agent 的注册状态、已安装的工作流和可选的分析引擎;它严格只读,不修改任何配置:
npx -y rea-agents@latest doctor只关心某一个引擎时可以加范围参数,例如rea doctor --provider ghidra --json。
第三步,零依赖验证。下面这条命令对一个已解包的 JavaScript/Electron 应用目录或 ASAR 做静态分析,返回模块图、导入关系、Electron 边界和对应的证据——不需要任何逆向引擎,也不需要运行目标应用。这是你能立刻拿到完整结果的一步:
npx -y rea-agents@latest analyze-javascript-application /绝对路径/到/app --json长期使用可以全局安装rea-agents获得rea命令;完整命令集、参数和退出码见 CLI 指南。
📦 覆盖范围速查:你的目标需要什么引擎
| 目标类型 | 分析深度 | 依赖 |
|---|---|---|
| 原生二进制(Mach-O / ELF / PE) | 伪代码、汇编、字符串、符号、调用与引用关系 | Hopper、Ghidra 或 IDA 之一 |
| JavaScript / Electron | 模块结构、导入关系、Source Map、IPC 通道、原生插件边界的静态映射 | 仅 Node.js 与 npm,无需逆向引擎 |
| .NET 程序集 | 元数据、CIL 指令、声明的原生依赖、构建版本对比 | 纯静态读取,不加载不执行 |
| Android APK | 清单声明、类检索、方法反编译 | 无头 JADX 加完整 JDK,无模拟器 |
| 网站 | 页面结构、脚本证据、网络元数据、按需截图 | Chrome 系浏览器 |
| 固件 | 区域检查与显式提取,并可交接给原生分析 | Binwalk / Unblob(Linux) |
完整清单还包括 Go 二进制、WASM 制品、EVM 字节码、已保存的网络抓包、Android 设备、Flutter 应用和进程行为观测等,各目标的具体宿主支持与前置条件在 安装文档 中逐项列出。
🏗️ 为什么这样设计
引擎可插拔。原生二进制的深度分析复用你机器上已有的 Hopper、Ghidra 或 IDA,setup 流程在你明确批准后还可以安装 Hopper;而 JavaScript 和 .NET 的静态分析完全不需要逆向引擎,直接读取你提供的文件。你的工具成本取决于目标类型,而不是被绑定在某一家反汇编器上。
工具契约按分析师任务统一。REA 的 MCP 工具按"动作 + 对象"命名(inspect、search、trace、compare、capture 这类任务形状),而不是包装某个引擎的内部 API。官方设计原则写明:公开名称和语义保持 provider 中立,每个引擎的实际覆盖范围单独报告。这就是 Agent 在 Ghidra 和 Hopper 之间切换时面对同一套语义的原因,具体规则见 工具设计文档。
通信走本地私有通道。REA 没有托管分析服务,各 provider 都在本地完成工件分析和行为捕获,与 Hopper、Ghidra 之间通过本地私有 socket 通信。官方 FAQ 对"REA 会不会上传我的 App"的回答是:分析在本地完成,目标文件不上传云端。
📎 证据机制:结论能被追问到什么程度
普通"让 AI 读代码"的方案输出一个自洽的答案;REA 输出的是一份证据记录。每条 Evidence 至少包含四层信息:观测事实(实际看到的指令、字符串、元数据、文件偏移)、工件与引擎身份(分析的是哪个文件的哪个版本、用哪个引擎的哪个版本)、置信度与限制(结论的可信程度和适用边界)、未知项(明确列出没查到的部分)。
其中最关键的原则是:缺失的证据算"未知",不算"空",也不算"否定"。官方契约原文是 missing coverage is unknown, not absence,未解析的引用边就保留为未解析边。重建校验只报告通过、失败、未知三种状态,"没验证到"永远不会被聚合记成"通过"。
落到使用体验上:当 Agent 给出一个逆向结论时,你可以追问"证据在哪",它真的能指给你看;不同函数、不同版本的证据记录遵循同一结构,可以直接交给对比工具做差异分析。完整定义见 MCP 契约。
⚖️ 边界与适用判断:什么人该选、谁不该选
官方声明的边界有四点,选型前值得逐条过一遍。
- 不承诺恢复原始源码。返回的是伪代码、汇编和模块关系,价值在于"结论如何得出"的过程可复核,把它当自动还原源码的工具会失望。
- 数据本地,但模型侧另有政策。目标文件不上传任何云端,不过 Agent 收到的工具结果会进入你使用的模型服务商,其数据政策需要单独评估。
- 运行时能力有真实副作用。静态分析只读文件;浏览器观察、进程捕获这类功能会以你的用户权限运行或交互目标,各自的运行时指南写明了影响范围。
- 失败显式报错,不静默降级。引擎不可用时按原始原因返回,你可以用
rea doctor诊断,而不会被悄悄换到另一个引擎给你一份"看起来能用"的结果。
适合你:一次性、隐私敏感的目标(未发布产品、内部工具、安全研究),手边已有 Hopper / Ghidra / IDA 之一,且希望把调查链路交给 Agent 并保留证据。不适合你:期待一键还原原始源码,或希望分析结果不经过任何模型服务商的场景。
命令全集与参数见 CLI 指南,Agent 注册、引擎配置与诊断范围见 安装文档;README 里的 Showcases 一节还有 Notion 剪贴板桥接追踪、DX-Ball 声像重建(通过 3,205 个原始 x86 用例)等完整案例,可以参考重建的深度和代价。
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考