REA:让 Agent 替你跑完逆向链路,不打开一个反汇编窗口
你手上只有二进制、没有源码,想看清楚一个功能到底怎么实现的,传统做法是打开 Hopper、Ghidra 或 IDA,在窗口里翻字符串、查交叉引用、读反编译——这一步没法交给 Agent 自动跑。REA 是本地运行的逆向分析编排层:它调度你已有的 Hopper、Ghidra、IDA 或 Kuna,把每条结论连同证据一起交还。适合想让编码 Agent 直接完成逆向调查、且要求结论可复核的开发者。
它替你跑完的那条链路
REA 是一个本地运行的逆向分析编排层:它把已有反汇编引擎和静态分析统一接给 Agent 和终端,替你跑完「定位→搜索→查引用→反编译→出证据」整条链路。
- 你告诉 Agent 一个目标 App 和想理解的功能。
- Agent 调用 REA 的 MCP 工具,定位目标、搜字符串、查交叉引用。
- REA 启动选定的引擎,拿到伪代码、指令和调用关系。
- 每条结论带上来源、引擎版本、局限说明,打包成 Evidence 返回。
- Agent 基于证据写实现、跑测试,再回查偏差。
仓库里的 DX-Ball 案例把一段「声音位置→声像」算法还原成 C,跑过 3,205 个原始 x86 测试用例,复现全部 63 字节编译函数。
三条红线
- 本身不含反汇编引擎,原生深度分析必须自备引擎
- 只支持 Node.js 22.x / 24.x / 26+,23、25 和预发布版不支持
- 不替你打开窗口,GUI 手工调试继续用 Hopper 或 IDA
- 目标是闭源应用时,授权问题是你自己的事
适合要挂进 Agent 工作流、要留证据的人;不适合只想在窗口里点选看反编译的人。
拆开看:引擎调度 / 证据链固化 / 静态通道
引擎调度
同一个二进制,Hopper、Ghidra、IDA 都可能支持,用哪个由你定。
REA 通过 provider 机制接引擎,显式 --provider 优先;只有一个引擎可用时自动选它,多个都可用时返回 ambiguous 错误并列出 candidate_ids,要求你点名,不做静默回退。选定的 provider 会绑定整个会话直到显式切换或关闭,出错时原样返回引擎的原始原因。
你拿到的是确定性命令:rea analyze <path> --provider ghidra --json,会话级引擎绑定,报错直接是引擎原始错误。CLI 与 Evidence 指南
证据链固化
每条结论不只是一段反编译,而是带来源、目标摘要、已知局限的记录。
每次分析都产出 Evidence;快照缓存里,目标字节、操作、参数、provider、设置五项全部相同时,CLI 在启动引擎进程之前就直接读缓存,不重跑分析。evidence-import 固化一次语义分析,evidence-export 导出规范形态,rea compare 直接对比两份 Evidence 文件。
验证只认 fail / unknown / unsupported / truncated / skipped 永远不算 pass,缺失证据不会被当作通过。reconstruction-readiness
静态通道
目标根本不是二进制时照样能跑,这是三条里启动成本最低的一条。
JavaScript / Electron 的静态分析直接读解包目录或 ASAR 文件,不运行目标;.NET 程序集只读元数据与 CIL 指令,不加载、不执行。这条通道不需要任何原生分析引擎。
一条命令返回模块、导入、Electron 边界、IPC 通道和完整 Evidence:rea analyze-javascript-application /abs/path/to/app --json。JavaScript 应用工作流
和传统方式的差异
操作者:从"人在 GUI 窗口里手工点选"到"Agent 或终端脚本发起,人只在批准计划时介入"。
结论形态:从"截图或口头描述"到"带来源与局限的 Evidence 记录,可 rea compare 对比"。
目标范围:从"仅原生二进制"到"二进制、JS/Electron、.NET、APK、网站等 15 类目标"。
GUI 依赖:从"必须打开窗口"到"分析本地运行,窗口可有可无"。
授权边界:从"工具自己带引擎"到"引擎自备、授权自清",注意:你只是偶尔手工看一个函数时,两条路径差异不大。
从零到第一条结论
装 REA、注册 Agent,setup 会列出打算改哪些 Agent 配置、装哪个 MCP 注册,你批准后才执行。
npx rea-agents setup
不碰引擎的静态分析一条命令,直接拿 Evidence。
npx -y rea-agents@latest analyze-javascript-application /abs/path/to/app --json
原生目标先配 provider,然后对 Agent 提需求即可;环境异常先看 rea doctor。🩺
rea doctor
rea doctor --provider ghidra --json 可以只查单个引擎,只读审计主机依赖、Agent 注册与引擎状态,不做任何修改。
该不该用
选它的信号
→ 调查要挂进 Agent 工作流、要留证据 → 目标不止原生二进制,还涉及 JS/Electron/APK → 结论要能复述证据,rea compare 得能过
别硬套的场景
→ 只在窗口里手工点选看反编译 → 目标格式不在支持矩阵里 → 商用引擎授权自己没兜住
按你的调查形态选,别为了工具而工具。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




