このGhidraチュートリアルで学ぶこと
基本手順は、プロジェクト作成、ファイル読み込み、アーキテクチャ確認、自動解析、関数の特定、アセンブリと疑似コードの比較です。
このチュートリアルは静的解析を中心に進めます。自作バイナリ、オープンソースのサンプル、学習用クラックミ、または調査を許可された練習プログラムを使い、対象を実行する必要はありません。
- 基本手順は、プロジェクト作成、ファイル読み込み、アーキテクチャ確認、自動解析、関数の特定、アセンブリと疑似コードの比較です。
- 許可されたファイルを静的に調べ、実習中に対象ファイルを実行しないでください。
- CodeBrowser + Listing + Decompiler
- XRefs + Function Graph
安全な練習環境を準備する
自作プログラム、オープンソース、許可された学習用課題を使います。不明なファイルは隔離した仮想マシンで扱い、静的解析中に実行しません。
最初の演習では、パスワード文字列を確認する小さなCプログラムをコンパイルするか、学習用に作られた合法的なクラックミを選びます。解析前にハッシュを計算し、元ファイルを保存します。
自作プログラム、オープンソース、許可された学習用課題を使います。不明なファイルは隔離した仮想マシンで扱い、静的解析中に実行しません。
プロジェクト作成・読み込み・自動解析
非共有プロジェクトを作成し、形式、プロセッサー、エンディアン、コンパイラー設定を確認してから自動解析を実行します。
検出された形式、プロセッサ、言語、エンディアン、コンパイラ仕様を確認します。一般的なPEとELFは既定値で動くことが多い一方、raw firmwareや珍しいアーキテクチャでは手動確認が必要です。
- 1
プロジェクト
非共有プロジェクトを作成し、形式、プロセッサー、エンディアン、コンパイラー設定を確認してから自動解析を実行します。
- 2
読み込み
形式、プロセッサ、言語、エンディアン、コンパイラを確認し、raw firmwareや珍しいアーキテクチャは手動で確認します。
- 3
解析
非共有プロジェクトを作成し、形式、プロセッサー、エンディアン、コンパイラー設定を確認してから自動解析を実行します。

CodeBrowser、Listing、シンボルを理解する
Listingはアドレス、バイト、命令を表示し、Decompilerは高水準の解釈を表示します。Symbol Tree、文字列、検索を組み合わせます。
分かりやすい文字列から始め、参照を確認して呼び出し元の関数へ進みます。エントリポイントから全命令を読むより通常速い方法です。
| 画面 | 用途 | 操作 |
|---|---|---|
| Listing | 命令 | 確認 |
| Decompiler | 疑似コード | 解釈 |
| Symbol Tree | シンボル | 移動 |
| Defined Strings | 文字列 | 手掛かりを探す |
Ghidraのデコンパイラを正しく使う
疑似コードは理解を速めますが、重要な判断はListingで確認します。根拠に基づいて関数名、変数名、型、コメントを改善します。
根拠が得られたら結果を改善します。関数と変数の名前、型、構造体、コメントを追加し、修正ごとに次の解析へ文脈を渡します。
- 1
手掛かりを探す
疑似コードは理解を速めますが、重要な判断はListingで確認します。根拠に基づいて関数名、変数名、型、コメントを改善します。
- 2
参照を追う
根拠に基づいて名前と型を設定し、構造体とコメントを追加して文脈を補います。
- 3
根拠を確認
疑似コードは理解を速めますが、重要な判断はListingで確認します。根拠に基づいて関数名、変数名、型、コメントを改善します。

参照と関数グラフを追う
XRefsで使用箇所、呼び出し元、参照先を確認し、Function Graphで分岐、ループ、別経路を可視化します。
Function Graphは基本ブロックと分岐を制御フローの地図にします。入れ子の条件やループを確認し、Decompilerで各経路を説明します。

30分の最初の解析練習
成功・失敗メッセージを探し、参照をたどり、判定関数を特定して、重要な条件を根拠とともに説明します。
重要な分岐にブックマークを付けてプロジェクトを保存します。目的は元ソースの完全復元ではなく、文字列、参照、関数、条件、結論をつなぐ再現可能な証拠記録です。
- 0-5
- 5-12
- 12-22
- 22-30
初心者によくあるミス
疑似コードを元ソースだと決めつけず、アーキテクチャを確認し、解析完了を待ち、不明なファイルを実行しないでください。
すべてのアナライザーを有効にせず、未知のバイナリを実行せず、推測した型を事実とみなさないでください。命令や参照が不自然なら正しいアーキテクチャで再インポートします。
| 問題 | リスク | 改善策 |
|---|---|---|
| 疑似コード | 誤った判断 | 確認 |
| アーキテクチャ | 誤った解析 | 再読み込み |
| 不明なファイル | 安全上のリスク | 隔離環境 |
次に学ぶことと公式資料
小さな合法サンプルで同じ流れを繰り返し、公式ドキュメントとPyGhidraガイドへ進みます。 GhidraDocs.
画像はNSAのGhidra公式リポジトリに掲載されたものです。2026年8月22日に確認した最新版は、2026年8月18日公開のGhidra 12.1.3です。次は Ghidra デコンパイラ ガイドを読み、反復作業は PyGhidra で自動化できます。
Ghidraの使い方 FAQ
Ghidraは安全ですか?
公式GitHubリリースから入手し、不明なファイルは隔離環境で実行せずに解析してください。
初心者はデバッガーから始めるべきですか?
最初は静的解析で関数、参照、制御フローの操作を覚えてください。
元のソースコードを完全に復元できますか?
できません。デコンパイラは有用な解釈を生成しますが、元ソースそのものではありません。
Ghidraを更新する方法は?
新しい公式版を別フォルダーに展開し、拡張機能の互換性を確認してください。
どのファイルを解析できますか?
自作、許可済み、オープンソース、学習用のファイルだけを使用してください。