名著として話題の「HACKING:美しき策謀-脆弱性攻撃の理論と実際」を読んでる途中。コンパイラとしてgccが使われてるけど、gccのインラインアセンブラは扱い難いシロモノであり、ちょっとサラッと流しすぎじゃないかとオモタ。この本のレベルから言えば、とりあえず最適化オプションを付けないことくらいの注意書きくらいは入れとくべきかもしれない。gccではインラインアセンブラで書いたコードまで最適化の対象になるので前後の文脈によって意図しないコードを吐くのはよくあることだったりするのだ。33ページのプログラムでespレジスタの内容を取得する部分、私ならこう書く。
__asm__("movl %%esp,%0":"=r"(esp));
関数にするとスタックフレームが作られるかもしれないので私ならマクロにする。この場合はNOP Sledを使っているので少々のズレは吸収されて関係なくなってしまうけど、ハマり易そうな気がする部分だ。
- 作者: Jon Erickson,村上雅章
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/06/20
- メディア: 単行本(ソフトカバー)
- 購入: 7人 クリック: 180回
- この商品を含むブログ (70件) を見る