mcpField
H
headless-ghidra-batch-decompile

headless-ghidra-batch-decompile

github.com/bytelandtechnology開発5114 回インストール25 週間前に更新
リポジトリ

headless-ghidra-batch-decompile について

headless-ghidra-batch-decompile は、選択した関数バッチを ghidra-agent-cli で処理する CLI ワークフローです。Ghidra によるデコンパイルと置換記録を行い、P4 の対象範囲や出所の記録を定めています。

主な機能

  1. 01リネームの適用と検証
  2. 02シグネチャの適用と検証
  3. 03Ghidra によるデコンパイル
  4. 04関数単位の成果物記録
  5. 05置換の検証と P4 ゲート確認

活用シーン

  1. 01対象関数バッチのデコンパイル
  2. 02補強した関数メタデータの適用
  3. 03置換前のフィクスチャ記録
  4. 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.md
README.md
README.zh-CN.md

詳細

Headless Ghidra 関数置換 — P4

P4 では、現在選択されているバッチを取り込み、拡充されたメタデータを適用し、承認済みの Ghidra デコンパイル手順を実行して、関数ごとの置換アーティファクトを記録します。

必須の ghidra-agent-cli コマンド

  • ghidra-agent-cli ghidra apply-renames
  • ghidra-agent-cli ghidra verify-renames
  • ghidra-agent-cli ghidra apply-signatures
  • ghidra-agent-cli ghidra verify-signatures
  • ghidra-agent-cli ghidra decompile
  • ghidra-agent-cli ghidra rebuild-project
  • ghidra-agent-cli substitute add
  • ghidra-agent-cli substitute validate
  • ghidra-agent-cli gate check --phase P4

ロックと Ghidra の呼び出しは CLI 内部で処理されます。 公開されるワークフローのインターフェースは、CLI と以下の YAML 出力です。 substitution/next-batch.yaml の準備ができたら、P3 の名前とシグネチャが明確な関数だけを処理してください。

入力

  • artifacts/<target-id>/baseline/*.yaml
  • artifacts/<target-id>/runtime/fixtures/
  • artifacts/<target-id>/runtime/hotpaths/call-chain.yaml
  • artifacts/<target-id>/third-party/identified.yaml
  • artifacts/<target-id>/third-party/pristine/<library>@<version>/
  • 必要に応じて artifacts/<target-id>/third-party/compat/<library>@<version>/
  • artifacts/<target-id>/metadata/renames.yaml
  • artifacts/<target-id>/metadata/signatures.yaml
  • artifacts/<target-id>/substitution/next-batch.yaml

出力

  • artifacts/<target-id>/substitution/functions/<fn_id>/capture.yaml
  • artifacts/<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 に戻ってもう一巡するか、完了します。

コメント