#66 GDB
バイナリの海に潜っています。GDBの使い方をまとめました。
インストール
$ sudo apt install gdb
pedaも入れましょう。
https://github.com/longld/peda
$ git clone https://github.com/longld/peda.git
$ echo "source peda/peda.py" >> ~/.gdbinit
起動
実行ファイルを指定してGDBの起動
$ gdb <executable>
GDBを起動後、実行ファイルを指定
$ gdb
gdb> file <executable>
ブレークポイント
main関数にブレークポイントを設置
gdb> b main
メモリ0x00000000にブレークポイントを設置
gdb> b *0x00000000
ブレークポイントを確認
gdb> info breakpoints
ブレークポイントを削除
gdb> delete breakpoints
実行
引数を渡して実行
gdb> r <args>
Pythonを実行して引数として渡す
gdb> r $(python3 -c "print('a')")
Pythonを実行して標準入力に渡す
gdb> r < <(python3 -c "print('a')")
ステップイン
gdb> s
ステップオーバー
gdb> n
次のブレークポイントまで
gdb> c
レジスタ・メモリ
レジスタの値を確認
gdb> info registers
メモリ0x00000000から32word分の値を確認
gdb> x /32xw 0x00000000
まとめ
コマンドはまだまだいっぱいあります。ターミナルで動作するシンプルなデバッガですが、実行ファイルの調査には十分すぎます。使いこなせるようがんばります!
EOF