おすすめ本

・『C言語ポインタ完全制覇 (標準プログラマーズライブラリ)』(前橋 和弥/技術評論社

「ポインタでつまづく」ほどの初心者段階は卒業しており、ポインタ配列、配列へのポインタ、多次元配列は「C言語ユーザー」として一応使えてはいるが、この記述がコンパイラにどう解釈されるか?という原理を問われると、ちょっと怪しいかも…な人向け。

「ポインタが理解できないから、この本で…」という人には難しいかもしれないですが、初心者向けの回りくどいたとえ話よりも、実装レベルで説明してくれた方が話が早い、という人にとっては、ポインタに開眼するきっかけになるかもしれません。もし新人の頃の自分に1冊本を渡せるなら、この本を渡したい。僕にとっては、「プログラミング言語の手のひらの上で踊らされている」レベルから脱するキッカケとなった本。

コアな部分に触れようとするとC言語は避けて通れないし、C言語に触れようとすると、何するにしても「ポインタと配列」は避けて通れないです。Cのソースコードを読みこなすのに、ポインタと配列まわりでモヤモヤしたものが残っていると、とても辛いですヨ(;;)。この本で、そのモヤモヤにケリをつけたいものです。

・『リンカ・ローダ実践開発テクニック―実行ファイルを作成するために必須の技術』(坂井 弘亮/CQ出版

ELF形式のオブジェクトファイルの内容を実装レベルで解き明かした、バイナリアンなら興奮する本です。コンパイル後のプログラムファイルをviで開くと文字化けして表示されるけど、あれは何なの?という素朴な疑問が氷解します。スタートアップルーチンからmain()が呼び出される時、argc/argvの値はどう渡されるのかなど、とにかく細かい!

正直、「Linkers & Loaders」より、僕はこちらを強くおすすめしたい。前述の「C言語ポインタ完全制覇」を読破した後に読むといいかもです。この本を読んで思ったのは、回りくどいたとえ話で解説されるよりも、最初から実装レベルで解説されたほうが、話が早いのだと思いました。

・『インテル® 64 および IA-32 アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル

逆解析をする上では、避けて通れない資料。はじめて目にした時は、その内容の濃さに引いてしまい、「自分にはまだ早すぎる」とそっと閉じましたが、逆アセンブルする際に何度も参照するうちに、少しずつ壁が崩れてきました。コツは、「自分がかろうじて理解できるところから読んでいく」ことと、「積極的にリファレンスとして活用する」ことです。Google検索もいいけど、この資料の該当部分にも目を通す習慣をつけると、徐々に慣れてくるようです。