内容より、その本質を応用する方に圧倒的な広がりを持つ本
★★★★★
デバッガーというのは、次の3つから成り立っている:
1. OSが提供する Aというプロセスの動作状況をBというプロセスから制御する仕組み
2. 1 で得たバイト列情報を意味のあるデータに分析する仕組み
3. 1,2 の組み合わせをインターフェースとして人間に見せる仕組み
見ての通り、1以外は別にコンパイル言語で作る必要はない。じゃぁ、Pythonでも作れるじゃないか…というのがPyDbg。1,2,3 は基本的にコンパイル言語で作っているが 3 のインターフェースにPythonから叩ける仕組みを用意したよ、というのが Immunity Debugger.
この本はこの2種類のデバッガーを、Pythonから駆動することによって、いかに強力な「テスト」環境を構築できるか、その例を延々述べた本。
この本は書いてある内容よりも、その考え方を応用した場合の多様さにポイントがあると思う。
例えば、古いバージョンのソフトの既知のバグを検出する方法をPythonで書いたDBを用意する。古い版のソフトの core dump ファイルに対して、DB上のスクリプトをかたっぱしから実行してみる。するとその core dump が既知のバグ故に生じたのか、未知のバグ故に生じたのか、自動判別するシステムが作れる。
例えば、一定のバグパターン…例えばバッファオーバーフロー…を追跡する事を考える。動的に作られるバッファもバッファ作成コード部に break point を置いて自動検出し、書き換えが起こったら前後を調べて overflow が起こっていないか調査しながら、実行を進めていく。これは人間がやったら地獄を見るが、機械にやらせるならみるみるうちにバグを見つけることができるだろう。
このような応用を考えながら読んでいくと、この本が示している世界の広さと、考え方の強力さを理解してもらえると思う。
プログラマーに超お勧め。