buzzer-re/ToCode
GitHub: buzzer-re/ToCode
ToCode 将二进制文件或 IDA 数据库导出为带有完整元数据的类源代码项目树,让 AI 编程智能体无需实时工具集成即可高效分析和遍历大型二进制。
Stars: 32 | Forks: 2
# ToCode
ToCode 可将二进制文件或 IDA 数据库导出为类似源代码的项目树:包含原始恢复的 C 代码、匹配的汇编代码、函数摘要、节区数据、可选的 IDA 数据库,以及可供编程智能体直接读取的元数据。
## 为什么
AI 模型在编程方面非常强大,尤其是当它们能够遍历庞大的代码库,并通过子智能体和其他策略不断积累上下文时。当我们使用这些智能体来辅助逆向工程时,通常会通过 MCP 或其他方式提供工具,以便编程智能体能够学习并围绕 IDA 和 r2 等工具制定策略。这种方法给智能体的行为方式带来了限制和约束,并增加了对深度、复杂推理的需求。
应该有一种更好的方法来改善这一情况,让较小的模型也能在这类工作中表现出色。
ToCode 背后的理念很简单:使用 IDA 等反汇编工具为给定的二进制文件创建一个类似源代码的项目,并附带预构建的 `AGENTS.md`,让大多数编程智能体都能从预计算的上下文开始。ToCode 还会生成包含重要元数据的丰富 `.json` 文件。
通过这种方法,即使是微型模型也能在不连接类 MCP 工具调用的情况下表现出色,因为 ToCode 提供的正是编程智能体所擅长的内容:代码。
### 导出布局
导出的项目包含以下结构:
```
sample_decompiler/
AGENTS.md
CLAUDE.md
src/raw/**/*.c
src/raw/**/*.asm
src/raw/**/*.summary
include/*.h
data/*.bin
data/variables.json
data/variables_interesting.json
function-index.json
functions.json
sections.json
strings.json
imports.json
exports.json
relocations.json
reachable.json
cluster-graph.json
triage.json
project.json
export-manifest.json
```
| 路径 | 描述 |
| --- | --- |
| `src/raw` | 按集群分组的反编译类 C 输出、汇编代码和摘要。 |
| `include` | 为导出项目生成的头文件。 |
| `data` | 原始节区转储和变量元数据。 |
| `*.json` | 函数、节区、字符串、导入、导出、重定位、可达性、集群、分类、项目元数据和导出清单。 |
| `AGENTS.md` / `CLAUDE.md` | 供智能体分析导出二进制文件的说明。 |
| `src/tree` | 使用 `--tree` 时输出的可选扫描器友好型 C 代码。 |
### 支持的后端
目前支持 IDA(使用 ida-domain/idapro Python 库)和 radare2。未来可能会添加其他反汇编工具。
### 使用说明
ToCode 支持 Windows、Linux 和 macOS,需要 Python 3.10 或更高版本。
在 Windows PowerShell 上:
```
powershell -ExecutionPolicy Bypass -File .\install.ps1
```
在 Linux 或 macOS 上:
```
bash ./install.sh
```
手动设置(需要 [uv](https://docs.astral.sh/uv/)):
```
git clone https://github.com/buzzer-re/ToCode
cd ToCode
uv sync --locked
uv tool install --force --editable .
```
### 示例
```
tocode firmwareX.bin -o firmwareX_decompiled/
cd firmwareX_decompiled/
codex
# 在你的 agent shell 中,输入你的目标,例如:“给我简要概述一下此固件的 boot process。”
```
#### 来自进行中的 RE 工作
```
tocode firmwareX.bin.i64 -o firmwareX_decompiled/
...
```
## 开发说明
该工具是使用智能体编程构建的,因此如果您打算提供帮助,我强烈建议您采用同样的方式。
在修改 ToCode 之前,请确保已安装 Python、uv、ruff、mypy、pytest 和 compileall。如果要处理后端相关工作,请根据您要修改的内容,确保已安装 IDA 或 radare2。
给智能体的主要说明位于 `AGENTS.md` 中。请在开始前阅读它,并在继续之前确保通过本地质量门禁。
### 质量门禁
在提交 PR 之前运行本地 CI 门禁:
```
./ci-local.sh
```
在 Windows PowerShell 上:
```
powershell -ExecutionPolicy Bypass -File .\ci-local.ps1
```
标签:AI辅助分析, IDA Pro, LLM上下文处理, radare2, SOC Prime, URL提取, 二进制分析, 云安全运维, 云资产清单, 反编译, 开发工具, 逆向工具, 逆向工程