アップデート一覧に戻る
New releaseAug 19, 2026

ghidra Ghidra_12.1.3_build

Ghidraは、ソフトウェアリバースエンジニアリング(SRE)フレームワークです。

共有

Dockerized Ghidra

ビルド

Ghidra リリースのルートディレクトリから、以下のコマンドを実行します。

./docker/build-docker-image.sh

これにより、Ghidra のリリースバージョンに対応するタグを持つ ghidra Docker イメージがビルドされます。

MODE 環境変数

Ghidra Docker コンテナは、以下の MODE の実行をサポートしています:

  • gui
  • headless
  • ghidra-server
  • bsim
  • bsim-server
  • pyghidra

MODE 環境変数は、実行する Ghidra のエントリポイントを指定します。

コンテナ起動時に entrypoint.sh スクリプトが実行されます。

コンテナの設定

コンテナの設定は、他の Docker コンテナと同様に行います。 ボリュームのマウント、環境変数の設定、ポートのコンテナからホストへのマッピングなどが可能です。 設定手順は、コンテナを起動する MODE によって大きく異なります。

コンテナ内の Ghidra のベースディレクトリは /ghidra にあります。 ファイル、設定などの Ghidra のデフォルトの場所はすべてその中にあります。 Ghidra はコンテナ内でユーザー ghidra(uid 1001、guid 1001)として実行されます。

ghidra ユーザーは、コンテナ内の以下のディレクトリにのみアクセス権限があります:

  • /ghidra
  • /home/ghidra

docker run コマンドで引数が渡されない場合、実行される MODE に対応するコマンドラインインターフェース(CLI)が使用法を表示します。

ローカルボリュームのコンテナへのマッピング

コンテナ内のボリュームは、グループ ID 1001 のユーザーがアクセスできない場合、権限の問題が発生する可能性があります。

コンテナのデフォルトの uid と guid は 1001:1001 です。コンテナにマッピングされるボリュームは、この uid/guid がアクセス可能である必要があります。

ホストマシンのユーザーをホストのグループ 1001 に追加すると、コンテナで使用されるボリュームの管理に役立ちます。 これは Linux で sudo usermod -aG 1001 <user> を実行することで簡単に行えます。

ヘッドレスモードの例

docker run \
    --env MODE=headless \
    --rm \
    --volume /path/to/myproject:/home/ghidra/myproject \
    --volume /path/to/mybinary:/home/ghidra/mybinary \
    ghidra/ghidra:<version> \
    /home/ghidra/myproject programFolder -import /home/ghidra/mybinary

これを一行ずつ分解すると:

  • docker run は、イメージ ghidra/ghidra<:<version> を使用して docker コンテナを起動します
  • --env MODE=headless は、コンテナ内の環境変数 MODE を値 headless に設定します
  • --rm はコマンド完了後にコンテナを削除します
  • --volume /path/to/myproject:/home/ghidra/myproject は、ホスト上のローカルボリューム /path/to/myproject をコンテナ内の /home/ghidra/myproject にマウントします
  • --volume /path/to/mybinary:/home/ghidra/mybinary は、ホスト上のローカルボリューム /path/to/mybinary をコンテナ内の /home/ghidra/mybinary にマウントします
  • ghidra/ghidra:<version> は Docker イメージの完全な参照であり、ghidra/ghidra はイメージのグループと名前、<version> はタグです。
  • /home/ghidra/myproject programFolder -import /home/ghidra/mybinary は、Ghidra のヘッドレスアナライザのコマンドラインインターフェースに渡される引数です。

引数が渡されない場合、ヘッドレスアナライザの使用法が表示されます。

ホスト上の /path/to/myproject は、guid 1001rwx パーミッションでアクセス可能である必要があります。

GUI モードの例

Docker コンテナ内で Ghidra のグラフィカルユーザーインターフェース(GUI)を実行することは、推奨される Ghidra の実行方法ではありません。 GUI は Docker 化されたアプリケーションの典型的なユースケースではありません。

docker run \
    --env MODE=gui \
    -it \
    --rm \
    --net host \
    --env DISPLAY \
    --volume "$HOME/.Xauthority:/home/ghidra/.Xauthority" \
    ghidra/ghidra:<version>

このモードでは、コンテナは X11 転送に依存して GUI を表示します。X11 の設定は異なる場合がありますが、この場合、 ホストの Xauthority ファイルがコンテナにマウントされ、コンテナはホストのネットワークを使用するように設定され、DISPLAY 環境変数がコンテナに渡されます。これにより、GUI をホストマシンのディスプレイに転送できます。バイナリを含むボリュームや ghidra プロジェクト用のボリュームも コンテナにマウントする必要があります。

ホストの .Xauthority ファイルは適切なパーミッション(グループ :1001rw グループパーミッションを割り当て)を持っている必要があります。

Ghidra サーバーモードの例

docker run \
    --env MODE=ghidra-server \
    --rm \
    -it \
    --volume /path/to/my/repositories:/ghidra/repositories \
    --volume /path/to/my/configs/server.conf:/ghidra/server/server.conf \
    -p 13100:13100 \
    -p 13101:13101 \
    -p 13102:13102 \
    ghidra/ghidra:<version>

リポジトリやユーザーを保存し、サーバーを設定するために、サーバーコンテナにボリュームをマウントする必要があります。

svrAdmin を使用するには、実行中の ghidra サーバーコンテナに exec して(docker exec -it <container-id> bash)コンテナ内で bash シェルを取得します。 コンテナに exec した後、Ghidra サーバーの管理と運用は、コンテナ化されていない環境と同じです。

コンテナを停止するには、docker stop <container-id> コマンドを実行します。

注: ホストから Docker コンテナにマップするポートは一致している必要があります。server.conf ファイル内で -p<port> オプションを使用して、デフォルトのベースサーバーポート(例: 13100)を変更できます。

BSIM サーバーモードの例

docker run \
    --env MODE=bsim-server \
    --rm \
    -it \
    --volume /path/to/my/datadir:/ghidra/bsim_datadir \
    -p 5432:5432 \
    ghidra/ghidra:<version> \
    /ghidra/bsim_datadir

/ghidra/bsim_datadir は、コンテナ内で bsim のデータを保存するために使用されるディレクトリです。コンテナ上で他のディレクトリを使用することもできますが、 ホストマシン上のフォルダが適切なパーミッション(グループ :1001 に割り当て)を持っていることを確認してください。

この例では、単に bsim サーバーを起動します。bsim サーバーの設定とデータの投入は、起動後にコンテナ内で ghidra サーバーの管理と同様の方法で行うことができます。 管理者は実行中の bsim サーバーコンテナに exec し(docker exec -it <container-id> bash)、 コンテナに exec した後、Bsim サーバーの管理と運用はコンテナ化されていない環境と同じです。

コンテナを停止するには、docker stop <container-id> コマンドを実行します。

BSIM CLI モードの例

docker run \
		--env MODE=bsim \
		--rm \
		 -it \
		 ghidra/ghidra:<version> \
		 generatesigs ghidra://ghidrasvr/demo /home/ghidra \
			 --bsim postgresql://bsimsvr/demo \
			 --commit --overwrite \
			 --user ghidra

この例では、bsim CLI を使用して ghidrasvr でホストされている ghidra サーバーに接続し、 その ghidra サーバーの demo リポジトリのシグネチャを生成して /home/ghidra に保存し、 その後、bsimsvr でホストされている BSIM サーバーの demo データベースにシグネチャをコミットします。

Pyghidra GUI モードの例

Docker コンテナ内で Ghidra のグラフィカルユーザーインターフェース(GUI)を実行することは、推奨される Ghidra の実行方法ではありません。 GUI は Docker 化されたアプリケーションの典型的なユースケースではありません。

docker run \
    --env MODE=pyghidra \
    -it \
    --rm \
    --net host \
    --env DISPLAY \
    --volume="$HOME/.Xauthority:/home/ghidra/.Xauthority:rw" \
    ghidra/ghidra:<version> -c

このモードでは、コンテナは X11 転送に依存して GUI を表示します。X11 の設定は異なる場合がありますが、この場合、 ホストの Xauthority ファイルがコンテナにマウントされ、コンテナはホストのネットワークを使用するように設定され、DISPLAY 環境変数がコンテナに渡されます。これにより、GUI をホストマシンのディスプレイに転送できます。バイナリを含むボリュームや ghidra プロジェクト用のボリュームも コンテナにマウントする必要があります。

ホストの .Xauthority ファイルは適切なパーミッション(:1001 が所有し、rw グループパーミッション)を持っている必要があります。

Pyghidra ヘッドレスモードの例

docker run \
    --env MODE=pyghidra \
    --rm \
    --volume /path/to/myproject:/myproject \
    --volume /path/to/mybinary:/mybinary \
    ghidra/ghidra:<version> -H \
    /myproject programFolder -import /mybinary

pyghidra ヘッドレスアナライザに引数が渡されない場合、ヘッドレスアナライザと同様にヘルプメニューが表示されます。

このユースケースはヘッドレスモードの例と非常に似ていますが、Ghidra スクリプトに python3 を利用できるという利点があります。

繰り返しになりますが、この例では、権限の問題を回避するために、/path/to/myproject/path/to/mybinary に適切なパーミッションとグループ割り当てが必要です。

カテゴリ