Auto RE Agent
利用 Ghidra 证据与 LLM 重建并验证二进制中的 C/C++ 函数。
这个 Agent 能做什么,适合哪些场景?
Auto RE Agent 是一个面向已编译二进制的开源 C/C++ 函数重建工具。它通过 ghidra-ai-bridge 获取 Ghidra 的反编译、交叉引用、类型、控制流和汇编等证据,并由 reverser 与 checker 两个角色进行有界循环审查。生成结果不会直接修改原始源码树,而是写入报告目录和候选覆盖层;可选验证会在项目临时副本中执行配置的构建、测试和运行命令。其命令行提供 init、reverse、parity、status 和 estimate 等工作流,支持 Claude API、Claude CLI、OpenAI 兼容 API 与 Codex CLI。它提供的是保守的验证证据,而不是生成代码与二进制语义等价的形式化证明。
运行 re-agent reverse --address ADDR 或 re-agent reverse --class CLASS 后,工具按配置选择函数,并从 ghidra-ai-bridge 读取 decompile、xrefs_from、xrefs_to、struct、enum、vtable、global、strings、context、normalized pcode 和 cfg 等可用证据。reverser 生成候选 C/C++ 实现,checker 审查结果,流程可在限定轮数内继续修复和调查。每轮会运行结构验证器,将候选与反编译、汇编、CFG 和规范化高层 P-code 对比;随后运行 11 项内置 parity 信号。候选代码会写入 reports/re-agent/code/ 和候选 overlay;若启用 validation,工具会复制项目、替换匹配的函数体,并执行配置的 build_commands、test_commands 和 runtime 命令。报告还包括逐轮日志、re-agent-progress.json 和 reports/re-agent/knowledge-graph.json。
- 维护遗留 C++ 项目的逆向工程师,需要根据 Ghidra 导出的二进制证据恢复一个指定地址的函数实现。
- 正在处理大型类恢复任务的团队,希望用 re-agent reverse --class CTrain --max-functions 10 按依赖顺序运行受限批次。
- 拥有可构建和可测试源码树的项目维护者,希望在临时项目副本中验证候选实现,而不覆盖原始源码。
- 需要审查现有恢复源码的分析人员,可使用 re-agent parity --filter REGEX 或 --skip-ghidra 检查 parity 信号。
- 需要保留函数级历史、提示词响应和证据关联的逆向项目,可利用 session 文件、逐轮日志和知识图谱输出。
这个 Agent 有哪些优点和局限?
- 将 Ghidra 反编译、交叉引用、类型、控制流、汇编与规范化 P-code 组合为可供模型使用的证据包,而非仅依赖单段伪代码。
- reverser、checker、结构验证、构建测试门禁与 parity 信号构成多层且有界的候选审查流程。
- 候选实现写入 overlay;启用 copy_project 后会在临时项目副本中验证,避免自动覆盖原始源码树。
- 支持 Claude API、Claude CLI、OpenAI 兼容 API 和 Codex CLI,且 reverser 与 checker 可分别配置提供方或模型。
- 完整的二进制驱动流程依赖本地 Ghidra、ghidra-ai-bridge 及正确的项目和导出配置。
- 验证命令是项目自有的任意 shell 命令;工具无法从命令文本证明其真正验证了候选,必须显式信任 trust_configured_commands。
- 结构检查和 parity 信号不是语义或二进制等价的形式化证明,证据不足时验证器会返回 UNKNOWN。
- 实际成本和运行时长取决于模型、证据量和目标复杂度,且需在配置中控制审查轮次、调查次数和每函数尝试次数。
如何安装或部署这个 Agent?
需要 Python 3.10+、Git、Ghidra、已配置的 ghidra-ai-bridge,以及至少一种 LLM 配置。安装:
python3 -m pip install --upgrade "auto-re-agent[ghidra-bridge]>=0.2.0"
如需无头 Ghidra 导出:
python3 -m pip install --upgrade "auto-re-agent[headless]>=0.2.0"
在目标项目中执行:
ghidra-bridge init
ghidra-bridge export all
ghidra-bridge info
Claude API 需设置 ANTHROPIC_API_KEY 或 RE_AGENT_LLM_API_KEY;OpenAI 兼容 API 需设置 OPENAI_API_KEY 或 RE_AGENT_LLM_API_KEY;Claude CLI 和 Codex CLI 需先完成本地命令认证。
如何使用这个 Agent?
先在目标项目执行 re-agent init --profile generic-cpp,然后编辑 re-agent.yaml,至少配置 llm、backend.cli_path、source_root 和 validation。示例可使用 llm.provider: codex、llm.model: gpt-5.4,以及 backend.type: ghidra-bridge、backend.cli_path: ghidra-bridge。配置完成后,先运行 re-agent reverse --address 0x401000;批量恢复可运行 re-agent reverse --class CTrain --max-functions 10,并用 re-agent status 查看进度。若启用严格验证,应配置 build_commands、test_commands、require_build、require_tests、require_verified,并在确认命令由项目所有者控制后设置 trust_configured_commands: true。
这个 Agent 与同类方案有什么区别?
与传统反编译器相比,Ghidra 仍负责反汇编、反编译和程序分析,Auto RE Agent 负责组织证据、生成候选实现、审查、验证与报告。与交互式 Ghidra AI 或 MCP 助手相比,它采用持久化报告和受限的 reverser/checker 自动流程,而不是由分析师逐步驱动对话。