headless-ghidra について
headless-ghidraは、Ghidraによる段階的なリバースエンジニアリングを調整するスキルです。構造化された分析とレビュー可能な成果物を必要とするユーザー向けに、ghidra-agent-cliで状態・検証・ゲートを管理し、各段階のスキルへ作業を振り分けます。
主な機能
- 01P0〜P4のパイプライン調整
- 02段階別スキルへの振り分け
- 03ワークスペース状態の管理
- 04フェーズゲートの確認
- 05YAML成果物の引き継ぎ
活用シーン
- 01対象分析の開始または再開
- 02Ghidra作業の段階的な進行
- 03移行前の成果物検証
- 04分析タスクの適切なスキルへの振り分け
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bytelandtechnology/ headless-ghidra --skill headless-ghidraインストール後、Claude Code で/headless-ghidraを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/analysis-selection-playbook.ja-JP.mdanalysis-selection-playbook.mdanalysis-selection-playbook.zh-CN.mdghidra-script-authoring.mdghidra-script-review-checklist.mdREADME.ja-JP.mdREADME.mdexamples/artifacts/sample-target/archive-intake-record.mdarchive-member-inventory.mdarchive-normalization-handoff.mdarchive-replay-command-record.mdcall-graph-detail.mdcommand-manifest.mdcomparison-command-log.mddecompiled-output.mdevidence-candidates.mdfunction-names.mdimports-and-libraries.mdinput-inventory.mdlatest-version-validation.mdreconstruction-log.mdregenerate-project.shrenaming-log.mdsignature-log.mdstrings-and-constants.mdtarget-selection.mdthird-party-diff.mdtypes-and-structs.mdupstream-reference.mdxrefs-and-callgraph.md詳細
ヘッドレス Ghidra — グローバルオーケストレーター
このスキルは、スキルファミリーのワークフローコーディネーターです。
P0~P4 の順序、ディスパッチルール、成果物の引き継ぎポイントを定義します。
ghidra-agent-cli は、コマンド構文と YAML 成果物の仕様を参照するためのツールです。
必須の共有ツール契約
ghidra-agent-cliは、サポート対象のワークスペース、メタデータ、Ghidra、Frida、進捗、検証、ゲート操作に必須の共有インターフェースです。- フェーズスキルでは、使用する
ghidra-agent-cliのサブコマンドを正確に指定する必要があります。 - 下位レベルのシェルスクリプトや Java ヘルパーは、バックエンドの実装詳細です。CLI がすでに操作をサポートしている場合、主要なインターフェースとして CLI に取って代わってはなりません。
- すべてのワークフロー成果物は
artifacts/<target-id>/の下に配置する必要があります。 - YAML 成果物は、
ghidra-agent-cliで作成、更新、検証する必要があります。 - CLI は git コミットを自動作成してはなりません。
- ゲートを移行するには、関連する成果物がディスク上に存在し、ユーザーによるレビューが可能な状態である必要があります。
- すべての Ghidra プロジェクト操作は
ghidra-agent-cliを通して行う必要があります。CLI に必要な機能がない場合は、新しい Ghidra スクリプトを作成または実行する前に一時停止してユーザーに確認してください。
パイプライン
P0 Intake → P1 Baseline+Runtime → P2 Third-Party → [P3 Metadata Enrichment → P4 Function Substitution]*
| フェーズ | スキル | 目的 | 主な出力 |
|---|---|---|---|
| P0 | headless-ghidra-intake | 対象ワークスペースを初期化し、前提条件を確認して、スコープを定義する | pipeline-state.yaml、scope.yaml、targets/<id>/ghidra-projects/ |
| P1 | headless-ghidra-baseline | Ghidra のインポート/解析を実行し、ベースライン YAML をエクスポートして、ランタイムの観測結果を準備する | baseline/*.yaml、runtime/run-manifest.yaml、runtime/run-records/*.yaml、runtime/hotpaths/call-chain.yaml |
| P2 | headless-ghidra-evidence | サードパーティライブラリと未変更のソースを特定し、記録する | third-party/identified.yaml、third-party/pristine/<library>@<version>/、third-party/compat/<library>@<version>/ |
| P3 | headless-ghidra-discovery | 名前、シグネチャ、型、定数、文字列、選択したホットパスのメタデータを充実させる | metadata/*.yaml、metadata/apply-records/ |
| P4 | headless-ghidra-batch-decompile | メタデータの適用と Ghidra のデコンパイルを通して、選択した関数を置き換える | substitution/next-batch.yaml、substitution/functions/<fn_id>/ |
共有成果物契約
すべてのフェーズは、次のアクティブなワークスペースレイアウト内で作業します。
targets/<target-id>/ghidra-projects/
artifacts/<target-id>/
├── pipeline-state.yaml
├── scope.yaml
├── intake/
├── baseline/
├── runtime/
│ ├── project/
│ ├── fixtures/
│ ├── run-manifest.yaml
│ ├── run-records/
│ └── hotpaths/call-chain.yaml
├── third-party/
│ ├── identified.yaml
│ ├── pristine/<library>@<version>/
│ └── compat/<library>@<version>/
├── metadata/
│ ├── renames.yaml
│ ├── signatures.yaml
│ ├── types.yaml
│ ├── constants.yaml
│ ├── strings.yaml
│ └── apply-records/
├── substitution/
│ ├── template/
│ ├── next-batch.yaml
│ └── functions/<fn_id>/
└── gates/
オーケストレーターは pipeline-state.yaml を現在のターゲットレベルの状態記録として扱い、上記のフェーズが所有する YAML 成果物を引き継ぎに使用します。
オーケストレーターの責務
- アクティブなターゲットを検出するか、再開します。
artifacts/<target-id>/pipeline-state.yamlを読み込みます。- 現在のステージに対応するフェーズスキルをディスパッチします。
- 各移行時に
ghidra-agent-cli gate check --phase ...を実行します。 - ゲートを通過した後にのみ、フェーズの状態を進めます。
- 再開/再起動、Frida による任意の補完、バッチ確認、差異レビュー、完了などのユーザーダイアログに対応します。
ゲートポリシー
- P0~P4 は、唯一の主要なパイプライン遷移です。
ghidra-agent-cli gate checkは、すべてのパイプラインフェーズ(P0~P4)における正式なゲート検証です。従来のgate-check.shは削除されました。
必須の ghidra-agent-cli コマンド
ghidra-agent-cli context useghidra-agent-cli context showghidra-agent-cli context clearghidra-agent-cli workspace state showghidra-agent-cli workspace state set-phaseghidra-agent-cli gate checkghidra-agent-cli validateghidra-agent-cli progress compute-next-batchghidra-agent-cli progress show
厳格な禁止事項
- 分析作業自体を実行してはいけません。
- 自身が所有する明示的な状態更新を除き、ベースライン、エビデンス、逆コンパイル、検証の成果物を直接編集してはいけません。
- サポート対象の状態、進捗、コンテキスト、検証、ゲートの操作で
ghidra-agent-cliを迂回してはいけません。 - Ghidra の代わりに、別の逆コンパイルバックエンドを受け入れてはいけません。
- Git のコミットを自動的に作成してはいけません。
- CLI に機能がない場合、新しい Ghidra スクリプトを作成または実行してはいけません。いったん停止し、先にユーザーに確認してください。
次のスキルへのルーティング
- P0 完了 →
headless-ghidra-baseline - P1 完了 →
headless-ghidra-evidence - P2 完了 →
headless-ghidra-discovery - P3 完了 →
headless-ghidra-batch-decompile - 選択したすべての関数で P4 が完了 → P3 に戻るか、完了する
独立したスキル
以下のスキルは P0~P4 のパイプライン外で動作し、直接呼び出すことができます。
| スキル | 目的 | 呼び出し方法 |
|---|---|---|
headless-ghidra-analyze-function | 型 → 定数 → vtable → 関数の識別 → 逆コンパイルという、厳格な 5 段階の復元順序に従って、単一関数を詳細に分析します。逆コンパイル結果を解釈する前に、特定の関数 1 つについて型、定数、vtable のコンテキストをすべて含む完全な分析が必要な場合に使用します。 | ユーザーが「この関数を詳細に分析して」「完全なコンテキストを含めてアドレス 0x... の関数を逆コンパイルして」と依頼した場合、または関数ごとの完全な分析を求めた場合に呼び出されます。 |
コメント
Markdown 対応