gdbの最小限コマンド
続き→http://cookies.hatenablog.jp/entry/2013/06/28/231846
ImmunityDebuggerに最近はまった僕だけど、
Windowsで動かないELFとかだとどうしようもないのでgdbをするしかなく。
CTFをいくつかして以来、いくらか覚えたが、忘れそうなので記録。
とりあえずこれだけ覚えておけば生きていけるんじゃなかろうか。
習うより慣れよで使っているから、間違って覚えてるものもたぶんある。
AT&T慣れしてる人には当たり前でも、
Intelな僕には初めてのことも多いので、その辺のことも書く。
コマンド一覧
h | ヘルプ。カテゴリに分かれてます。 |
r | 最初から実行する。実行の引数とかつけれる。 |
c | ブレークポイントとかから離れて、処理を継続する。 |
b | ブレークポイント設定。関数名とか引数につける。 |
n | 今いる関数からでるまで継続。 |
ni | アセンブリの一命令実行。 |
i r | レジスタの内容表示。 |
i b | ブレークポイントの表示。 |
set | メモリ書き込み。 |
p | いろいろ表示。 |
x | メモリ内容表示。 |
printは変数とかレジスタの内容を表示してくれて、
x系はアドレスから中身を表示する。
こんなもん?
x系
オプション足せる。
w | 4バイト |
f | float(?) |
c | 文字 |
x | 16進数 |
s | 文字列 |
x/wみたいにして使う。
一回オプションつけると、以後そのままになる。
x/5wとかすると5つ4バイト表示してくれるし、
x/10sだと10文字列。(\x00が10個現れるまで)
式の表記法
レジスタには$つける。$eax,$al,$eip,$eflags。
16進数にはちゃんと0xつけよう。
breakpoint設定時、引数に関数名を渡すが、*の後にアドレスでブレークできる。
setでメモリに直書き込みするときは型を書いてやらねばならない。しかしやり方忘れた。
いまんとここれでなんとかなってる。
ならなくなったら覚えてく。