いまどきのアセンブラの教科書
第一章 CPUはどうして動くのか
アセンブラによる解析
   アセンブラによる解析で行えること
   [Column]今アセンブラが使われる局面1:3Dゲーム
ハードウェアの仕組みを知る
   パソコンはどうして動くのか
   CPUの仕組み
   飛躍的な進歩を続けるCPU
   3つの論理回路
   CPUが行う処理の流れ
高級言語、JAVA、Cより優れているアセンブラ
   CPUとプログラム
   低級言語と高級言語
   [Column]今アセンブラが使われる局面2:携帯電話
   アセンブラの持つ優位性
   [Column]CPUを介さないDMAによる周辺機器の認識
   高級言語と比べてのアセンブラの欠点
   [Column]今アセンブラが使われる局面3:PICなどのプログラマブルロジック
   パソコンのちょっとした歴史
   [Column]CISCとRISC
 
 
第二章 実行ファイルの構造を理解する
Windowsのリソースと、プログラムのリソースを理解する
   リソースって何?
   解析除けを行っているプログラム
リソースを解析してみる
   Resource Hackerを使ったリソースの解析
Resource Hacker徹底解説
   Resource Hackerの準備と使い方
実践! Resource Hackerで海外ツールを日本語化する
   便利な海外ツールを日本語化してより便利に使う
バイナリエディタで海外ツールを日本語化する
   リソースエディタで日本語化できない場合は
日本語化した実行ファイルの日本語化パッチを作る
   日本語化パッチを作成してネット上で公開しよう
日本語化しても文字化けしてしまう場合の対処法
   ディスアセンブルで文字化けの原因を探る


第三章 メモリの構造を解析しよう
解析をするためには、メモリの構造を知ることが大事
   メモリと呼ばれるもの
   バイナリデータ
   メモリが扱うデータの仕組み
   メモリの解析で得られるデータとは
   [Column]マックバイナリ形式について
メモリ上に展開されているデータを改造する
   豊富な検索機能を有効利用「TSearch」完全解説
   リアルタイム検索を行う必要性は?
   検索機能と絞り込み機能
   AutoHack機能でプログラムコードにパッチを当てる
プロセスをアタッチしてオリジナルのメモリ監視ツールを作る
   調べたメモリアドレスをさらに活用する
 
 
第四章 超初級アセンブラプログラミング講座
プログラム改造には、基礎知識が必要
   アセンブラプログラミングについて知る
   アセンブリ言語 = アセンブラ?
   アセンブリ言語の特長
アセンブラプログラミングを始めてみよう
   アセンブラプログラミングのために必要なもの
   NASMとは
   NASMのインストール
   NASMの簡単な操作解説
レジスタとは
各レジスタの特徴
   汎用レジスタ
   インデックスレジスタ
   セグメントレジスタ
   特殊レジスタ
   フラグレジスタ
   32bitレジスタ
   レジスタとメモリと即値を扱う 〜アドレッシング〜
   割り込み処理
   スタック処理
よく使うアセンブラ命令
   mov命令
   cmp命令/test命令
   jmp系命令
   push命令/pop命令
   call命令/ret命令
   add命令/sub命令/mul命令/div命令
   ラベル命令
   nop命令
   int命令
NASMを使った超初級COMプログラミング
   ソースコードの作成
      COM形式の実行ファイル
もう1歩進んだアセンブラプログラミング
   メインループ
   呼び出し
   論理演算
   サブルーチンdispcode
   条件分岐について
   演算について
      システムコール
はじめてのウインドウプログラム
   WindowsAPIって何ですか
   APIを使う上での利点と欠点
NASMでAPIを使う
   ALinkのインストール
   その次のウインドウプログラム
   [Column]リトルエンディアン
統合環境NaGoA
   インストール
   NaGoAを使ってみよう
ちょっとしたウインドウプログラム
   ディスアセンブラを使ってみよう
   C言語を組み合わせて効率的な開発を
   [Column]xor bx, bx と mov bx,0h


第五章 プログラム改造のためにデバッガーを活用する
アセンブラデバッガーでできること
   デバッグとはそもそも何なのか?
アセンブラデバッガーで勉強するための準備
   OllyDbgを使った解析
OllyDbg完全操作マニュアル
   各ウインドウの機能と役割
ブレークポイント機能を活用する
   ブレークポイントの種類と利用方法
便利な機能を使いこなす
   まだある便利な機能を徹底的に使いこなす
   目的のアドレスを効率よく見つけ出す


第六章 解析に行き詰まったときに見るTips
目的にあわせて解析方法を紹介
   プログラム解析を行う際のアプローチの仕方

No.01 CGモードなどのおまけ情報を有効にする
No.02 解析したいソフトを作成したソフトを探る
No.03 パラメータの位置を探る
No.04 パラメータの値を操作している命令を見つける
No.05 判断しにくいパラメータを突き止める
No.06 見えている情報から探す
No.07 参照したい値のあるアドレスが変わるもの
No.08 参照したい値が複数件ヒットする
No.09 1つの情報を2つの値で管理している場合
No.10 CDチェックの機能を無効化させる
No.11 OEPを探る
No.12 単純な文字列の比較
No.13 1・2・4文字ずつの比較
No.14 文字列を数値に変換して利用する
No.15 文字列のチェックに四則演算が用いられる場合
No.16 内部に定義されている文字列から比較対照となる文字列を生成している場合
No.17 桁数が固定されている文字列の比較箇所を見つける
No.18 エラーで表示されるダイアログボックスの文字列を追う
No.19 特定の範囲の合計で比較する場合と固定文字列 + 任意文字列の組み合わせ
No.20 時間を取得して比較を行っている命令を見つけ出す
No.21 ナグウインドウの削除
No.22 表示される文字列を削除
No.23 「トレース実行」を使った解析法
No.24 「スタック」上で管理される値
No.25 圧縮された実行ファイルの圧縮を解除する
No.26 特定の文字列から別の文字列を生成している場合
No.27 複数の入力ボックスに入力された文字列の比較
No.28 計算で求められる文字列
No.29 ドングルチェックを外す
No.30 デバッガーを検知すると強制終了する