
ISA Recovery
Um pipeline de engenharia reversa que transforma um binário de firmware e sua desmontagem (possivelmente incorreta) em uma especificação funcional de processador para o Ghidra. Quando você encontra um processador proprietário sem documentação e sem suporte no Ghidra, esta ferramenta recupera a codificação real de cada instrução — quais bits são o opcode, quais são registradores, quais são imediatos — e gera uma especificação SLEIGH que pode ser carregada diretamente no Ghidra para descompilar o firmware.
Por baixo dos panos, trata-se de um fluxo de trabalho agêntico: um pipeline fixo onde cada etapa é um modelo de linguagem grande instruído para uma tarefa restrita. O fluxo de trabalho é orquestrado por código determinístico — não pelos próprios LLMs — e todo construtor SLEIGH gerado ao final é verificado ao ser compilado com o binário sleigh do Ghidra antes de ser aceito. Compilações com falha são realimentadas ao modelo por até três tentativas de reparo.
Objdump
│
▼
Bootstrap ─── agrupamento determinístico (sem LLM)
│
▼
┌─ Loop de Processamento ────────────────────────┐
│ Interpretador de Texto → Interpretador de Bits ──┐ │
│ → Gerenciador de Conhecimento │ │
│ → Supervisor │ │
│ │ dividir ─────────────┘ │
│ └── próximo cluster ────────────────┤
└────────────────────────────────────────────────────┘
│
▼
Base de Conhecimento
│
▼
Gerador SLEIGH ─── loop de compilar-verificar-repetir
│
▼
Ghidra .slaspec
As instruções são agrupadas em clusters por estrutura (tamanho em bytes, padrão de token, máscara de bits fixa). Cada cluster é então analisado por uma cadeia de etapas especializadas de LLM:
add {REG1}, {REG2}, {REG3}).Quando a base de conhecimento está completa, um gerador SLEIGH separado constrói a especificação do Ghidra em duas fases: um esqueleto determinístico de todos os construtores marcados como unimpl, depois um LLM preenche a semântica p-code uma instrução por vez, compilando cada uma contra o binário sleigh do Ghidra e tentando novamente em caso de falha.
Projetado como um co-piloto para o analista, não um substituto: a TUI expõe todas as decisões, o supervisor escala clusters ambíguos para um humano, e o histórico completo da conversa com o LLM, chamadas de ferramenta e uso de tokens é gravado em disco.
Testado em LEGv8, MIPS, pi32v2 e x86.
# Docker (recomendado)
echo "ANTHROPIC_API_KEY=sk-ant-..." > .env
./docker/run.sh integration_tests/mips
# Local
pip install -e ".[all]"
python -m main --config config.yaml
Entrada: um binário de firmware e uma desmontagem objdump — mesmo que produzida contra a arquitetura errada. A ferramenta não resolve o problema de desmontagem por si só; a qualidade da saída escala com a qualidade da desmontagem de entrada.
Saída: um arquivo .slaspec do Ghidra mais uma base de conhecimento JSON com registradores, codificações de instrução, modos de endereçamento e características da arquitetura.
A documentação completa — arquitetura, detalhes internos dos agentes, exemplos práticos, referência de configuração — está na wiki:
pip install -e ".[docs]"
cd wiki && mkdocs serve
Em seguida, abra http://localhost:8000.
ANTHROPIC_API_KEYrun.sh)