拡張機能のpwndbgを使用している。
チートシート
情報参照
info
コマンド。i
で省略可能。
省略 | 説明 |
---|
i func | 関数の一覧 |
i var | 変数の一覧 |
i reg | レジスタの一覧 |
i proc all | プロセスのメモリマップ全体を俯瞰して |
i b | brakpointの一覧 |
i w | watchpointの一覧 |
breakpoints
コマンド | 説明 |
---|
b <line_num> | breakpointをline_num にセット |
b <func_name> | breakpointをfunc_name にセット |
i b | brakpointの一覧 |
disable <breakpoint_num> | 指定されたbreakpointを無効化する |
enable <breakpoint_num> | 指定されたbreakpointを有効化する |
delete <breakpoint_num> | 指定されたbreakpointを削除する |
delete | すべてのbreakpointを削除する |
watch <val_name> | watchpointをセット |
i watch | watchpointの一覧 |
一通りやってみる
1. サンプルプログラム
コンパイル
2. gdbに読み込ませる
シンボル情報がある場合(-q
でバナーを出さない)
シンボル情報がない場合
これ以降はシンボル情報がある場合(gdb ./overflow -q
)で進める
3. breakpoint
breakpointを設定すると、その行の前で一旦停止できる
line 8にbreakpointをセットする
関数copy_arg()
breakpointをセットする
関数main
にtemporary breakpointをセットする
条件がTRUEの場合に動作するbreakpointを作る
セットされたbreakpointの一覧
breakpointを無効化する(削除はしない)
breakpointを有効化する
breakpointをひとつ削除する
breakpointを全部削除する
watchpoint
watchpointを設定すると、その変数が変更された後で一旦停止できる
変数buffer
にwatchpointをセットする
セットされたwatchipointの一覧
References