☰
REA Agent六步工作流:从open_binary到procedure_pseudo_code完整指南
2026/10/9 3:25:46 网站建设 项目流程

REA Agent六步工作流:从open_binary到procedure_pseudo_code完整指南

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

REA是一款让 AI 智能体完成逆向工程的开源工具:通过 MCP 连接 Hopper 或 Ghidra,Agent 可以打开任意原生二进制文件,搜索字符串、追踪调用、反编译伪代码,最终把别人的功能"看懂"并为你实现。本文带你走一遍它的六步核心工作流。

为什么需要六步工作流 🔍

拿到一个没有源码的.app或可执行文件,传统逆向要手动完成:加载目标 → 找线索 → 追引用 → 看调用图 → 反编译。REA 把这条链路拆成了 Agent 可以自动执行的 MCP 工具链,每个工具都有明确的输入输出契约(定义在 officialToolContracts.ts)。

一条提示词就能跑完整流程:

逆向工程"备忘录"应用,找到离线搜索功能的工作方式,解释其控制流,并为我的项目构建一个版本。

六步流程一览 🧭

步骤目标核心工具
1️⃣打开并识别二进制open_binary、binary_overview
2️⃣搜索功能线索search_strings、search_procedures、list_names
3️⃣把线索连到代码find_xrefs_to_name、xrefs、procedure_callers
4️⃣重建控制流get_call_graph、procedure_callees、procedure_info
5️⃣反编译关键函数procedure_pseudo_code、procedure_assembly、batch_decompile
6️⃣在你项目里实现你的技术栈 + 常规编码工具

前 5 步由 REA 负责,第 6 步交给你的编程智能体完成——这是"从洞察到代码"的关键闭环。

步骤一:open_binary 打开目标

open_binary是整个工作流的起点:它把本地路径(macOS 上甚至可以直接是.app文件夹)绑定为当前会话的分析目标,并选择 Hopper 或 Ghidra 作为分析引擎。

  • 后续所有原生分析工具都基于这个"活动目标"工作,无需重复传路径
  • 会话状态保存在 BinarySession.ts 中,支持连续调查多个应用而不重新分析
  • 如果工具不可用,binary_session会返回tool_availability说明原因和修复建议

步骤二:binary_overview 与线索搜索 📋

binary_overview返回目标元数据、架构、段与符号清单,帮你判断"这是不是一个值得深挖的二进制"。

接着用三个搜索工具定位功能线索:

  • search_strings:在所有已分析字符串中做字面量或正则匹配——"离线"、"search"这类 UI 文案往往是最快的入口
  • search_procedures:在所有函数名中搜索,直接命中疑似实现
  • list_names:列出全部符号,人工扫一遍命名

搜索结果都附带文件偏移证据,后续引用时可以直接指向具体位置。

步骤三:交叉引用把线索钉到代码 📌

字符串和名字只是"线索",xrefs(交叉引用)负责把线索连到真正的可执行代码:

search_strings("offline search") → 命中地址 → xrefs → 使用它的函数

procedure_callers则回答"谁调用了这个函数"。这一步之后,你手上就有了一个明确的入口函数,而不是几百条候选。

步骤四:重建控制流 🕸️

拿到入口函数后,沿调用关系展开:

  • get_call_graph:生成函数级调用图,看到整个子系统的骨架
  • procedure_callees/procedure_callers:逐层展开被调用者/调用者
  • procedure_info:返回入口地址、签名、局部变量、体大小等元数据

调用图让你先"看地图",再决定深挖哪条分支——这正是 Agent 相比人类逆向更快的原因:它不会迷路,也不需要休息。

步骤五:procedure_pseudo_code 反编译 💻

procedure_pseudo_code按符号名或地址反编译单个函数,返回供应商特定的伪代码(C 风格)。注意两点:

  • 伪代码不是原始源码,不同引擎的输出也不保证等价(契约见 toolContractExamples.ts)
  • 当需要指令级精度(调用约定、寄存器细节)时,改用procedure_assembly

对一批相关函数,batch_decompile可以批量反编译,一次性拿到整个子系统的伪代码视图。至此,智能体已经具备了"解释这个功能如何工作"的全部证据。

步骤六:把学到的变成你的功能 🚀

第 6 步离开 REA 的地盘:智能体用常规的文件编辑和测试工具,在你的技术栈里实现同等行为。因为前五步沉淀的证据(调用图、伪代码、字符串)都带 ID,Agent 可以边写边引用,把"观察到的行为"和"你的设计选择"分开。

完整调查方法论(问题清单、证据账本、结论与未知项分离)写在技能文件 SKILL.md 里,安装 skill 后智能体会自动遵循。

快速上手 🚀

# 一条命令配置智能体连接(支持 Claude Code、Cursor、Codex 等) npx rea-agents setup # 或者不进智能体,终端直接分析一个应用 npx rea-agents analyze /Applications/Notes.app

详细安装与引擎要求见 installation.md;MCP 工具契约与输入输出定义见 mcp-contracts.md 和 product-catalog.json。

小结

REA 的六步工作流把逆向工程从"手工作坊"变成了"可自动化的流水线":open_binary定目标 → 搜索找线索 → xrefs 钉代码 → 调用图看结构 → 伪代码读实现 → 最后为你重建功能。每一步都有明确工具、明确证据边界,结果还附带限制说明和未知项,这也是它比"让 AI 猜"更可靠的地方。

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询