内容
# 工具列表
适用于逆向工程的全功能 Docker 镜像 — radare2 + Ghidra 作为 MCP 服务器,以及 BinDiff、angr、AFL++、honggfuzz 和 Android 工具(apktool、jadx、frida)。可与 Claude Code、Claude Desktop、Cline、Continue 或任何 MCP 客户端配合使用。
无头模式 — 无 GUI,无 VNC。所有操作都在终端或通过 MCP 进行。
## 要求
- Docker 23.0+(需要 BuildKit — 自 23.0 以来为默认值)
- Docker Compose 2.0+(`docker compose`,而非 `docker-compose`)
对于 Docker 18.09–22.x 用户:请在构建前导出 `DOCKER_BUILDKIT=1`。
## 快速开始
```bash
docker compose build
docker compose up -d
docker exec -it toolbox bash
```
将二进制文件放入 `./workspace` — 在容器内映射为 `/workspace`。
一键将二进制文件导入 Ghidra:
```bash
./scripts/load-ghidra.sh workspace/my-binary # 自动分析
./scripts/load-ghidra.sh workspace/my-binary --no-analyze
```
## MCP 服务器
预配置了三个 MCP 服务器。从 [.mcp.json](.mcp.json) 或 [configs/base.json](configs/base.json) 中复制条目到您的 MCP 客户端。
### radare2
始终可用 — 无需启动服务器。暴露所有 r2 分析功能:反汇编、反编译(通过 r2ghidra)、十六进制转 dump、交叉引用、符号、搜索、模拟。
```json
{
"mcpServers": {
"radare2": {
"command": "docker",
"args": ["exec", "-i", "toolbox", "r2pm", "-r", "r2mcp"]
}
}
}
```
### Ghidra 无头模式
服务器在容器内自动启动,监听端口 8089(`ENABLE_GHIDRA_HEADLESS_MCP=1` 在 docker-compose.yml 中)。暴露 200+ 工具:项目管理、导入、自动分析、反编译、交叉引用、数据流分析、符号表、补丁、函数标记、结构体/类型管理和调试器支持。
```json
{
"mcpServers": {
"ghidra-headless": {
"command": "docker",
"args": [
"exec", "-i", "-e", "GHIDRA_MCP_URL=http://127.0.0.1:8089", "toolbox",
"python3", "/opt/tools/ghidra-mcp/bridge_mcp_ghidra.py"
]
}
}
}
```
HTTP API 也可直接访问:
```bash
curl http://localhost:8089/check_connection
curl -X POST "http://localhost:8089/load_program" -d "file=/workspace/mybin"
curl "http://localhost:8089/decompile_function?program=mybin&name=main"
```
### Ghidra GUI(可选)
如果您在主机上运行 Ghidra GUI,并启动了 GhidraMCP 插件,监听端口 8080,请使用此条目从 MCP 客户端连接。镜像不包含 GUI — 此功能桥接到外部 Ghidra 实例。
```json
{
"mcpServers": {
"ghidra-gui": {
"command": "docker",
"args": [
"exec", "-i", "-e", "GHIDRA_MCP_URL=http://host.docker.internal:8080", "toolbox",
"python3", "/opt/tools/ghidra-mcp/bridge_mcp_ghidra.py"
]
}
}
}
```
### Shell
在容器内执行通用 Shell 命令 — 可以访问所有 CLI 工具。传递任意命令并返回 stdout、stderr 和退出代码。限时 300 秒。
```json
{
"mcpServers": {
"shell": {
"command": "docker",
"args": [
"exec", "-i", "toolbox",
"python3", "/opt/tools/scripts/mcp/shell-mcp.py"
]
}
}
}
```
### angr(内置 MCP)
angr 9.2 自带 MCP 服务器。作为 stdio 传输添加:
```json
{
"mcpServers": {
"angr": {
"command": "docker",
"args": [
"exec", "-i", "toolbox",
"python3", "-m", "angr.mcp"
]
}
}
}
```
### 配置文件位置
| MCP 客户端 | 文件 |
|---|---|
| Claude Code | `.claude/mcp.json`(项目)或 `~/.claude/mcp.json`(全局) |
| Claude Desktop | `claude_desktop_config.json`([文档](https://docs.anthropic.com/en/docs/claude-desktop)) |
| Cline(VS Code) | `cline_mcp_settings.json` |
| Continue | `~/.continue/config.json` |
| Zed | `settings.json` → `{"context_servers": {...}}` |
编辑后重启客户端。`docker exec -i toolbox ...` 按需启动桥接服务 — 主机上无需管理长期运行的进程。
## CLI 工具
### radare2
```bash
r2 -A /workspace/chall # 打开并分析
r2 -c "pdg @ main" /workspace/chall # 通过 r2ghidra 反编译 main
r2pm -r r2mcp -t # 列出 r2mcp 暴露的 MCP 工具
```
### Ghidra 无头模式(analyzeHeadless)
```bash
/opt/tools/ghidra/support/analyzeHeadless /home/ctf/ghidra-projects myproj \
-import /workspace/chall -overwrite
```
或使用 `scripts/load-ghidra.sh`,该脚本还会将二进制文件加载到 MCP 服务器中。
### BinDiff
CLI 和 MCP。 从 Ghidra 或 IDA 导出 `.BinExport`,然后进行差异对比:
```bash
bindiff old.BinExport new.BinExport
```
ghidra-headless MCP 暴露了 `bindiff` 和 `bindiff_export_from_ghidra` 工具,用于直接从 Ghidra 项目中进行差异对比。
### angr + Python RE 栈
预安装:angr、pwntools、ropper、ropgadget、capstone、unicorn、keystone、z3、lief、r2pipe、frida-tools、objection。
```bash
python3 -c "
import angr
p = angr.Project('/workspace/chall', auto_load_libs=False)
cfg = p.analyses.CFGFast()
print(f'{len(cfg.kb.functions)} 个函数,入口点位于 {hex(p.entry)}')
"
```
### 模糊测试
AFL++ 和 honggfuzz 安装在 `/opt/tools/fuzzing/bin`(在 PATH 中)。
```bash
# AFL++
mkdir -p fuzz-in && echo AAAA > fuzz-in/seed
afl-fuzz -i fuzz-in -o fuzz-out -- /workspace/chall @@
# 黑盒 / 无源码:添加 -Q(QEMU 模式)
# honggfuzz
mkdir -p hf-in && echo AAAA > hf-in/seed
honggfuzz -i hf-in -o hf-out -- /workspace/chall ___FILE___
```
### Android RE
```bash
apktool d app.apk -o app_decoded
jadx app.apk -d app_jadx_out
adb devices
frida -U -f com.example.app -l hook.js --no-pause
objection -g com.example.app explore
```
### 其他工具
`gdb`、`lldb`、`strace`、`ltrace`、`nasm`、`objdump`、`strings`、`patchelf`、`gcc`、`clang` 和 `python3` 都在 PATH 中。
## 项目结构
```
.
├── .mcp.json MCP 配置(复制到您的客户端)
├── configs/base.json 相同的配置,更详细的文档
├── docker-compose.yml 一键启动
├── docker/
│ └── Dockerfile 多阶段构建,固定版本
├── scripts/
│ ├── entrypoint.sh 容器入口点(启动 Ghidra MCP 服务器)
│ ├── load-ghidra.sh 导入 + 加载二进制文件到 Ghidra MCP
│ └── mcp/
│ └── shell-mcp.py 通用 Shell MCP 服务器
└── workspace/ 映射到 /workspace — 将二进制文件放在此处
```
## 安全
Compose 添加了 `SYS_PTRACE` 并禁用 seccomp(`unconfined`)— 需要 gdb、strace 和 AFL。分析不受信任的二进制文件时,请在隔离的 VM 中运行此容器。
## 构建与发布
每次推送和 PR 都通过 GitHub Actions(`.github/workflows/build.yml`)验证构建。推送版本号标签(`v1.0.0`、`v1.0`)会将镜像发布到 GHCR(`ghcr.io/<user>/re-toolbox`)。