Auto RE Agent
利用 Ghidra 证据与 LLM 重建并验证二进制中的 C/C++ 函数。
按维度查看评分与理由
证据显示:工具明确不自动修改原始源码树,候选代码写入overlay,隔离验证在临时副本中运行,且需要显式设置trust_configured_commands才信任项目拥有的shell命令。这体现了最小权限和用户确认。数据流透明性:文档描述了证据收集、候选生成、验证和报告流程,但未提供详细的内部数据流图。敏感数据处理:涉及API密钥,但文档建议使用环境变量,未发现硬编码密钥。依赖安全:依赖项包括anthropic和openai,但未提供版本锁定或漏洞扫描证据。外部影响:工具执行配置的构建/测试命令,但明确警告这些命令应受项目所有者控制。回滚:会话文件原子重写,但未提供明确的回滚机制。来源归属:未验证发布者身份,但文档和代码中明确归属Dryxio。扣分原因:依赖安全证据不足,回滚机制不明确,发布者未验证。
证据显示:文档和配置示例一致,CLI命令和配置选项描述清晰。依赖可用性:依赖项在PyPI上可用,但未提供锁定版本。失败消息:文档提到错误处理,但未提供具体失败消息示例。扣分原因:依赖版本未锁定,失败消息细节不足。
证据显示:面向逆向工程师和开发者,提供了多种使用场景(单函数、类批量、parity分析)。能力边界:明确说明不能证明语义等价,需要Ghidra和LLM。触发精度:CLI命令和配置选项明确。环境适配:支持多种LLM提供商和操作系统,但需要Ghidra和bridge。扣分原因:环境依赖较多,但文档提供了安装指南。
证据显示:README结构清晰,包含安装、快速开始、CLI参考、FAQ等。安装说明详细。命名稳定:命令和配置项命名一致。示例和FAQ:提供了配置示例和FAQ。已知限制:文档列出安全性和局限性。许可证:MIT。版本和变更日志:pyproject.toml有版本号,但未提供CHANGELOG。维护责任:发布者未验证,但GitHub Actions显示持续集成。扣分原因:缺少CHANGELOG,维护责任不明确。
证据显示:输出包括生成的代码、日志、知识图谱,格式明确。边际价值:自动化逆向工程流程,节省人工。成本效益:文档提到成本控制(bounded rounds),但未提供实际成本数据。扣分原因:成本效益缺乏量化数据。
证据显示:README中的声明与代码和配置示例一致。交叉来源:文档提到YouTube演示,但未提供其他独立验证。事实与推断分离:文档明确区分保守验证和形式证明。扣分原因:交叉来源证据不足。
- 发布者身份未验证,需谨慎对待。
- 依赖版本未锁定,存在供应链风险。
- 配置的构建/测试命令可能执行任意shell命令,必须由项目所有者控制。
- 工具不能证明语义等价,仅提供保守验证。
这个 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 infoClaude 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 自动流程,而不是由分析师逐步驱动对话。