REA 逆向工程指南:从二进制到能构建的代码
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
REA 是一款开源 AI 逆向工程工具(npm 包名rea-agents,当前版本 6.7.0),它把你的 Agent 接到本地分析引擎上,让你在没有源码的情况下检查原生二进制、JavaScript/Electron 应用和 .NET 程序集,且每个结论都附带证据。这篇指南带你在 15 分钟内把它跑起来,并学会怎么向它提问。
逆向总是半途而废:三个常见痛点
大多数人在逆向中卡住,原因不在工具,而在流程:
- 看得懂,复现不了:反汇编工具给出一屏屏指令,你追着一个函数走了十分钟,上下文散了,结论记不住;
- 没人核对你的结论:让 AI"讲讲这个功能",它给出的解释里观察和猜测混在一起,你分不清哪句可信;
- 引擎太重:Hopper、Ghidra、IDA 各有工作流,想让 Agent 替你操作它们,还得先解决"Agent 怎么调引擎"的问题。
针对这三点,本文反复用一句话:收据原则——结论要配收据。REA 的每次分析结果都带一条Evidence(证据记录)和 ID,就像购物小票:没有收据,就不算数。
收据原则:Agent、MCP 与引擎的分工
REA 的架构像一家"前台":你的 Agent 只提需求,前台查单子、调柜台,把结果连同小票一起递回来。落到项目里就是三方分工:
- Agent:通过MCP(Model Context Protocol)调用 REA 的工具,追问、解释、写代码、测试;
- REA:MCP server + CLI,负责选择分析路径、管理会话,并给每个结果附上 Evidence ID;
- 分析引擎:原生二进制走 Hopper、Ghidra 或 IDA;静态 JavaScript/Electron 与 .NET 分析不需要任何引擎。
REA 还内置了 6 个引导式调查工作流:investigate_feature、compare_application_versions、verify_reconstruction、trace_crash、audit_residual_unknowns、prepare_bounded_process_capture(见 docs/mcp-prompts.md)。这些工作流都要求 Agent 把"观察、推断、未知"分开陈述——这正是收据原则的制度化版本。环境门槛不高:Node.js 22.x(>=22.19)、24.x(>=24.11)或 26+,加 npm 即可。
上手场景一:分析 Electron 应用,零引擎
这条路线完全静态,读文件、不运行目标应用,适合"我想知道这个应用内部怎么组织"。
npx rea-agents setup按提示勾选你的 Agent(Claude Code、Codex、Cursor、Gemini CLI、Grok Build 等),审阅并批准配置改动,然后重启 Agent。完整支持列表与手动注册方式见 docs/installation.md。
不想接 Agent 也可以直接用命令行,对一个已解包的 Electron 目录或.asar做静态分析:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json结果包含模块、导入、Electron 边界、IPC 与原生插件关系,每条都带 Evidence。真实应用的结果可能有数百 MB(docs/cli.md 给了 Obsidian 的例子:约 334 MB 的 Evidence),所以先看摘要:
jq -c '{source: {kind: "inline", evidence: .}, view: {kind: "summary"}}' app-evidence.json接上 Agent 后,用这样的提示词就能得到一份可核对的报告(注意最后半句,这是收据原则的用法):
分析这个 Electron 应用的模块和 IPC 边界, 每个结论附上 Evidence ID,无法确认的项标成 Unknown。上手场景二:把未知二进制交给 Agent
原生分析需要先选引擎。各家定位不同,先看这张表再装东西:
| 选择 | 适合什么 | 备注 |
|---|---|---|
| 不装引擎 | JavaScript/Electron、.NET 静态分析 | 只要 Node.js,上文场景一 |
| Ghidra | 免费开源的通用方案 | 用你已有安装,另支持 16 位 DOS |
| Hopper | 原生二进制深度分析 | setup 可在批准后安装 Hopper |
| IDA | 专业反编译工作流 | 用你已有安装 |
| objdump / Rizin | 轻量离线检查 | 需你自行提供工具,REA 不代装 |
引擎就绪后,提示词保持"要函数级证据 + 列覆盖缺口"的写法:
追踪这个二进制的启动流程,给我入口函数和前三个调用, 每个结论附 Evidence ID,并列出伪代码没覆盖到的部分。CLI 的 provider 选择、快照与退出码说明都在 docs/cli.md。
选型建议:REA 适合谁,不适合谁
适合你,如果:
- 你手里有一个具体目标(一个 APK、一个二进制、一个 Electron 目录),要的是可追溯的分析结论,而不是一次性的"大概看看";
- 你已经在用支持本地 MCP server 的 Agent,希望它替你完成"打开引擎 → 定位 → 取证"的体力活。
不适合你,如果:
- 你期望直接得到一份反编译源码包——REA 返回的是伪代码、汇编和证据记录,实现代码要靠 Agent 基于这些证据写出来;
- 目标无法在本地运行,而你需要的是运行时行为——部分进程捕获、浏览器观察类工作流需要真实的目标环境。
另外记住边界:REA 面向你拥有或有权分析的软件,用于合法研究、教育与互操作(见 README.md 中的 Disclaimer 一节)。
开始前的四个避坑点
- 别把大 Evidence 直接喂给模型。先
jq投影出 summary 或单个模块页,Agent 读摘要再追问细节,效果和速度都更好。 - 分清静态和运行时。静态 JavaScript/.NET 分析只读文件、不运行目标;进程捕获、浏览器观察是另一套工作流,会真实运行目标,用前先看对应文档说明的影响范围。
- 商业引擎的许可证自己负责。REA 不提供 Hopper、IDA、JEB 的授权,setup 安装 Hopper 也需你明确批准。
- 排障先升级。REA 迭代很快,遇到怪问题先跑
rea update再报 bug。
收据原则值得再复述一遍:
结论要配收据:每个断言后面跟一个 Evidence ID,查不到就写 Unknown。 逆向的终点不是"看懂了",而是代码落进你的项目、且每一步都能回查。
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考