GDB メモ

最終更新日時 (UTC): 2026-07-06 13:22

個人的によく使うコマンドをメモ

なにかあれば、随時更新予定


GDBの起動

gdb ./program

ブレークポイントのセット

b *0x80482D8

main関数にブレークポイントをセット

b main

ブレークポイントの削除 (ブレークポイントの番号は”i b”コマンドで確認)

d [ブレークポイントの番号]

ブレークポイントの無効化

disable [ブレークポイントの番号]

実行

r

入力値をファイルから読み込んで実行

# create file with input data
python2 -c "print 'A'*40 + '\x41\x41\x41\x41\x41\x41\x00\x00'" > input.bin

# launch GDB and feed the file as an input
gdb ./program 
r < input.bin

ステップオーバー実行

ni

ステップイン実行

si

次のブレークポイントまで動作を実行

c

レジスタの値を読み出す

例:eaxレジスタの値を読み出す

p $eax

レジスタに値をセットする

例:eaxレジスタに1584452044という値をセットする

set $eax = 1584452044

メモリの内容を文字列として読み出す

例:ebpレジスタから-78の位置にあるアドレスの内容を文字列として読み出す

x/s $ebp-0x4e

任意のアドレス上の値を読み出す

x 0xdeadbeef

ASLRの無効化

set disable-randomization on

ASLRの有効化

set disable-randomization off

アセンブリ言語の記法をIntel記法に切り替える (デフォルトはAT&T記法)

set disassembly-flavor intel

アセンブラ画面を立ち上げる

layout asm

プログラムを引数付きでデバッグする

gdb --args ./program "put your arg here"

gdb-pedaのインストール

Kali linuxにgdb-pedaをインストールする場合。

sudo apt install gdb-peda

通常ならgdb-pedaのインストール後にGDBを起動すると自動的にgdb-pedaが読み込まれる。 (GDBのプロンプトがgdb-peda$になっていればgdb-pedaがロードされている)

もしgdb-pedaがロードされない場合は、.gdbinitファイルにpeda.pyのパスを追加する。

# locate the path to peda.py
find / -name peda.py 2> /dev/null

# add the path to peda.py to .gdbinit
echo "source /usr/share/gdb-peda/peda.py" >> ~/.gdbinit

参考

https://cs.brown.edu/courses/cs033/docs/guides/gdb.pdf

Leave a Reply

Your email address will not be published. Required fields are marked *


The reCAPTCHA verification period has expired. Please reload the page.