Cheat Sheet untuk Perintah GDB yang Berguna

Untuk siapa ini?



1) reverse engineer pemula yang mengetahui kekhasan reverse engineering dan ingin mempelajari debugger seperti GDB







2) sebagai petunjuk bagi mereka yang terus-menerus bekerja dengan IDA, Ghidra atau alat canggih dan andal lainnya, tetapi karena keadaan tertentu, lebih mudah dan lebih cepat untuk menyelesaikan masalah menggunakan GDB, dan saya tidak benar-benar ingin masuk ke dokumentasi resmi dan mengingat semuanya lagi







Perintah dasar



Lari



Sintaks umum untuk memilih yang dapat dieksekusi untuk analisis







gdb program_name
      
      





Mulai eksekusi program







run | r
      
      





Bergabunglah dengan gdbserver







target remote host:port
      
      





Bergabunglah dengan proses, putuskan sambungan darinya







attach PID / detach
      
      





Keluar dari 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
      
      





Lihat register bendera dan ubah







flags
flags -Flag_name +Flag_name
      
      





Bantuan untuk menemukan kerentanan format string (mengatur breakpoints padanya, informasi tentang fungsi yang ditemukan)







format-string-helper
      
      





Membuat pola dan menemukannya







pattern create 128
pattern search 0x61616167
pattern search $rbp
      
      





Telusuri string berdasarkan pola







search-pattern pattern
      
      





Menambal







patch byte/word/dword/qword address value
      
      





Mencetak array dalam format yang nyaman untuk disalin dalam kode python. Parameter B harus 8/16/32/64, l mengontrol panjang array







Contoh







print-format -b 64 -l 1  $rsp
      
      





Untuk mencari kode shell berdasarkan pola







shellcode search pattern
shellcode get shellcode_number
      
      





Nilai Xorim dalam memori dan register







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






All Articles