headless-ghidra-batch-decompile について
headless-ghidra-batch-decompile は、選択した関数バッチを ghidra-agent-cli で処理する CLI ワークフローです。Ghidra によるデコンパイルと置換記録を行い、P4 の対象範囲や出所の記録を定めています。
主な機能
- 01リネームの適用と検証
- 02シグネチャの適用と検証
- 03Ghidra によるデコンパイル
- 04関数単位の成果物記録
- 05置換の検証と P4 ゲート確認
活用シーン
- 01対象関数バッチのデコンパイル
- 02補強した関数メタデータの適用
- 03置換前のフィクスチャ記録
- 04P4 バッチの準備状況確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bytelandtechnology/ headless-ghidra --skill headless-ghidra-batch-decompileインストール後、Claude Code で/headless-ghidra-batch-decompileを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.ja-JP.mdREADME.mdREADME.zh-CN.md詳細
Headless Ghidra 関数置換 — P4
P4 では、現在選択されているバッチを取り込み、拡充されたメタデータを適用し、承認済みの Ghidra デコンパイル手順を実行して、関数ごとの置換アーティファクトを記録します。
必須の ghidra-agent-cli コマンド
ghidra-agent-cli ghidra apply-renamesghidra-agent-cli ghidra verify-renamesghidra-agent-cli ghidra apply-signaturesghidra-agent-cli ghidra verify-signaturesghidra-agent-cli ghidra decompileghidra-agent-cli ghidra rebuild-projectghidra-agent-cli substitute addghidra-agent-cli substitute validateghidra-agent-cli gate check --phase P4
ロックと Ghidra の呼び出しは CLI 内部で処理されます。
公開されるワークフローのインターフェースは、CLI と以下の YAML 出力です。
substitution/next-batch.yaml の準備ができたら、P3 の名前とシグネチャが明確な関数だけを処理してください。
入力
artifacts/<target-id>/baseline/*.yamlartifacts/<target-id>/runtime/fixtures/artifacts/<target-id>/runtime/hotpaths/call-chain.yamlartifacts/<target-id>/third-party/identified.yamlartifacts/<target-id>/third-party/pristine/<library>@<version>/- 必要に応じて
artifacts/<target-id>/third-party/compat/<library>@<version>/ artifacts/<target-id>/metadata/renames.yamlartifacts/<target-id>/metadata/signatures.yamlartifacts/<target-id>/substitution/next-batch.yaml
出力
artifacts/<target-id>/substitution/functions/<fn_id>/capture.yamlartifacts/<target-id>/substitution/functions/<fn_id>/substitution.yaml- ワークフローで記録する場合、ブロック済み、注入済み、フォローアップなどの関数ごとの追加 YAML
完了条件
- 関数レベルの I/O フィクスチャとキャプチャ YAML は、代替関数を作成する前に記録されていること。
- 置換された各関数には、プロベナンス、フィクスチャ、ステータスを含む
substitution.yamlがあること。 - P4 ゲートの資料が
substitution/functions/<fn_id>/にあること。
制約
- デコンパイルのバックエンドには Ghidra のみを使用してください。
- バックエンドで必要な場合、共有 Ghidra 状態を変更または読み取る前に、Ghidra のキュー/ロックを取得してください。
- アクティブなバッチ以外の関数のアーティファクトは変更しないでください。
- 対応している適用/検証/デコンパイル、置換、フィクスチャ、ゲートの操作に
ghidra-agent-cliを使用しない形で実行しないでください。 - pristine なサードパーティーソースは変更せず、ローカルの調整は
third-party/compat/に配置してください。 - CLI に機能がない場合、新しい Ghidra スクリプトを作成または実行せず、いったん停止して、まずユーザーに確認してください。
次のステップ
- バッチの P4 ゲートに合格 → P3 に戻ってもう一巡するか、完了します。
コメント
Markdown 対応