ReAgent 中文教程:先把执行权限锁住
auto-re-agent 已更名为 ReAgent,旧地址会跳转到 Dryxio/reagent。它把 Ghidra 提取的函数信息交给模型生成候选 C/C++,再用检查器和项目命令收集证据。它面对的是可执行文件和项目脚本,第一次验证应限定在自己拥有或明确获准分析的样本。
1. 准备隔离样本
选一个体积小、有源码、许可清楚的自有 C/C++ 示例。复制到临时目录,去掉生产凭据和网络权限。保留原始二进制与构建结果,后面才能核对候选实现。
2. 固定版本并只做环境检查
python3 -m venv .venv source .venv/bin/activate python3 -m pip install --upgrade "auto-re-agent[ghidra-bridge]==0.4.0" re-agent doctor
源码安装还需要 Git。模型可选 Claude、Codex CLI 或 OpenAI 兼容接口,凭据放在隔离环境的密钥管理中,不要写入仓库。
3. 初始化后逐行审阅配置
re-agent init --profile generic-cpp # 打开生成的配置,先检查 build、test、run 与输出目录
配置的构建、测试和运行字段可以执行目标项目自己的命令。不要因为仓库来自熟悉的组织就直接设置 trust_configured_commands: true。先确认命令只访问测试目录、没有下载脚本,也不会连接生产资源。
4. 先生成计划,再看候选代码
首次运行采用官方当前版本提供的 plan 或 dry-run 路径,只让它读取一个函数。检查函数清单、提示记录、响应日志和候选代码的保存位置。候选实现位于报告或覆盖层,不会自动替换原始源码。
结构检查、目标验证和 parity 信号可以指出差异,但通过并不等于语义正确,更不等于二进制完全一致。至少还要用已知输入、边界条件、回归测试和人工代码审查来判断。
与 Ghidra 对比
Ghidra 是美国国家安全局公开的软件逆向工程框架,提供反汇编、反编译、图形和脚本等基础分析能力。ReAgent 在其上增加模型生成、检查循环、候选代码和证据报告。只需人工分析时直接使用 Ghidra;要在授权项目中试验模型辅助流程,再评估 ReAgent。
pyproject.toml 与 v0.4.0 Release。没有安装 ReAgent、Ghidra 或模型客户端,没有执行任何二进制、构建命令或逆向分析。这里仅补原教程没有展开的事实和边界。安装命令与操作步骤仍以前文为准。
先判断这个项目是否适合你
适合谁用
适合在获得授权的旧软件维护、互操作研究和自有二进制审计中整理 Ghidra 证据、生成候选实现并记录验证过程。不适合绕过许可、分析未获授权的软件,或把模型输出直接当作可发布源码。
采用建议
ReAgent 可以把授权逆向任务中的 Ghidra 上下文、候选实现和验证记录串起来,但它不能替代工程师对许可、反编译结果和执行命令的判断。先用自有小样本、禁用不可信命令并保留人工审查,再决定是否扩大范围。
原教程未展开的系统信息
核心功能
Ghidra 后端
从 Ghidra 获取反编译结果、交叉引用、类型和符号等上下文,再把选定函数交给代理流程。
候选代码与审查循环
模型生成的候选实现写入报告或覆盖层,检查器给出反馈后可继续修订;原始源码不会被流程直接覆盖。
架构与数据流
ReAgent 的编排器读取 Ghidra 后端与项目配置,建立函数清单,将反编译上下文交给模型生成候选代码,再运行检查器和可选的构建、测试或运行命令。报告、提示与响应日志构成证据链;候选内容和原项目分开保存。
技术栈和运行条件
语言
Python 3.10+;目标代码为 C/C++
框架
CLI 编排器、Ghidra Bridge、模型提供方适配器
关键依赖
- Ghidra
- Ghidra Bridge
- Claude、Codex CLI 或 OpenAI 兼容模型之一
- Git(源码安装时)
运行环境
本机或隔离工作环境;验证命令由目标项目配置
常见问题
auto-re-agent 为什么现在叫 ReAgent?
Dryxio 已把仓库更名为 ReAgent,旧的 auto-re-agent 地址会跳转到新仓库。安装包和命令仍以官方 README 当前写法为准。
ReAgent v0.4.0 会直接修改原项目源码吗?
官方说明中,候选代码写入报告或覆盖层,原始源码不会被自动改写。使用者仍要审阅输出后再手工合并。
ReAgent 的 parity 通过是否代表代码完全等价?
不代表。结构检查和 parity 信号是保守证据,只能帮助发现差异,不能证明语义正确或二进制完全一致。
运行 ReAgent 前最需要检查什么?
先确认分析授权,再检查配置里的构建、测试和运行命令。只有在目标项目由自己控制且命令可信时,才启用 trust_configured_commands。