Spickzettel für nützliche GDB-Befehle

Für wen ist das?



1) Reverse Engineer für Anfänger, die die Besonderheiten des Reverse Engineering kennen und einen Debugger wie GDB lernen möchten







2) als Hinweis für diejenigen, die ständig mit IDA, Ghidra oder einem anderen leistungsstarken und zuverlässigen Tool arbeiten, aber unter bestimmten Umständen ist es einfacher und schneller, das Problem mit GDB zu lösen, und ich möchte nicht wirklich in die offizielle Dokumentation gehen und mich noch einmal an alles erinnern







Grundlegende Befehle



Laufen



Allgemeine Syntax zur Auswahl einer ausführbaren Datei für die Analyse







gdb program_name
      
      





Starten Sie die Programmausführung







run | r
      
      





Tritt gdbserver bei







target remote host:port
      
      





Schließen Sie sich dem Prozess an und trennen Sie ihn







attach PID / detach
      
      





Beenden Sie 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
      
      





Zeigen Sie das Flaggenregister an und ändern Sie es







flags
flags -Flag_name +Flag_name
      
      





Hilfe zum Auffinden von Sicherheitslücken in Formatzeichenfolgen (Festlegen von Haltepunkten, Informationen zu gefundenen Funktionen)







format-string-helper
      
      





Ein Muster erstellen und finden







pattern create 128
pattern search 0x61616167
pattern search $rbp
      
      





Suchen Sie nach Zeichenfolgen nach Muster







search-pattern pattern
      
      





Patchen







patch byte/word/dword/qword address value
      
      





Drucken eines Arrays in einem Format, das zum Kopieren in Python-Code geeignet ist. Der Parameter B muss 16.08.32/64 sein, l steuert die Länge des Arrays







Beispiel







print-format -b 64 -l 1  $rsp
      
      





Suche nach Shellcode nach Muster







shellcode search pattern
shellcode get shellcode_number
      
      





Xorim-Werte im Speicher und in den Registern







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






All Articles