一条逆向工程流水线,可将固件二进制文件及其(可能有误的)反汇编结果转换为可用的 Ghidra 处理器规范。当你遇到一个没有文档、也不受 Ghidra 支持的专有处理器时,此工具会恢复每条指令的真实编码——哪些位是操作码、哪些是寄存器、哪些是立即数——并写出一个你可以直接加载到 Ghidra 中对固件进行反编译的 SLEIGH 规范。
其底层是一个智能体工作流(agentic workflow):一条固定流水线,其中每个步骤都是一个被提示完成单项任务的大型语言模型。工作流由确定性代码编排——而非由 LLM 自身——并且最终生成的每个 SLEIGH 构造函数都必须先用 Ghidra 的 sleigh 二进制编译验证,通过后才被接受。编译失败的构造会反馈给模型,最多进行三次修复尝试。
Objdump
│
▼
Bootstrap ─── deterministic clustering (no LLM)
│
▼
┌─ Processing Loop ──────────────────────────┐
│ Text Interpreter → Bit Interpreter ──┐ │
│ → Knowledge Manager │ │
│ → Supervisor │ │
│ │ split ─────┘ │
│ └── next cluster ──────────┤
└────────────────────────────────────────────┘
│
▼
Knowledge Base
│
▼
SLEIGH Generator ─── compile-verify-retry loop
│
▼
Ghidra .slaspec
指令按结构(字节大小、令牌模式、固定位掩码)分组为簇(clusters)。随后,每个簇由一条专门的 LLM 步骤链进行分析:
add {REG1}, {REG2}, {REG3})。知识库构建完成后,一个独立的 SLEIGH 生成器分两个阶段构建 Ghidra 规范:先以确定性方式生成所有标记为 unimpl 的构造函数骨架,然后由 LLM 逐条指令填充 p-code 语义,每条都使用 Ghidra 的 sleigh 二进制编译验证,失败则重试。
它的定位是分析师的副驾驶(co-pilot),而非替代品:TUI 暴露每一个决策,监督器将歧义簇上报给人工,完整的 LLM 对话、工具调用和令牌使用历史都会写入磁盘。
已在 LEGv8、MIPS、pi32v2 和 x86 上测试通过。
# Docker (recommended)
echo "ANTHROPIC_API_KEY=sk-ant-..." > .env
./docker/run.sh integration_tests/mips
# Local
pip install -e ".[all]"
python -m main --config config.yaml
输入:固件二进制文件和 objdump 反汇编结果——即使是针对错误架构生成的。该工具本身不解决反汇编问题;输出质量取决于输入反汇编的质量。
输出:一个 Ghidra .slaspec 文件,外加一个包含寄存器、指令编码、寻址模式和架构特征的 JSON 知识库。
完整文档——架构、智能体内部原理、实操示例、配置参考——均存放在 wiki 中:
pip install -e ".[docs]"
cd wiki && mkdocs serve
然后打开 http://localhost:8000。
ANTHROPIC_API_KEY 环境变量run.sh)