デバッガによるx86プログラム解析入門【x64対応版】

概 要

デバッガは、プログラムの動作を解析し問題点を発見するツールです。用途は、パッケージソフトやオンラインソフトの脆弱性の検査、バグ修正や機能追加、PCゲームの裏技の解析、シェアウェアのクラック、マルウェアの動作解析など多岐にわたっています。本書は、OllyDbgというデバッガを使い、CやC++で開発されたx86系CPU向けの32ビットや64ビットWindowsアプリケーションを解析するための基礎知識と手順をわかりやすく解説します。

著者 Digital Travesia管理人 うさぴょん
価格 本体2400円(税別)
ISBN 978-4-7980-4205-3
発売日 2014/10/22
判型 A5
色数 1色
ページ数 352
CD/DVD
ダウンロード
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

Chapter 1 デバッガとは

1-1 デバッガの用途

1-2 デバッガの種類

1-3 代表的なデバッガ

1-4 機能の構成要素

1-5 デバッガと一般的なソフトウェアとの違い

1-6 デバッガの主な機能

1-7 デバッグ対象

1-8 デバッガの可能性

Chapter 2 デバッガと関連ツールを使用するために必要な基礎事項

2-1 はじめに

2-2 CPU が2 進数を使う理由

2-3 16 進数・リトルエンディアン

2-4 数値表現、データ型

2-5 マシン語、アセンブリ言語、C/C++ 言語

2-6 アセンブリ言語の基本的な知識

2-7 アセンブリ言語の主要な命令

2-8 スタックの仕組みとスタックフレーム

2-9 API 関数とWindows メッセージ

2-10 ネイティブAPI

2-11 PE ファイル

2-12 IAT とは

2-13 DLL とは

2-14 カーネルドライバとは

2-15 プロセスが実行される仕組み

2-16 プロセスとスレッド

2-17 プロセスメモリ

2-18 例外処理

2-19 各種資料の入手先

2-20 ブレークポイントの仕組み

2-21 ステップ実行やステップオーバー・ステップイン・ステップアウトの仕組み

2-22 一般的な解析手法

Chapter3 デバッガと関連ツール

3-1 フリーウェアで揃えるプログラム解析環境

3-2 OllyDbg と日本語化パッチとプラグイン(OllyDump 等)

3-3 ヘキサエディタ(バイナリエディタ)

3-4 プロセスメモリエディタ

3-5 逆アセンブラ

3-6 プロセスモニタリングツール(Process Monitor 等)

3-7 リソースエディタ

3-8 仮想マシン構築ソフト

3-9 パッカー判定ソフト

3-10 .NET Framework 対応アプリケーション用逆コンパイラ

Chapter4 デバッガでプログラムの実行処理を追いかける

4-1 OllyDbg の基本操作についての予備知識

4-2 OllyDbg の各ウィンドウについて

4-3 実行処理を追いかける上でどこに注目するか、何を知っておくべきか

4-4 メッセージボックスセオリーとメッセージトラップセオリー

4-5 演習用プログラムについて

4-6 デバッギー起動とアタッチおよびデタッチ

4-7 プロセスとスレッドの作成

4-8 エントリーポイント

4-9 ニーモニックの実行とEIP レジスタ

4-10 条件ジャンプ命令による条件分岐とフラグ

4-11 スタック使用状況の把握

4-12 プロセスメモリの使われ方

4-13 プログラムの処理の流れ

4-14 プログラムの処理の流れを変更してみる

4-15 ステータスフラグを変更する

4-16 ジャンプ命令を修正する

4-17 プロセスメモリ上のバイナリデータを変更する

4-18 わざと例外を起こしてみる

補足画像CPU ウィンドウの逆アセンブラペインでのポップアップメニュー

Chapter5 実践的な処理の変更例

5-1 実践的なプログラム解析

5-2 CD/DVD チェック

5-3 2 重起動チェック(その1)

5-4 2 重起動チェック(その2)

5-5 画面切り替えチェック

5-6 OllyDbg 起動チェック

5-7 デバッグ検出(API 関数)

5-8 デバッグ検出(SEH)

5-9 プロセスメモリ上とディスク上の違い

5-10 OllyDbg のバグについて

Chapter6 ゼロからはじめるデバッガ自作

6-1 プログラミング予備知識無しでも可能

6-2 デバッガの基本処理

6-3 対象OS と使用するコンパイラ

6-4 デバッグ特権や使用するAPI 関数

6-5 最小構成のデバッガを作成

6-6 初期デバッグイベント取得と表示

6-7 デバッグ出力文字列を取得してみる

6-8 レジスタの格納データやフラグの状況を取得する

6-9 INT 3 ブレークポイントの設定とブレーク

6-10 ステップ実行

6-11 デバッグレジスタを使ったブレークポイント

6-12 簡易プロセスメモリエディタの実装

6-13 逆アセンブラの実装

Chapter7 デバッガ対策

7-1 マルウェア解析の注意事項

7-2 基本的なデバッガ検出手法

7-3 パッカーとクリプター

7-4 UPX のアンパック例

7-5 ローダーがプログラム本体を復号して起動

7-6 プログラム自己書き換え

7-7 動的な復号と暗号化

7-8 コード難読化と問題点

7-9 .NET Framework 対応アプリケーション

7-10 確保したメモリエリアにコードを展開して実行

7-11 参照文字列の隠蔽

7-12 プロセスメモリ上でのデータ暗号化

Chapter8 デバッガに関する問題

8-1 デジタルミレニアム著作権法

8-2 ネットゲームがルートキットの技術を応用したプログラム解析対策を実装

8-3 ネットゲームは解析・改造すべきではない?

8-4 Sysinternals はセキュリティソフトでのルートキット技術の応用に否定的

8-5 デバッガ対策解除技術が販売されている

8-6 デバッガによる解析をトリガーとするロジックボム

8-7 Winny 裁判とその後

8-8 デバッガ側で悪用されているか否かを判断するのは技術的に不可能

8-9 解析する側と解析を防ぐ側

Chapter9 アセンブリ言語によるプログラミングの基礎289

9-1 概要

9-2 MASM32 やWinAsm Studio の入手とインストール

9-3 ソースコード記述形式の基礎

9-4 簡略記述を使用せずアセンブルコードをそのまま書いてみる

9-5 プロセスメモリパッチャーの製作

補足 インラインアセンブラと逆アセンブルコードリストの再利用

Chapter10 64 ビットアプリケーションの解析

10-1 はじめに

10-2 解析の基礎事項

10-3 解析参考資料と解析ツール

10-4 64 ビットアプリケーションの解析演習

Chapter11 情報セキュリティとプログラム解析

見過ごされる危険性

任意のコードとその実行

世界を良い方向へ導くために、自分ができること

Appendix 補遺

文字コード表

主要な命令とステータスフラグ一覧

主要なAPI 関数一覧(カテゴリ別)

有用な副読書

PR

秀和システム