マスタリング Ghidra
マスタリングギドラ
基礎から学ぶリバースエンジニアリング完全マニュアル
- 著者:
- Chris Eagle / Kara Nance / 石川 朝久 / 中島 将太 / 小竹 泰一 / 原 弘明(クリス イーグル / カラ ナンス / イシカワ トモヒサ / ナカジマ ショウタ / コタケ タイチ / ハラ ヒロアキ)
- 出版社:
- オライリー・ジャパン
- 出版日:
- 2022年05月27日頃
- ISBN:
- 9784873119922
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
ソフトウェアリバースエンジニアリングツールを徹底解説!
ソフトウェアリバースエンジニアリングツール「Ghidra」とリバースエンジニアリングの解説本です。ソフトウェア・ハードウェア製品の構造を分析し、動作やソースコードなどの技術情報を調査し明らかにするリバースエンジニアリングは、NSA (米国家安全保障局) が公開した Ghidra の登場により敷居が低くなったことで興味を持つ人が増えています。本書では Ghidra の丁寧な解説に加え、リバースエンジニアリングの基礎を紹介します。
技書の森解説
『マスタリング Ghidra』 (Chris Eagle、Kara Nance 著、石川 朝久 監訳、中島 将太、小竹 泰一、原 弘明 訳、オライリー・ジャパン、2022 年 5 月刊) は、NSA (米国家安全保障局) が公開したソフトウェアリバースエンジニアリングツール Ghidra の総合的な解説書です。原書は The Ghidra Book: The Definitive Guide で、副題は「基礎から学ぶリバースエンジニアリング完全マニュアル」です。版元は、リバースエンジニアリングの基礎から Ghidra の高度なテクニックまでを紹介し、リバースエンジニアリングの初心者から経験豊富な実務者まで学べる本と案内しています。
全 5 部 23 章の構成、ディスアセンブルの原理からバイナリ差分まで
本文は 5 部 23 章に付録 2 本が続きます。第 I 部「リバースエンジニアリング入門」は、第 1 章「ディスアセンブル入門」で線形掃引と再帰下降という 2 つのアルゴリズムを説明し、第 2 章「リバースエンジニアリングツール」で file、objdump、strings などの周辺ツールを、第 3 章「Ghidra との邂逅」でライセンスとインストールを扱います。第 II 部「Ghidra の基本的な使い方」は第 4 章から第 10 章までで、CodeBrowser の各ウィンドウ、スタックフレーム、名前とコメントによる注釈、データの型と構造体、C++ で書かれたプログラム、相互参照、グラフを順に取り上げます。第 III 部「Ghidra を使いこなす方法」は Ghidra Server による共同作業、カスタマイズと機能拡張、スクリプティング、Eclipse と GhidraDev プラグイン、ヘッドレス・モードへ進みます。第 IV 部「さらなる深みへ」はローダー、プロセッサモジュールと SLEIGH、デコンパイラー、コンパイラーごとの違いを、第 V 部「実世界のアプリケーションへの応用」は第 21 章「難読化されたコードの解析」、第 22 章「バイナリのパッチ」、第 23 章「バイナリ差分とバージョントラッキング」を扱います。巻末は付録 A「IDA ユーザ向けの Ghidra」と付録 B「デバッガ」です。
名前も型も失われたバイナリから意味を取り戻す難しさ
ソースコードが手元に無いプログラムの 脆弱性 や挙動を調べる作業の難しさは、命令列を読めること自体よりも、その命令列が何をしているのかという意味を取り戻すところにあります。コンパイラー は機械語を生成する過程で変数名や型、構造体の境界、ループや分岐の書き方といった情報を落とし、最適化によって元のコードとは形の違う命令列を作ります。ディスアセンブラが命令を復元し、デコンパイラーが C に近い疑似コードを示しても、関数や変数に意味のある名前を付け、データの型を当てはめ、どこから呼ばれているかをたどる作業は人の手に残ります。解析の速さは、この積み重ねのうち繰り返しの部分をどれだけ道具に任せられるかで大きく変わります。Ghidra はスクリプト、ヘッドレス・モードでの一括解析、ローダーやプロセッサモジュールの追加といった拡張の手段を備えており、本書では第 III 部と第 IV 部がそれらを扱います。
Ghidra を学ぶ前提知識とリリースの時点
リバースエンジニアリングの経験は前提にせず、第 I 部で原理から説明が始まります。一方で、x86 のアセンブリの基本と、C 言語のポインターや構造体、関数呼び出しの仕組みに触れたことがあると、スタックフレームや構造体の章を読み進めやすくなります。第 14 章のスクリプトは Java と Python のどちらでも書けますが、第 15 章以降の Eclipse 連携や拡張モジュールの開発では Java のクラスとインタフェースを読み書きすることになります。Ghidra は NSA の公式リポジトリで Apache License 2.0 のもとで公開されており、2026 年 10 月 8 日時点で公式リポジトリが公開している直近のリリースは 2026 年 9 月 21 日の Ghidra 12.1.4 です。本書は 2022 年 5 月の刊行なので、手元の版で画面や設定項目の細部を確かめるときは、公式のリリースノートを合わせて見ておくと確実です。
なお、本書は解析の道具と手法の本であり、マルウェアの検体の入手方法や隔離環境の構築、特定のマルウェアの系統を解説する本ではありません。そうした題材を中心に学びたい人は、別の本と組み合わせる必要があります。逆に、マルウェア解析や脆弱性の分析、ソフトウェアの相互運用性の調査に関わる人、IDA などの別の道具から Ghidra へ移りたい人、解析を自分のスクリプトで自動化したい人にとっては、基本操作から拡張、応用までを 1 冊で通せる構成です。第 1 章から順に手を動かし、必要になった段階で第 IV 部と第 V 部へ進む読み方をすると、投じた時間を実務の解析に回収しやすい一冊です。
言及した記事 (2 件)
この本に興味がある方におすすめ
関連する本
関連記事
IT 資格の参考書と技術書の使い分けガイド - 基本情報 / 応用情報で消耗しない選び方
基本情報技術者 / 応用情報技術者などの IT 資格対策本と、体系理解のための技術書の使い分けを解説。年度版の読み方、試験別の定番参考書の系統、資格勉強を「使える知識」につなげる読み方をまとめた選書ガイドです。
コードレビューが上手い人は何を読んでいるのか
的確なコードレビューができる人は、指摘を裏づける語彙と判断基準を持っています。レビュー力を支える 3 つの読書領域と、レビューに直結する知識の身につけ方を解説します。
技術書のサンプルコードが動かないときの対処法
技術書のサンプルコードがエラーで動かない原因と、バージョン違い / 環境差異 / 誤植への対処の手順を解説します。