Sachin-Buluswar/ReentbotPro
GitHub: Sachin-Buluswar/ReentbotPro
ReentbotPro 是一个基于 LLM agent 的 Solidity 智能合约自动审计工具,通过结合多种分析工具和可运行的概念验证来提供有证据支撑的漏洞发现。
Stars: 0 | Forks: 0
# ReentbotPro
ReentbotPro 是一个自主的智能合约审计工具套件。它在 Docker 沙箱(配备 Foundry、Slither、Echidna、Medusa、Halmos 以及标准 shell 工具)中对 Solidity 项目运行 LLM agent。
可选的 Alchemy 和 Etherscan 访问权限可添加实时链上数据和已验证的源码。
其目标是提供有证据支撑的漏洞,而不仅仅是静态分析警告列表。该 agent 对协议进行建模,调查可疑的状态转换,运行验证实验,并生成包含机器可读发现的报告。
## 环境要求
- Python 3.11+
- [uv](https://docs.astral.sh/uv/getting-started/installation/)
- 在本地运行的 Docker
- ChatGPT/Codex 账户或 OpenAI API 密钥
## 安装与运行
```
git clone https://github.com/Sachin-Buluswar/ReentbotPro.git
cd ReentbotPro
uv tool install -e .
reentbotpro ./path/to/contracts
```
在首次交互式运行时,除非设置了 `--api-key` 或 `OPENAI_API_KEY`,否则 ReentbotPro 会打开浏览器进行 ChatGPT/Codex 登录。它还会显示一个设置向导,用于配置运行设置和可选的实时链上凭据。首次审计会构建 Docker 镜像,可能需要几分钟时间;后续运行将复用该镜像。
如果 `reentbotpro` 不在你的 `PATH` 中,请运行 `uv tool update-shell` 并重启终端。
对于开发环境,请使用项目环境而不是已安装的工具:
```
uv sync
uv run reentbotpro ./path/to/contracts
```
## 可选的实时链上访问
ReentbotPro 可以在没有链上凭据的情况下工作,并继续进行仅基于源码的分析。要获取实时状态、追踪、模拟和已验证源码查找,请设置:
```
export ALCHEMY_API_KEY=<...>
export ETHERSCAN_API_KEY=<...>
```
你无需在启动时选择目标链。agent 会从部署和范围元数据中推断链绑定,然后推导出相应的端点。当链未知时,它不会静默假设为 Ethereum 主网。
交互式设置向导可以将这些密钥保存到 `~/.reentbotpro/config.json` 中。有关身份验证、环境变量、本地配置和自定义 RPC 端点的内容,请参阅[配置](docs/configuration.md)。
## 常见用法
```
# 基础审计
reentbotpro ./path/to/contracts
# 无需 setup wizard 或 follow-up chat 的批量审计
reentbotpro ./contracts --no-chat
# 选择模型以及以分钟为单位的 wall-clock limit
reentbotpro ./contracts --model gpt-5.6-sol --max-time 30
# 更改输出详细程度和目标位置
reentbotpro ./contracts --verbosity full --output ./audit-results
```
运行 `reentbotpro --help` 获取完整的选项参考。
默认模型为 `gpt-5.6-sol`,并带有适合该模型的 `xhigh` 推理。
默认的实际运行时间限制为 720 分钟,工具输出详细程度为 `partial`,并且输出内容会写入到 `./findings` 目录下。除非提供了高级覆盖设置,否则模型上下文和输出设置会自动推断。
## 输出
每次运行都会创建一个带有时间戳的目录,例如:
```
findings/2026-04-30_14-30-00/
```
典型内容包括:
- `report.md`:人类可读的漏洞报告。
- `findings.json`:运行元数据、提交的发现、制品计数以及任何未完成的就绪状态。
- `campaign/`:持久的活动状态、映射、结果日志和证据审查。
- `experiments/`:生成的实验和概念验证工作区。
目标源码通过 bind-mount 挂载到审计容器中,因此 agent 在目标树下写入的文件会保留在宿主机上。中断或异常退出时,程序会在清理前尽力保存部分内容,并在 `findings.json` 中做出相应标记。
## 审计工作原理
审计分为三个阶段:
1. **审计**:探索源码,对价值流和不变量进行建模,调查假设并运行实验。
2. **报告**:根据审查后的发现和已保存的活动上下文编写 markdown 报告。
3. **聊天**:可选地回答后续问题或继续审计。
活动遵循一个持久的循环:
```
State -> Map -> Plan -> Experiment -> Evidence -> Mutate or Report
```
中等、高和严重级别的发现需要可运行的概念验证证据。通过的实验证明了机制的有效性,因此审查还会考虑生产环境中的可达性、实质性前提条件的来源、测量到的风险资金以及阴性对照。静态分析和实时链上探测可以指导或佐证调查,但它们不能替代可运行的证明。
不确定的部署上下文和未解决的分支会被记录为警告或就绪缺口,而不是被静默丢弃。如果在活动准备就绪之前就达到了实际运行时间限制,输出将被标记为不完整,而不会作为一个无发现的干净结果呈现。
有关控制器行为、制品合约和证据防护机制,请参阅[攻击活动引擎](docs/attack-campaign-engine.md)。
## 免责声明
仅在授权的安全测试、教育和 CTF 工作中使用 ReentbotPro。它不能替代专业的手动审计。用户有责任确保自己已获得测试目标合约的授权。
## 许可证
MIT
标签:DLL 劫持, Petitpotam, Solidity, 区块链安全, 大语言模型, 智能合约审计, 请求拦截, 逆向工具