pwndbgの主なコマンド一覧
help:コマンドの説明確認
apropos:キーワードに関連するコマンド検索
start:main関数など解析開始地点で実行停止
cyclic/cyclic_find:バイナリのクラッシュパターン生成・解析
telescope (tele):メモリの中身をポインタ追跡しつつ表示
disassemble(disas、disass):アセンブリコード表示
elfheader:ELFファイルのヘッダ情報表示
got:Global Offset Table表示
heap、bins、vis_heap_chunks:ヒープ構造やchunkの中身表示
pie:PIEバイナリのアドレス計算
info(i):レジスタや関数など各種情報表示
break(b)、delete、enable、disable:ブレークポイント管理
watch:ウォッチポイント作成
x/xn/xs:メモリ参照表示(数値/文字列対応)
p:現在の変数値、式の評価
set:レジスタ値や変数値変更
continue(c):続行
next(n)、step(s)、finish(fin):ステップ実行関連
各コマンドの具体例と使い方
1. help
help:pwndbgで利用可能な全コマンド表示
help heap:heap関連コマンドの説明を表示
2. start
start:mainに一発でブレーク(プログラム開始時の解析に便利)
3. cyclic, cyclic_find
cyclic 100:100バイトのクラッシュパターン生成(BOF調査用)
cyclic_find gaab:EIP/RIPに刺さった値のオフセット探索
4. telescope
telescope $rsp:スタック先頭から有効ポインタを辿りつつ表示(ROP解析などに便利)
5. disassemble
disassemble main:main関数のアセンブリ表示
disas 0x400610:任意アドレスからのコード分解
6. got, elfheader
got:ライブラリ関数の解決状態を一覧表示(GOT Overwrite調査)
elfheader:ELF情報分析
7. heap/bins/vis_heap_chunks
heap:ヒープ領域のchunk表示
bins:arenaバケットの状態可視化
vis_heap_chunks:chunkをグラフィカルに俯瞰(heap exploit時に有用)
8. pie
pie 0x1234:PIEバイナリのオフセット→実アドレス変換
9. info
info reg:レジスタ一覧(EAX,ESP,RIPなど解析基礎)
info func:関数一覧
info b:現状のブレークポイント確認
10. break
break *0x400610:アドレス指定ブレーク
break main:関数名指定ブレーク
delete:すべてのブレーク削除
11. watch
watch (int)0x601050:指定アドレスの値変更を監視
12. x/p/set/continue/step
x/20x $rsp:$rsp以降20個の値を16進で表示
x/20s $rdx:$rdx以降20個を文字列表示
p (char*)($rsp+0x10):式評価
set $eax=0:レジスタ値直接変更
continue:デバッグ継続
next:C/C++の次ステートへ
step:1命令ずつ
finish:関数復帰まで一気に実行
特にCTFで頻繁に使う例
バッファオーバーフロー解析時
cyclic 100でペイロード生成、クラッシュ時のEIP/RIP値をcyclic_findで解析
ROP解析やヒープ解析
telescope $rspやheap系コマンドで内部状態把握
PIEバイナリやGOT/Heap Exploit
pie・got・bins・vis_heap_chunksの組み合わせ
本質的データ調査
info reg・x・pで値やメモリチェック
ブレーク管理
breakやdeleteを適切にセット