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