ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

用 AI Agent 逆向工程任意二进制:REA 完整上手指南

用 AI Agent 逆向工程任意二进制:REA 完整上手指南

用 AI Agent 逆向工程任意二进制:REA 完整上手指南

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

REA(Reverse Engineer Anything)是一个让 AI Agent 直接驱动 Hopper、Ghidra、IDA Pro 做逆向工程的开源项目:你负责说需求,它负责拉起引擎、追引用、出反编译,替你省掉最耗时的环境配置与手工串工具。下文按 配环境 → 丢任务 → 验结论 → 收结果 四步展开。

环境一次就位:一条 setup 命令加一次只读体检

先说结论:无论你有没有装引擎、装的是哪款,一条命令就能把环境铺好,再配一次只读体检确认无遗漏。

npx rea-agents setup # 一次完成 Agent 集成与环境配置

它会做三件事:把 MCP(Model Context Protocol,模型调用工具的协议)配置写入你的 AI 编码助手、登记已有 Ghidra 的安装路径、按需安装 Hopper。方案会先展示给你确认,你不批准就不落盘。

npx -y rea-agents@latest doctor # 只读环境体检,无任何副作用

doctor逐项检查主机环境、引擎可用性和各 Agent 的注册状态,必要项失败时以退出码 1 收尾;加--provider可定向体检单个引擎。平台要求与安装细节见 docs/installation.md。

💡 REA 不替代你已装的 Hopper 或 Ghidra,它是连接与调度层。已有引擎就登记路径;一款都没有,也照样能走静态分析路线。

引擎选择规则只有一条:显式传入的--provider优先级最高;多款引擎同时可用时必须显式指定,否则直接报错——保证你随时说得清结论出自哪款引擎。怎么验证做对了:doctor无失败项,按 setup 提示重启对应 Agent,再让它随手分析一个文件试试。

把任务丢出去:一段大白话需求,链路自己跑完

集成完成后,逆向工程就是编码助手的技能,菜单和快捷键都不用记。用大白话提需求即可:

"把这个备忘录 App 的离线搜索是怎么实现的讲清楚,附上证据,再给我写一版能跑的。"

随后 Agent 会自己走完全链路,内置调查工作流定义在 .agents/skills/reverse-engineer-anything/SKILL.md:

  • 找入口:从可执行文件的结构与导入表定位起点
  • 搜字符串:定位 "offline search" 这类关键词
  • 追交叉引用:找出引用该字符串或函数的所有位置
  • 还原调用图,反编译关键函数,输出伪代码

上图是 REA 驱动 Hopper 会话分析一个 Mach-O 二进制的画面:右侧为文件信息面板,底部是反汇编进度日志——Agent 在上、引擎在下,是它典型的工作状态。

目标不是原生二进制时,同样有对应路线,且大多不依赖反汇编引擎:

  • JavaScript / Electron:静态梳理模块结构、导入、Source Map、IPC 通道
  • .NET 程序集:直接读元数据与 CIL 指令,无需引擎
  • Android APK:用无界面(headless)JADX 反编译后静态检查
  • 网站 / 浏览器:经 CDP(Chrome 调试协议)观察页面结构与请求并截图
  • 原生二进制:Hopper / Ghidra / IDA Pro 三选一做深度反编译

其中 JS 系目标一条命令就能出结果,用法与输出格式见 docs/cli.md:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json # JS / Electron 应用静态分析

怎么验证做对了:Agent 给出的每条结论都带来源标注(引擎、目标摘要),你随手追问某一条,它能指到对应的引用位置。

让结论站得住:证据链、前后对比与 unknown 机制

结论先说:REA 的每次分析都带一份 Evidence(证据链)——结论来源、引擎版本、目标摘要、置信度与局限——所以结论可追溯、可复核,而不是屏幕上"看着像"的反汇编视图。

由此能做三件事:

  1. rea compare对比两份证据,验证改动前后的行为差异;
  2. rea evidence-export/evidence-import把语义分析结果固化为文件,后续复用不必重新拉起引擎;
  3. 重建验证只报 pass / fail / unknown——证据缺失就如实标 unknown,绝不冒充通过。

契约的具体定义见 docs/mcp-contracts.md。

关于 unknown:它看起来像缺陷,其实是保险。证据不够时,一句诚实的"无法验证"比一句伪造的"通过"有价值得多。

怎么验证做对了:对同一目标改动前后各跑一次相同分析,用rea compare对比两份输出——行为差异与你的改动对得上,整条闭环才算成立。

收结果、收影响:结果可带走,卸载只清自己

分析结果是文件,不只是视图。证据导出后,结论与具体引擎解耦:日后从 Hopper 换到 IDA、或升级引擎版本,固化的分析成果依然有效。

卸载边界同样清晰:rea uninstall只移除 REA 自己的 Agent 注册项与技能文件,你安装的引擎和产出的证据不受影响。

分析全程运行在你的机器上,目标文件不经过任何托管分析服务。

怎么验证做对了:跑完卸载再执行一次doctor,REA 相关条目消失,而你的引擎目录与证据文件原样还在。

适合谁:想把"打开二进制 → 还原调用图 → 反编译"这条链路整体交给 Agent,并要求结论带可复核的证据链、数据留在本地的人——把它放在工具链入口即可。

不适合谁:只想开着窗口、用自己的眼睛盯着反汇编看的人。分工很明确:Hopper、Ghidra、IDA 是负责"看"的引擎,REA 是负责"驱动它们"的编排层,谁也不替代谁。

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进