便利なGDBコマンドのチートシート

誰のためですか?



1)リバースエンジニアリングの特性を知っていて、GDBのようなデバッガーを学びたい初心者のリバースエンジニア







2)IDA、Ghidra、またはその他の強力で信頼性の高いツールを常に使用している人へのヒントとして、ただし特定の状況により、GDBを使用して問題を解決する方が簡単かつ迅速であり、公式ドキュメントにアクセスしてすべてをもう一度覚えておきたくありません。







基本的なコマンド



ランニング



分析する実行可能ファイルを選択するための一般的な構文







gdb program_name
      
      





プログラムの実行を開始します







run | r
      
      





gdbserverに参加する







target remote host:port
      
      





プロセスに参加し、プロセスから切断します







attach PID / detach
      
      





gdbを終了します







quit | q
CTRL + D
      
      













set disassembly-flavor intel/att
      
      





,







info file 
      
      











info functions | i func
      
      





asm-







disas func_name
disas address 
      
      





( -g3 gcc) ,







list func_name
      
      













set args
show args
      
      











info proc mappings
      
      











registers
      
      













step | s
      
      











next | n
      
      





,







until | u number_of_list_string
until | u *func_name+offset
until | u *address
      
      





, ( , )







info args
info locals
info frame
      
      











info threads
thread number
      
      





breakpoints







b func_name
b *func_name+offset
b *address
      
      





, , breakpoint







info break
disable/enable breakpoint_number
delete breakpoint_number
ignore breakpoint_number n  //        n 
      
      





breakpoint-







continue | c
      
      











telescope
telescope $rsp+64
      
      





x, "/"







x/i - 
x/x - hex
x/s - 
x/a - 
      
      











x/b - 8-bit
x/h - 16-bit
x/w - 32-bit
x/g - 64-bit
      
      











x/64bx
x/i $pc
      
      











run $(python -c "print('A'*32 + '\xde\xad')")
run $(echo "asdf\\xde\xad")
      
      











run <<< $(python -c "print('A1'*3)")
run <<< $(echo "asdf\xde\xad")
      
      





Gdb


gdb







gdbserver host:port program
      
      





Reverse Debug


, , CFG .. , gdb Reverse Debug, .







, gdb, reverse debug







record
      
      











reverse-step
reverse-next
      
      







( )







dump memory output_file start_addr end_addr
      
      







, display







display/5i $pc
display/g $rax
display/g $rbx
display/g $rcx
      
      





GEF



gdb gef, , , . .







aslr, /







aslr
aslr on/off
      
      





ASLR, Canary, PIE ..







checksec
      
      











heap chunks
      
      





,







canary
      
      





, info proc mappings







vmmap
      
      





フラグのレジスタを表示し、それらを変更します







flags
flags -Flag_name +Flag_name
      
      





フォーマット文字列の脆弱性を見つけるためのヘルプ(ブレークポイントの設定、見つかった関数に関する情報)







format-string-helper
      
      





パターンを作成して見つける







pattern create 128
pattern search 0x61616167
pattern search $rbp
      
      





パターンで文字列を検索







search-pattern pattern
      
      





パッチ







patch byte/word/dword/qword address value
      
      





pythonコードでコピーするのに便利な形式で配列を印刷します。Bパラメータは8/16/32/64である必要があり、lはアレイの長さを制御します













print-format -b 64 -l 1  $rsp
      
      





パターンでシェルコードを検索するには







shellcode search pattern
shellcode get shellcode_number
      
      





メモリとレジスタのXorim値







xor display address/register size xor_key
xor patch address/register size xor_key
      
      






All Articles