●本書は、純粋なアセンブリ言語の技術解説書です。全416ページ、CD-ROM付き。データハウス刊、3,800円(+税)にて、7月20日に全国書店で発売されます。
●C言語など、各種のプログラミング経験のある方はもちろん、プログラミング知識の浅い初心者の方にも対応できるよう、アセンブラの基礎から具体的な解説を行っています。
●本書では、現在もっとも有名なアセンブラのひとつであるNASM(The Netwide Assembler)とGAS(GNU
Assembler)を中心に、アセンブラを利用した、Windows、Linuxアプリケーションの作成を、具体的な例を挙げながら解説していきます。
●OS(Operating System)作成の初歩的部分であるブートセクタ関連のプログラミングや、Linux環境でのアセンブラプログラミング解説はもちろん、MS-DOS上での16ビットアセンブラプログラミング、そしてWindows上での32ビットGUIアプリケーション開発まで、アセンブラを題材に幅広い内容を取り上げています。さらに、アセンブラを使ってのマシン語レベルでのexploit(shellcode)作成法やネットワークプログラミングについても言及しています。
●サーバへのHackingやソフトウェアのKrackingといった、アセンブリ言語を学ぶことで初めて理解できる攻撃プログラムの仕組みやリバースエンジニアリングについても、本書で触れていきます。
●内容など詳細については、上記リンクを参考にしてください、目次は制作の関係上、一部異なる箇所もありますのでご了承ください。
●内容や各種情報は随時、追加していきます。サイト掲載情報は予告なく変更、削除する場合がありますのでご了承ください。
1章:アセンブリ言語を学ぶ前に
コンピュータの基礎知識とアセンブリ言語
はじめに
コンピュータとは
CPU
メモリ
I/O
プログラミング言語とは
アセンブリ言語とアセンブラ
アセンブリ言語の処理速度
マシン語とは
2進数と16進数とコンピュータの関係
電卓を使って16進数へ変換する
ビットとバイト
バイナリエディタ
レジスタとは
x86系CPUの進化
8080
8086
80386
アセンブリ言語の記述法
さいごに
2章:16ビットアセンブラプログラミング
8086アセンブラプログラミング
はじめに
ようこそ16ビットの世界へ
凡用レジスタ
加算と減算
加算
減算
インクリメントとデクリメント
ジャンプ命令
フラグレジスタと条件分岐
乗算と除算
乗算(mul命令)
除算(div命令)
ループ命令
フラグ操作
命令ポインタ
スタックと特殊凡用レジスタ
サブルーチン
論理演算
論理積
論理和
排他的論理和
論理否定
シフト
論理シフト
算術シフト
ローテート
CFフラグを通さないローテート
CFフラグを通すローテート
セグメントとオフセット
メモリ操作
システムコール(文字の出力)
さいごに
16ビットNASMプログラミング
はじめに
インストール
コンパイル
マシン語
マシン語とアセンブリ言語
マシン語でプログラミング
文字列の入出力
文字列の出力
文字列の入力
ファイル操作
ファイルを開く
ファイルを読み込む
ファイルを閉じる
ファイルの書き込み
ファイルの作成
ファイルの削除
ファイルポインタ
標準入出力とファイルの関係
コマンドラインのデータ取得
引数の取得
実行ファイルパスの取得
typeコマンドの作成
アクセスカウンタ
アクセスカウンタの作成
HTTPサーバの設定
アクセスカウンタの実行
ファイル膨張ソフトの作成
さいごに
BIOSを利用したプログラミング
はじめに
エミュレータとは
Bochsのダウンロード
Bochsのインストール
Bochsの設定
DISPLAY_LIBRARY
MEGS
FLOPPYAとFLOPPYB
ATA[0-3]-MASTER, ATA[0-3]-SLAVE
BOOT
PARPORT1
文字の表示
BIOSを利用したプログラミング
Hello World!
GNUアセンブラでの開発
512バイト以上のプログラムの作成
さいごに
3章:32ビットプログラミング
GNUアセンブラプログラミング
はじめに
GDBの使い方
GDBとは
デバッグの流れ
コマンドの説明
Hello World!
数値カウントプログラム
引数の取得
自作関数の作成
argcの取得
argvの取得
ファイル操作
fopenとfclose
fgetsとfputs
アクセスカウンタの作成
処理の流れ
作成
BBSの作成
処理の流れ
作成
ネットワークプログラミング
クライアントプログラム作成
サーバプログラム作成
システムコールを直接利用するプログラミング
システムコールでネットワークプログラミング
socketcall
プログラミング
バッファオーバーフロー
root権限を与えるプログラム
セキュリティホールが存在するプログラム
スタック
実行すべきマシン語の作成
exploitの作成
大文字へ変換するターゲットプログラム
さいごに
Windowsアセンブラプログラミング
はじめに
リンカ
Hello World!
hello32.exeをデバッガで解析
ダイアログボックス表示
リソースコンパイラ(Resource Compiler)
リソーススクリプトのコンパイル
ダイアログボックスの表示
ウィンドウ表示
簡単なアプリケーションの作成
リソーススクリプト
プログラム作成
少し実用的なアプリケーション
クリップボードログ取得プログラム
おおまかな仕様
処理の流れ
プログラム作成
実行結果
さいごに
Appendix
命令一覧
転送命令
論理演算命令
算術演算命令
比較命令
ジャンプ、ループ命令
スタック関連の命令
シフト、ローテート命令
OllyDbgのインストールと使い方
OllyDbgとは
ダウンロード
インストール
日本語化
プログラムの簡単なデバッグ
MASM(Microsoft assembler)
インラインアセンブラ
インラインアセンブラとは
Windows
Linux
Linux環境でNASMを使う
ネット上で入手できるアセンブラとリンカ
アセンブラ
リンカ
アセンブリ言語に関して参考になるWEBページ
入門講座
資料
ASCII文字コード表
16進数対応表
|