実践バイナリ解析 バイナリ計装、解析、逆アセンブリのための Linux ツールの作り方(ジッセンバイナリカイセキ バイナリケイソウ、カイセキ、ギャクアセンブリノタメノリナックスツールノツクリカタ)
OS- 著者:
- Dennis Andriesse/株式会社クイープ/遠藤美代子(デニース アンドリーセ/カブシキガイシャクイープ エンドウミヨコ)
- 出版社:
- ドワンゴ
- 出版日:
- 2022年01月29日頃
- ISBN:
- 9784048931007
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
バイナリ解析とは、バイナリプログラムとそれに含まれているマシンコードやデータの性質を解析する科学と技術のことだ。セキュリティの脆弱性を狙う攻撃やマルウェアなど、悪意をもつソフトウェアに対処するには、バイナリプログラムの本当の性質を突き止める、そのプログラムが実際に実行することを突き止める必要がある。
本書は、バイナリプログラムの基礎知識、静的解析や動的解析といったバイナリ解析の基本から、ソースプログラムがなくてもバイナリプログラムの内容を書き換えるバイナリ計装といった高度な手法まで、リバースエンジニアリングの範囲を超えて実践的に解説する。
セキュリティエンジニアやセキュリティ研究者、ハッカーやペネトレーションテストの担当者、リバースエンジニア、マルウェアアナリスト、そしてコンピュータサイエンスの学生など、バイナリ解析に興味をもつすべての人を対象とした、最も魅力的で最も手ごわいテーマであるバイナリ解析入門の決定版である。
第 I 部 バイナリフォーマット
第 1 章 バイナリを解剖する
第 2 章 ELF フォーマット
第 3 章 入門:PE フォーマット
第 4 章 libbfd を使ってバイナリローダーを作成する
第 II 部 バイナリ解析の基礎
第 5 章 Linux での基本的なバイナリ解析
第 6 章 逆アセンブリとバイナリ解析の基礎
第 7 章 ELF にコードを注入する
第 III 部 高度なバイナリ解析
第 8 章 逆アセンブリのカスタマイズ
第 9 章 バイナリ計装
第 10 章 動的テイント解析
第 11 章 libdft を使った実用的な動的テイント解析
第 12 章 シンボリック実行
第 13 章 Triton を使ったシンボリック実行
第 IV 部 付録
付録 A 速習:x86 アセンブリ
付録 B libelf を使って PT_NOTE を上書きする
付録 C バイナリ解析ツール
付録 D 参考文献
技書の森解説
ソースコードが手に入らない実行ファイルの動きを突き止め、必要なら書き換える。この技術を、既製ツールの操作ではなく解析ツールそのものを自作しながら習得させるのが本書『実践バイナリ解析 バイナリ計装、解析、逆アセンブリのための Linux ツールの作り方』です。原題は Practical Binary Analysis で、著者は Dennis Andriesse 。日本語版は株式会社クイープと遠藤美代子の翻訳でドワンゴから 2022 年 1 月に刊行されました (発売 = KADOKAWA) 。
マルウェア対策研究の最前線にいる著者
著者の経歴が本書の性格をよく表しています。版元の著者紹介によれば、 Andriesse はシステム / ネットワークセキュリティの博士号を持ち、 ROP などの制御フローハイジャック攻撃を阻止する制御フロー整合性システム PathArmor の主要コントリビュータの一人で、 GameOver Zeus P2P ボットネットの撲滅にも協力した人物です。つまり本書の内容は、マルウェア対策や攻撃防御の研究最前線で実際に使われてきた手法の体系化であり、机上の教科書ではありません。
全 4 部の構成: ELF 解剖からシンボリック実行へ
構成は全 4 部です。第 I 部はバイナリフォーマットで、 ELF の構造を解剖し、 PE フォーマットにも入門し、 libbfd を使ってバイナリローダーを自作します。第 II 部は Linux での基本的なバイナリ解析と逆アセンブリの基礎、そして ELF へのコード注入。第 III 部が本書の核心で、逆アセンブリのカスタマイズ、実行中のプログラムに解析コードを差し込むバイナリ計装、 libdft を使った動的テイント解析、 Triton を使ったシンボリック実行へと進みます。付録には x86 アセンブリの速習やバイナリ解析ツールのカタログが付き、足場に不安がある読者への配慮もあります。
逆アセンブリの限界という技術背景
技術背景を少し補うと、バイナリ解析が難しい根本理由は、コンパイル の過程で型情報や変数名が失われ、機械語の列だけからコードとデータを完全に区別することが原理的にできない点にあります。逆アセンブラの出力は常に近似であり、難読化やアンチ解析を仕込んだバイナリは静的な読解だけでは追い切れません。そこで実行しながら挙動を観察する動的解析、データの流れを追跡するテイント解析、入力を記号のまま扱って実行経路を式として解くシンボリック実行が積み上げられてきました。本書はこの階層を、ツールを使う側でなく作る側の視点で貫通させる構成で、 IDA Pro や Ghidra のような逆アセンブラが内部で何をしているのかを説明できるレベルの理解に読者を引き上げようとします。
必要な前提知識と向き不向き
前提として C 言語 の読み書き、 Linux のコマンドライン操作、 x86 アセンブリの初歩的な読解力が求められます。逆に言えば、 GUI の逆アセンブラの操作手順を手早く覚えたい人や、 Windows の PE 形式の解析を主目的にする人には向きません。 PE は第 3 章の入門にとどまり、実習の主戦場はあくまで Linux と ELF です。
CTF のリバースエンジニアリング問題を解けるようになりたい人、マルウェア解析や 脆弱性調査 の実務・研究へ進みたい人にとって、断片的な技の寄せ集めではなく解析技術の全体像を一冊で貫いて学べる本は貴重です。読み通せば、既製ツールのブラックボックスが透けて見えるようになり、解析対象に合わせた専用ツールを自分で組む選択肢が手に入ります。腰を据えてバイナリ解析を武器にしたいエンジニアなら、値段以上の基礎体力が残る一冊です。
言及 Qiita 記事 (1 件)
この本に興味がある方におすすめ
この本に関連
関連記事
セキュリティ本ガイド - Web 開発者が読むべき技術書の選び方
Web セキュリティの基礎から実践まで学べる技術書の選び方マトリクスと、読了後にやるべき 3 つのアクションを紹介します。
AWS 本の選び方 - 全体像 / 構築 / 設計 / 運用 / セキュリティの 5 視点
AWS を学ぶ技術書の選び方を「全体像 / 構築 / 設計 / 運用 / セキュリティ」の 5 視点で整理。公式ドキュメントと本の役割分担、資格対策書の位置づけまで、2026 年 8 月時点の定番書で AWS 独学のルートを解説します。
バグを生むのは知識不足ではなく想像力不足である
バグの多くは、コードを書いた時点で「こういうケースもありうる」と想像できなかったことが原因です。想像力を鍛える読書法と、エッジケースへの感度を高める方法を解説します。
関連用語
エンコーディングとシリアライゼーション
データを転送 / 保存可能な形式に変換する手法の総称
エンディアン
2 バイト以上のデータをメモリやファイルに格納する際の、バイトの並び順を定める規約
Base64
バイナリデータを ASCII テキストに変換するエンコーディング方式で、メールや JSON でのバイナリ転送に使われる
SAML
企業の ID プロバイダーとサービスプロバイダー間でシングルサインオンを実現する XML ベースの認証プロトコル
Unicode
世界中の文字を統一的に表現するための文字コード規格
レスポンシブデザイン
画面サイズに応じてレイアウトを自動調整し、あらゆるデバイスで最適な表示を実現する手法