AIDEMOIRE

【アイデモワール】

"DEBUG HACKS"を読んで

Debug Hacks -デバッグを極めるテクニック&ツール

Debug Hacks -デバッグを極めるテクニック&ツール

久しぶりに“面白かった”という感想の本でした。ハッカーを目指すのであれば必読入門書でしょうか。

gdb等のデバッグ用のコマンドの詳しい使い方が書いてあります。実は昔、UNIXのadb(assembler debugger)とかsdb(source/symbolic debugger)を使っていたので、書いてある事は大体わかりましたが、adbなどと比べると機能的にもかなり進化しているので勉強になりました(最近はadbと言うとAndroid debuggerの様ですが....)。
adbやgdbは、カーネルやドライバの開発でもしなければ使うことは無いでしょう。私はカーネルやドライバの開発をしていたわけではないので、趣味的に使っていただけでした。adbを使うような趣味と言えばハッキングしかありません。逆アセンブルして、データやコードを強制的に書き換えてしまいます。jump命令をnopに変えたりとか、メッセージを変えたりとか。

さて、このDEBUG HACKSはケーススタディ方式でgdb等のコアな使い方を解説しています。入門参考書としては大変役に立つのではないかと思います。ただ、この手の技術は読めばすぐにマスターできるものではなく、実際にHACKしてみないと習得は難しいものです。私も久しぶりにgdbを使ってLinuxカーネルでもハックしてみようかしらんと思いました。

特にx68やamd64のスタックフレームおよび関数呼び出し時のレジスタの使い方が詳しく書かれています。それを理解した上でトレースバックを使ったデバッグに関して色々なケース スタディで解説しています。ただし、マシン語もしくはアセンブラレベルでスタック フレームがどの様な役割を持っていて、どの様に使われるかと言った一般的な知識がないと難解になってしまうかもしれません。その辺りも随分丁寧に書かれていますが、主眼はコマンドの使い方でありコンピュータ解説書ではありませんから仕方ないところですが。
gdbの他にもstrace、crash、kprobeやsystemtapの使い方なども具体例と共に紹介されています。straceも随分昔からあるコマンドで結構お世話になったのですが、その他のコマンドについては使ったことが無かったので、これも参考になりました。

ただ、複数の執筆者が分担して書いているので仕方ないと思いますが、いきなり説明無しで用語が出くるところが何か所がありました。で、読み進めていくと随分先の所で説明があったりします。この辺を上手く構成すれば読みやすくなると思いました。まぁ、書いている人には当たり前の用語なのでしょうが、普段使っていない人には???と思ってしまいます。

題名は「DEBUG HACKS」ですが、別に“ハッカー”養成本ではありません。ここでいうHACKは「プログラミングを楽しむ」とか「凝らした問題解決方法」というHACK本来の意味で使っているのかと思います。つまり日本語で題名をつければ「デバッグを楽しもう!」でしょう。ちなみにALCで検索すると「(コンピューターシステムに)不正侵入する」と言う訳しか載っていませでした。こちらは正確にはクラックですが。

もちろん、私はプログラミングを楽しむハッカーですがクラッカーではありません。