Ghidra Download非公式ダウンロード・インストールガイド
日本語
GUIなしの解析

Ghidra ヘッドレスアナライザー:CLIで一括解析

Ghidra ヘッドレスアナライザー(Ghidra Headless Analyzer)は、グラフィカルインターフェースを開かずにGhidraを実行するためのコマンドライン入口です。supportフォルダーのanalyzeHeadlessランチャーを使えば、許可を得たバイナリのインポート、既存プロジェクトの処理、解析前後のスクリプト実行、複数ファイルへの同じ処理の反復ができます。このガイドでは、コマンドの選び方、プロジェクトの保護、結果の読み方、失敗の調べ方を説明します。

公式ヘッドレスアナライザー文書を開く
向いている用途再現可能な一括解析
入口support/analyzeHeadless
主なモード-import と -process
確認したリリースGhidra 12.1.3 · 2026年9月16日
まず答え

Ghidra ヘッドレスアナライザーとは何か、いつ使うか

Ghidra ヘッドレスアナライザーは、デスクトップ画面を開かずに解析を実行するコマンドラインの入口です。プロジェクトを新しく作成または補完し、インポート済みまたは既存のプログラムを解析し、サンプルフォルダー、ファームウェアのトリアージ、定期レポート、管理されたビルドパイプライン向けにGUIを使わないスクリプトを実行できます。

ヘッドレス実行はリモートサーバーではなく、すべての判断を自動化する機能でもありません。Ghidraのインストール、プロジェクトの場所、ローダー、アナライザー、スクリプト、通常のプロジェクト規則に依存します。リリース、入力セット、オプション、出力プロジェクト、ログを記録し、解析は許可を得た素材だけに限定してください。

基準となる情報を残す

利用できるオプションは、公式ドキュメントとインストールしたリリースに付属するsupport/analyzeHeadlessランチャーで確認します。このページは安全な作業手順を説明するもので、インストール済みリリースのヘルプを置き換えるものではありません。

コマンドの前に

インストール、プロジェクト、入力ファイルを準備する

公式Ghidra ZIPと、対応する64ビットJDKから始めます。このサイトで確認したリリースは2026年8月18日公開のGhidra 12.1.3で、アーカイブのsupport/にランチャーが含まれています。デスクトップ版が起動しない場合はGhidraインストールガイドを確認してください。JDKの不備や展開漏れは、ヘッドレス実行も失敗させます。

アプリケーション、プロジェクト、入力・レポート用フォルダーは分けて管理します。調査中にライブプロジェクトをバッチジョブから編集したり、確認前に既知の正常なコピーを上書きしたりしないでください。スクリプトやアナライザー設定を試すときは、新しいプロジェクト名を使います。

  1. 1

    ランチャーを確認する

    Ghidraのインストール先で、使用するOSのランチャーが存在し、ヘルプを表示できることを確認します。Windowsはバッチファイル、macOSとLinuxはシェルランチャーを使います。

    support/analyzeHeadless.bat または support/analyzeHeadless
  2. 2

    書き込み可能なプロジェクト領域を選ぶ

    インポートしたプログラム、データベース、キャッシュ、レポートを置ける容量を確保します。ファイルロックや同時書き込みを調べる間は、同期フォルダーを避けます。

    D:\analysis\projects /srv/ghidra/projects
  3. 3

    入力セットを記録する

    ファイル名、ハッシュ、想定アーキテクチャー、収集日を記録します。中身を記録しないディレクトリパスは、再現可能な入力とは言えません。

    samples/firmware-a.bin samples/firmware-b.bin
  4. 4

    処理前にバックアップする

    シンボルやデータ型の変更、プログラムの削除、保存を行うスクリプトを実行する前に、プロジェクトをコピーします。

    ProjectName.gpr + ProjectName.rep/
プロジェクトとインポート済み実行ファイルを表示するGhidraの公式Projectウィンドウ
Ghidraの公式Projectウィンドウ。プロジェクトデータをアプリケーション本体から分け、オートメーションで変更する前にバックアップします。
モードを選ぶ

-import と -process の使い分け

Ghidra ヘッドレスアナライザーで最初に決めるのは、入力ファイルからプロジェクトを作成または補完するのか、すでにプロジェクトにあるプログラムを開いて処理するのかです。ファイルやディレクトリをプロジェクトのプログラムにしたい場合は-importを使います。プログラムがすでにプロジェクトにある場合は-processを使います。

インターネット上の例に両方が書かれているからといって、両方のモードを追加しないでください。まずは説明できる小さなジョブを作り、必要な場合だけローダーやプロセッサーを指定し、成功したコマンドをバージョン管理したスクリプトに保存します。

目的モード代表的な入力確認する点
バイナリからプロジェクトを作る-importファイルまたはディレクトリローダー、言語、プロジェクト名
既存プログラムを解析する-process既存プロジェクトプログラム名とプロジェクトのコピー
インポート中にスクリプトを実行する-import + -postScript新しい入力セットスクリプトのパスと保存結果
プロジェクト内のディレクトリを処理する-process + -recursive既存プロジェクトのツリー範囲と実行ごとのログ
Windows:練習用サンプルをインポートcd C:\ghidra_12.1.3_PUBLIC\support analyzeHeadless.bat D:\analysis\projects HeadlessDemo -import D:\analysis\samples\demo.exe
LinuxまたはmacOS:既存プロジェクトを処理./support/analyzeHeadless /srv/ghidra/projects HeadlessDemo -process demo.exe
自動化

再現性を失わずにスクリプトを使う

ヘッドレスジョブは、解析状態を小さく確認しやすい結果へ変換するスクリプトと組み合わせると便利です。pre-scriptでプロジェクト操作を準備し、post-scriptで解析済みプログラムを調べてレポートを書けます。関数、文字列、インポート、メタデータの一項目を出力するような狭いスクリプトは、大きなプロジェクトを黙って改名するスクリプトよりテストしやすくなります。

スクリプトはバージョン管理したディレクトリに置き、-scriptPathで渡します。役割を明確にするため-preScript-postScriptを使い、対応するログも保存します。Ghidraの外でCPythonを使う場合はPyGhidraガイドを参照してください。二つの自動化境界は関連しますが、同じランタイムではありません。

  • 読み取り専用またはレポート作成の作業と、許可を得た小さなサンプルから始める。
  • スクリプトのリビジョンをコマンドとGhidraのリリースの横に固定する。
  • スクリプトがプロジェクトデータを保存する必要がなければ、レポートはプロジェクト外に書く。
  • 空の結果、存在しない項目、未対応のプログラム種別、2回目の実行をテストする。
  • シンボルやデータ型の変更を受け入れる前に、バックアップしたプロジェクトと比較する。
Ghidraのスクリプト処理とプログラム解析、関数グラフをつなぐ編集用イラスト
編集用コンセプトイラスト。ヘッドレススクリプトを小さく、バージョン管理し、生成された証拠と比較しやすく保ちます。
反復可能な実行

ディレクトリ処理、ログ、CIジョブ

ディレクトリを扱う場合、ファイルを一つのプロジェクトにまとめるか、分離したプロジェクトを使うか決めます。一つのプロジェクトならファイル間の確認が便利ですが、分離すれば意図しない混在を減らせます。-recursiveは、入れ子のフォルダーまで範囲に含める場合だけ使います。広すぎるパスは想定外のデータをインポートする可能性があります。

コマンド、Ghidraのリリース、Javaのバージョン、入力マニフェスト、スクリプトのリビジョン、終了ステータス、ログ、プロジェクトパス、想定外の出力ファイルを記録します。CIではログとレポートを保存し、ランチャーやpost-scriptがエラーを報告したら失敗にします。プロセスが正常終了しても、期待した関数や文字列がすべて見つかった証拠にはなりません。

隠れた状態を作らない

入力ディレクトリ、プロジェクトプロファイル、拡張機能、スクリプトのリビジョン、Ghidraのリリースが変わると、同じコマンドでも結論が変わることがあります。これらの境界をレポートの横に記録してください。

範囲を限定した再帰インポート./support/analyzeHeadless /srv/ghidra/projects BatchSet -import /srv/ghidra/samples -recursive -scriptPath /srv/ghidra/scripts -postScript export_summary.py
実行記録の例release=12.1.3 input_manifest=sha256.csv script=export_summary.py@abc123 project=BatchSet log=run-2026-09-16.log
出力を検証する

結果を読み、Ghidraで検証する

ヘッドレス実行後、プロジェクトを開く前に終了ステータスとログを確認します。ローダーのメッセージ、選択された言語やコンパイラー、解析の完了、スクリプト例外、スキップされたファイル、書き込み失敗を見ます。その後、GUIでコピーを開き、Listing、参照、Decompiler、シンボルなどで少数の結果を確認します。Ghidra検索ガイドDecompilerガイドも役立ちます。

レポートは出力物であって、それだけで証拠になるわけではありません。スクリプトが文字列を見つけなかった場合は、言語、範囲、APIオブジェクトを確認します。入力マニフェストと正確な実行記録を保存したプロジェクトデータと一緒に残してください。

症状最初の確認安全な次の手順
プログラムが表示されないインポートモード、パス、ローダー新しいプロジェクト名で1ファイルを実行する
スクリプトが見つからないスクリプトのパスとファイル名絶対パスのスクリプトディレクトリと最小スクリプトを使う
解析が途中で終わるログ、タイムアウト、メモリ、アナライザーのメッセージ1サンプルで再実行し、プロジェクトのコピーと比較する
GUIと出力が違うリリース、言語、オプション、スクリプトの段階同じプログラムと設定を両方で確認する
読み込んだプログラムのメモリ、命令、参照を表示する公式Ghidra CodeBrowser
公式CodeBrowserのスクリーンショット。ヘッドレスの要約1行だけでなく、アドレス単位のプログラム証拠でレポートを検証します。
適切な自動化を選ぶ

ヘッドレスアナライザー、Script Manager、PyGhidraの違い

ヘッドレスアナライザーはCLIジョブの境界です。Script Managerは、表示中のGhidraアプリケーション内でスクリプトを実行します。PyGhidraは外部のCPythonプロセスをGhidra APIへ接続します。同じ調査で組み合わせることはできますが、実行環境は異なります。

1つのプログラムを画面で確認するならGUI、繰り返し可能なインポートやプロジェクト処理ならヘッドレスアナライザー、外部Pythonプロセスが中心ならPyGhidraを選びます。

ツールの境界向いている用途主な注意点
ヘッドレスアナライザーCLIによる一括インポートとプロジェクト処理プロジェクト、リリース、スクリプト、ログを記録する
Script Manager表示中のアプリ内スクリプト現在のコンテキストとプロジェクトに依存する
PyGhidra外部CPythonによる自動化PythonとGhidraの互換性を確認する
ヘッドレスアナライザー FAQ

Ghidra ヘッドレスアナライザー FAQ

GhidraのanalyzeHeadlessはどこにありますか?

Ghidraのインストール先にあるsupport/ディレクトリにあります。WindowsはanalyzeHeadless.bat、LinuxとmacOSはシェルランチャーを使います。インストールしたリリースに対応するランチャーを選んでください。

-import と -process の違いは何ですか?

ファイルやディレクトリからプロジェクトを作成または補完する場合は-import、プログラムがすでにプロジェクトにあり、それを処理する場合は-processを使います。

GUIなしで多くのファイルを解析できますか?

できます。ヘッドレスアナライザーはディレクトリをインポートまたは処理でき、-recursiveなどのオプションで対象範囲を広げられます。最初は許可を得た小さなセットで試し、確認できるよう入力マニフェストを残してください。

analyzeHeadlessでスクリプトを実行できますか?

できます。インストールしたリリースが対応するscript path、pre-script、post-scriptのオプションを使います。スクリプトをバージョン管理し、コピーしたプロジェクトでテストし、ログとレポートをコマンド記録の横に保存します。

ヘッドレスアナライザーにはGhidraプロジェクトが必要ですか?

ランチャーにはプロジェクトの場所と名前を指定します。インポートジョブはプロジェクトデータを作成または補完でき、processジョブは既存のプログラムを前提にします。プロジェクトのパスは書き込み可能にし、アプリケーション本体とは分けてください。

ヘッドレスアナライザーはPyGhidraと同じですか?

同じではありません。ヘッドレスアナライザーはインポート、プロジェクト処理、Ghidraスクリプト向けのCLIランチャーです。PyGhidraは外部CPythonプロセスをGhidra APIへ接続します。必要な自動化の境界に合う方を選んでください。