見出し画像

#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


この記事が気に入ったらサポートをしてみませんか?