なんかいろいろこんぴゅーたかんけいのなぐりがき

なんか勉強しているこんぴゅーた関係のことのメモやそれ以外のことを書こうかなあ...

logs

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C11

チャプタ11はwindowsに対してexploitする方法について説明されている。

Windowsのexploitはlinuxよりも少し複雑になるらしい。

このチャプタではコンパイラとしてcl.exeを使う。これはVisualStudioをインストールすればついてくるようだ。
コンパイルするときは、 
cl.exe foo.c
といった具合でやるとfoo.exeで生成される。
また、このチャプタではコンパイルオプションとして、
/Ziと/GS-を使うようにしている。

/Ziはデバッガに情報付加
/GS-はcanaryというコンパイラが生成するプロテクトを使わないようにする

なので実際にコンパイルするときは
cl /Zi /GS- foo.c
といった感じでコンパイルした。

コンパイルの仕方を一通り覚えたら、次にデバッガをMicrosoftのホームページからダウンロードした。
そうしたらデバッガの使い方の説明に入るのだが、その前にsysmbolという関数に関係がある情報について登録しておかないと、詳しくデバッグできないらしいので_NT_SYMBOL_PATHを設定して、必要に応じてsymbolについての情報をダウンロードしてくるようにした。

これが完了したら実際に簡単コードを書いてそれに対して先にダウンロードしたデバッガツール群の中のひとつである、cdb.exeを使ってデバッグをしてみる。このデバッガはgdbとコマンドが似ているように違っていて、gdbのように一筋縄ではいかない。gdbとの目だった相違としてcdbはbreakpoint毎にレジスタの情報を勝手に出力する。さらに次に実行される命令のアセンブリが表示される。他にもbreakpointの設定にワイルドカードを使える等の特徴があった。今回の読んだ部分でよくでてきたcdbのコマンドには、

dv /V :ローカル変数の表示
dt var:変数varの情報を表示
db 0xaddr:指定アドレスaddr周辺を16進数とそれに対応するASCIIコードで出力
.formats num:数字num を2,8,10,16進数のそれぞれの場合で表示し、他にもなんか表示する



続く。
スポンサーサイト

トラックバックURL

http://ilovevim.blog42.fc2.com/tb.php/97-f7f9aea6

この記事へのトラックバック

この記事へのコメント

コメント投稿フォーム

Paging Navigation

Navigations, etc.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。