
ISAリカバリ
ファームウェアバイナリと、その(おそらく誤った)逆アセンブル結果を、動作するGhidraプロセッサ仕様に変換するリバースエンジニアリングパイプラインです。ドキュメントもGhidraサポートもない独自プロセッサに遭遇したとき、このツールは各命令の実際のエンコーディング(どのビットがオペコードで、どのビットがレジスタで、どのビットが即値か)を復元し、Ghidraに直接ロードしてファームウェアを逆コンパイルできるSLEIGH仕様を書き出します。
内部ではエージェンティックワークフローとして動作します。各ステップが、限定的なタスクをプロンプトされた大規模言語モデルである固定パイプラインです。ワークフローはLLM自身ではなく決定論的なコードによってオーケストレーションされ、最後に生成されたすべてのSLEIGHコンストラクタは、受け入れられる前にGhidraのsleighバイナリでコンパイルされて検証されます。コンパイルに失敗したものは、最大3回の修復試行のためにモデルにフィードバックされます。
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ジェネレータが2つのフェーズでGhidra仕様を構築します。まずすべてのコンストラクタをunimplとマークした決定論的なスケルトンを作成し、次にLLMがpコードセマンティクスを1命令ずつ埋めていき、各命令をGhidraのsleighバイナリに対してコンパイルし、失敗した場合は再試行します。
アナリストのコパイロットとして設計されており、置き換えではありません。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用)