mcpField
G
ghidra-agent-cli

ghidra-agent-cli

github.com/bytelandtechnologyセキュリティ579 回インストール25 週間前に更新
リポジトリ

ghidra-agent-cli について

Headless Ghidraスキル群のエージェント向けに、補助CLIのコマンド、引数、成果物の仕様を説明するスキルです。ワークスペースとGhidra、Fridaなどの操作を扱います。

主な機能

  1. 01ワークスペース初期化とフェーズ状態管理
  2. 02YAML分析成果物の管理
  3. 03Ghidraの検出・分析・操作
  4. 04Fridaデバイスと実行補助コマンド
  5. 05ゲート確認と実行記録

活用シーン

  1. 01バイナリ分析用ワークスペースの作成
  2. 02ベースライン・実行時情報・メタデータの管理
  3. 03CLI経由でのGhidra操作
  4. 04成果物の検証とゲートレポートの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bytelandtechnology/headless-ghidra --skill ghidra-agent-cli

インストール後、Claude Code で/ghidra-agent-cliを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
.releaserc.json
Cargo.lock
Cargo.toml
CHANGELOG.md
frida-scripts/
call-tree-trace.js
decomp-compare.js
dispatch-vtable-trace.js
frida-invoke.js
frida-run.js
frida-trace.js
fuzz-input-gen.js
hotpath-coverage.js
io-capture.js
io-compare.js
signature-analysis.js
ghidra-scripts/
AddressFormats.java
AddressStrings.java
AnalyzeVtables.java
ApplyRenames.java
ApplySignatures.java
AutoAnalyze.java
build-bundle.sh
DecompileFunction.java
ExportBaseline.java
ExportCallGraph.java
IdentifyLibraries.java
ImportBinary.java
ImportTypesAndSignatures.java
ghidra-scripts/lib/
snakeyaml-2.6.jar

詳細

ghidra-agent-cli

説明

ghidra-agent-cli は、Headless Ghidra スキルファミリーに同梱されているヘルパーです。 サポート対象の Ghidra、Frida、進捗、ゲートの各操作について、コマンドツリー、ワークスペースのレイアウト、YAML アーティファクトのセマンティクス、出力エンベロープ、実行時の動作を管理します。

このスキルでは、エージェント向けにヘルパーコマンドのセマンティクスを説明します。P0~P4 のワークフロー順序、ステージのルーティング、オーケストレーションポリシーは定義しません。これらは headless-ghidra/SKILL.md と各フェーズのスキルで定義されています。通常のユーザーはスキルファミリーをインストールして使用します。ワークフロー中にこの CLI を手動でインストール、ビルド、実行する必要はありません。

前提条件

  • Node.js >= 18
  • ghidra-agent-cli ghidra discover で検出可能なローカル Ghidra インストール
  • frida * コマンドで使用する場合は、Frida のインストール(任意)

利用可能性

このヘルパーはスキルファミリーとともにインストールされ、headless-ghidra およびフェーズスキルと同じ階層に配置する必要があります。ghidra-agent-cli が利用できない場合は、対象のワークスペース内に別個の CLI パッケージをインストールするのではなく、スキルファミリー全体を再インストールまたは更新するようユーザーに依頼してください。

リリース管理対象のヘルパーパッケージバージョン:[email protected]。この識別子はパッケージングのメタデータです。分析ワークフロー中にユーザーへ手動でのインストールを依頼しないでください。

呼び出し

ghidra-agent-cli [GLOBAL FLAGS] <COMMAND> [COMMAND FLAGS]

入力

グローバルフラグ:

  • --format yaml|json|toml — 出力形式(デフォルト:yaml)
  • --target <id> — ターゲットセレクター
  • --workspace <path> — ワークスペースのルートパス
  • --config-dir <PATH> — 設定ディレクトリを上書き
  • --data-dir <PATH> — データディレクトリを上書き
  • --state-dir <PATH> — 状態ディレクトリを上書き
  • --cache-dir <PATH> — キャッシュディレクトリを上書き
  • --log-dir <PATH> — ログディレクトリを上書き
  • --lock-timeout <SECS> — ロック取得のタイムアウト(秒)(デフォルト:30)
  • --no-wait — ロック取得を待機しない
  • --help — ヘルプテキストを表示

ほとんどのコマンドでは、--target <id> または context use で設定したアクティブなコンテキストが必要です。

出力

コマンドは、選択した形式で構造化されたエンベロープを出力します。

status: ok
message: "<summary>"
data: <structured payload>

エラー

エラーは構造化されており、形式が安定しています。

{
  "code": "E_ERROR",
  "message": "description of what went wrong",
  "source": "main",
  "format": "json"
}

既知のコード:

  • E_ERROR — 一般的なエラー
  • E_GATE_FAILED — ゲートチェックに失敗
  • E_LOCK_TIMEOUT — ロック取得がタイムアウト

コマンドグループ

グループ目的
workspace対象ワークスペースを初期化し、フェーズの状態を管理します
scopescope.yaml を管理します
functions / callgraph / types / vtables / constants / strings / importsベースラインの YAML メタデータを管理します
third-partythird-party/identified.yaml、サードパーティーなしとする明示的なレビュー、未変更のソースメタデータを管理します
runtimeruntime/run-manifest.yaml と runtime/run-records/*.yaml を管理します
hotpathruntime/hotpaths/call-chain.yaml を管理します
metadatametadata/renames.yaml や metadata/signatures.yaml などの P3 メタデータ YAML を管理します
substitutesubstitution/functions/<fn_id>/ 以下の P4 置換レコードを管理します
git-checkゲートから要求された場合に、成果物の YAML ファイルがレビュー可能な状態か検証します
execution-log実行レコードを追加、確認します
progressレガシーな逆コンパイル進捗 YAML 用の互換ヘルパー
gate集約ゲートチェックを実行し、ゲートレポートを確認します
ghidraGhidra の検出、インポート/解析、ベースラインのエクスポート、変更の適用、カスタムヘッダー/シグネチャのインポート、逆コンパイル、再ビルド
fridaデバイス、キャプチャ、比較、トレース、実行、呼び出し用のヘルパー
inspect読み取り専用のバイナリー検査用ヘルパー
contextアクティブコンテキスト用のヘルパー
paths解決済みのワークスペース/ランタイムパスを表示します
validate / help検証とヘルプの機能

ワークスペースモデル

ghidra-agent-cli では、次のアクティブなワークスペース構成を使用します。

targets/<target-id>/
└── ghidra-projects/

artifacts/<target-id>/
├── pipeline-state.yaml
├── scope.yaml
├── intake/
├── baseline/
│   ├── functions.yaml
│   ├── callgraph.yaml
│   ├── types.yaml
│   ├── vtables.yaml
│   ├── constants.yaml
│   ├── strings.yaml
│   └── imports.yaml
├── 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>/
│       ├── capture.yaml
│       └── substitution.yaml
├── gates/
└── scripts/

workspace init は基本的なワークスペース構成を作成し、 pipeline-state.yaml と scope.yaml を初期化します。残りの アーティファクトは、後続のフェーズで追加されます。

アーティファクトの意味

アーティファクト意味
pipeline-state.yaml現在の対象、現在のフェーズ、記録されたバイナリパス
scope.yaml明示的なスコープモードとエントリリスト
baseline/*.yamlGhidra からエクスポート、または CLI コマンドで整理されたベースラインメタデータ
runtime/run-manifest.yamlP1 の再現可能なランタイムマニフェストと実行記録インデックス
runtime/run-records/*.yamlP1 の具体的な実行可能ファイルまたはハーネスの実行観測結果
runtime/hotpaths/call-chain.yamlP1 の Frida 由来ホットパス呼び出しチェーン優先順位のソース
third-party/identified.yaml識別されたライブラリ、バージョン、証拠、ソースパス、未変更パス、関数分類。libraries: [] はサードパーティのレビューで該当なしと明示した記録です
third-party/pristine/<library>@<version>/未変更のサードパーティソーススナップショット。未変更の状態を保つ必要があります
third-party/compat/<library>@<version>/未変更のソースとは別に管理される互換性のための変更
metadata/*.yamlCLI を介して Ghidra に適用する前の、P3 で復元された名前、シグネチャ、型、定数、文字列
metadata/apply-records/*.yamlシリアライズされたメタデータ適用の試行を記録する P3 の記録
substitution/next-batch.yamlP4 の置換作業リスト
substitution/functions/<fn_id>/*.yamlP4 の関数フィクスチャ、キャプチャ、置換記録、ステータス、フォローアップデータ
gates/*-report.yaml保存されたゲートチェックレポート

例

# Initialize a target
ghidra-agent-cli workspace init --target libfoo --binary ./libfoo.so

# Set scope and inspect state
ghidra-agent-cli --target libfoo scope set --mode full --entries 0x1000,0x2000
ghidra-agent-cli --target libfoo workspace state show

# Export and inspect baseline YAML
ghidra-agent-cli --target libfoo ghidra import
ghidra-agent-cli --target libfoo ghidra auto-analyze
ghidra-agent-cli --target libfoo ghidra export-baseline
ghidra-agent-cli --target libfoo functions list

# Import custom headers and signatures into the current Ghidra program
ghidra-agent-cli --target libfoo ghidra import-types-and-signatures --header ./include/custom_types.h --header ./include/custom_api.h

# Runtime, metadata, substitution, and gate checks
ghidra-agent-cli --target libfoo runtime record --key entrypoint --value 0x401000
ghidra-agent-cli --target libfoo hotpath add --addr 0x401000 --reason runtime
ghidra-agent-cli --target libfoo metadata enrich-function --addr 0x401000 --name main --prototype 'int(void)'
ghidra-agent-cli --target libfoo substitute add --fn-id fn_001 --addr 0x401000 --replacement 'return 0;'
ghidra-agent-cli --target libfoo gate check --phase P1

# Frida helpers
ghidra-agent-cli frida device-list
ghidra-agent-cli frida trace --target ./bin/app --functions open,read

境界

  • 次の項目への回答には、このスキルを使用してください。コマンド名、フラグ、出力形式、アーティファクトのパス、 ファイルの意味、CLI の動作。
  • P0〜P4 の順序、各ステージの担当範囲、ワークフローの判断について、このスキルを信頼できる情報源として 使用しないでください。これらは headless-ghidra スキル ファミリーで扱います。

コメント