
Конвейер обратной разработки, который превращает бинарный файл прошивки и его (возможно, неверное) дизассемблирование в рабочую спецификацию процессора для Ghidra. Когда вы сталкиваетесь с проприетарным процессором без документации и без поддержки в Ghidra, этот инструмент восстанавливает реальную кодировку каждой инструкции — какие биты являются опкодом, какие регистрами, какие непосредственными значениями — и записывает SLEIGH-спецификацию, которую можно напрямую загрузить в Ghidra для декомпиляции прошивки.
По своей сути это агентный рабочий процесс: фиксированный конвейер, в котором каждый шаг выполняет большая языковая модель, которой поручена узкая задача. Рабочий процесс управляется детерминированным кодом, а не самими LLM, и каждый сгенерированный в итоге конструктор SLEIGH перед принятием проверяется компиляцией с помощью бинарника sleigh из Ghidra. Неудачные компиляции возвращаются модели для исправления — до трёх попыток.
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
Инструкции группируются в кластеры по структуре (размер в байтах, шаблон токенов, маска фиксированных битов). Затем каждый кластер анализируется цепочкой специализированных LLM-шагов:
add {REG1}, {REG2}, {REG3}).Когда база знаний заполнена, отдельный генератор SLEIGH строит спецификацию Ghidra в два этапа: сначала детерминированный каркас всех конструкторов с пометкой unimpl, затем LLM заполняет семантику p-code по одной инструкции за раз, компилируя каждую бинарником sleigh из Ghidra и повторяя попытку при сбое.
Спроектирован как второй пилот для аналитика, а не замена: 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 — даже полученное для неправильной архитектуры. Инструмент сам не решает задачу дизассемблирования; качество результата напрямую зависит от качества входного дизассемблирования.
Выходные данные: файл .slaspec для Ghidra плюс JSON-база знаний о регистрах, кодировках инструкций, режимах адресации и архитектурных особенностях.
Полная документация — архитектура, внутреннее устройство агентов, разобранные примеры, справочник по конфигурации — находится в вики:
pip install -e ".[docs]"
cd wiki && mkdocs serve
Затем откройте http://localhost:8000.
ANTHROPIC_API_KEYrun.sh)