Ghidra を使うと、ソースコードのない実行ファイルを開いて、機械語を読みやすい形に戻せます。練習には、自分で書いてコンパイルした小さなプログラムを使うと、答え合わせができて安全です。
この記事は、C などで簡単なプログラムを書いたことがあり、コンパイルした後の姿を見てみたい人に向けています。読み終えると、次のことができるようになります。
- Ghidra をインストールして起動する
- 自分でコンパイルしたプログラムを取り込み、自動解析にかける
- 逆コンパイル結果と元のソースコードを見比べる
Ghidra でできること
Ghidra は、米国国家安全保障局(NSA)の研究部門が作り、オープンソースで公開しているリバースエンジニアリングの道具一式です。公式 README には、主な機能として逆アセンブル、アセンブル、逆コンパイル、グラフ表示、スクリプトが挙げられています。Windows、macOS、Linux 向けの実行ファイルを扱え、多くの CPU の命令セットとファイル形式に対応しています。
画面から操作するのが基本ですが、コマンドラインから一括で解析するヘッドレスモードもあります。Java や Python で独自のスクリプトや拡張機能を書くこともできます。
必要なもの
Getting Started(Ghidra 12.2 時点)に書かれている条件は次のとおりです。
| 項目 | 内容 |
|---|---|
| 対応 OS | Windows 10(ビルド 1809 以降)、Linux、macOS 10.13 以降。32 ビット OS は非推奨 |
| Java | JDK 25(64 ビット)。無料の LTS 版として Adoptium Temurin と Amazon Corretto が案内されています |
| メモリ・ディスク | RAM 4 GB、本体用に 1 GB |
| Python 3 | 3.9〜3.15。デバッガーや PyGhidra を使うときに必要です |
安全な試し方:自分のプログラムを解析する
- JDK 25(64 ビット)をインストールします。
- 公式のリリースページの「Assets」から、
ghidra_<バージョン>_PUBLIC_<日付>.zipという名前のファイルを入手します。「Source Code」と書かれたファイルは本体ではないので選びません。 - zip を好きな場所に展開します。インストーラーはなく、管理者権限も要りません。古い版の上に重ねて展開しないでください。
- 展開したフォルダで、Windows なら
ghidraRun.bat、Linux と macOS なら./ghidraRunを実行します。JDK が見つからないときは、JDK のフォルダの場所を聞かれます。 - 練習用に、文字列を表示するだけの小さな C プログラムなどを自分で書き、コンパイルしておきます。
- Ghidra の画面で を選び、プロジェクトを作ります。
- でコンパイルしたファイルを取り込みます。ファイル形式は、たいてい初期値のままで構いません。
- 取り込んだファイルを開くと CodeBrowser という画面が立ち上がり、自動解析をするか聞かれます。そのまま解析させます。
- Symbol Tree の関数の一覧から
mainなどを選ぶと、Decompiler の画面に C 言語風の結果が出ます。元のソースと見比べてみましょう。
慣れてきたら、CTF の練習問題など、解析してよいと明記された教材に進むとよいでしょう。
主な画面と機能
CodeBrowser は、初期状態で次の画面を並べて表示します。
| 画面 | 見られるもの |
|---|---|
| Listing | 逆アセンブルした命令とデータ |
| Decompiler | 選んだ関数を C 言語風に戻した結果 |
| Symbol Tree | 関数名・ラベルなどの一覧 |
| Program Tree | ファイル内のセクションの並び |
| Data Type Manager | 構造体などのデータ型 |
自動解析は、後から でもやり直せます。プログラムに埋め込まれた文字列を探す機能もあり、どこでメッセージを表示しているかを手がかりに読み進められます。
注意点
- 他人が作ったソフトウェアを解析する前に、利用規約や使用許諾契約を確認してください。リバースエンジニアリングを禁じている製品があります。著作権法などの法律にも注意が必要です。判断に迷う場合は、自分のプログラムと解析してよい教材だけを使ってください。
- 出どころの分からない実行ファイルを解析するときは、誤って実行しないよう、普段使いのパソコンとは分けた環境を使いましょう。
- 公式 README は、一部の版に既知の脆弱性があると警告しています。使う前に公式のセキュリティアドバイザリを確認し、新しい版を使ってください。
- 本体は公式の GitHub リリースページから入手してください。
- macOS では初回起動時に、署名のない部品が Gatekeeper で隔離されることがあります。対処方法は Getting Started の Known Issues にあります。
次に読む
出典
- 公式リポジトリ README(インストール手順)github.com/NationalSecurityAgency/ghidra/blob/master/README.md
- Getting Started(対応 OS・必要環境・起動方法)github.com/NationalSecurityAgency/ghidra/blob/master/GhidraDocs/GettingStarted.md
- リリース:Ghidra 12.2github.com/NationalSecurityAgency/ghidra/releases/tag/Ghidra_12.2_build
- 公式の入門講座資料(Introduction to Ghidra Student Guide)github.com/NationalSecurityAgency/ghidra/blob/master/GhidraDocs/GhidraClass/Beginner/Introduction_to_Ghidra_Student_Guide.html
- セキュリティアドバイザリgithub.com/NationalSecurityAgency/ghidra/security/advisories
- ライセンス(Apache License 2.0)github.com/NationalSecurityAgency/ghidra/blob/master/LICENSE
確認日 2026-10-24
似たツール
MobSF
影響範囲 手元だけAndroid や iOS のアプリを読み込んで、危ない設定や権限、コードの問題を一覧にするモバイルアプリ診断ツール。ブラウザから操作します。
- 用途
- 診断・監査
- 形式
- Web サービス
- 難易度
- 中級
- ライセンス
- 条件つきGPL-3.0
- 分類
- リバースエンジニアリング/脆弱性スキャン
Wireshark
影響範囲 外に届くネットワークを流れるパケットを記録し、中身をプロトコルごとに分解して見せるパケットアナライザー。
- 用途
- 学習
- 形式
- デスクトップアプリ
- 難易度
- 初級
- ライセンス
- 条件つきGPL-2.0
- 分類
- ネットワーク/フォレンジック