Aide-mémoire pour les commandes GDB utiles

C'est pour qui?



1) des rétro-ingénieurs débutants qui connaissent les particularités de la rétro-ingénierie et veulent apprendre un débogueur comme GDB







2) comme un indice pour ceux qui travaillent constamment avec IDA, Ghidra ou tout autre outil puissant et fiable, mais en raison de certaines circonstances, il est plus facile et plus rapide de résoudre le problème en utilisant GDB, et je ne veux pas vraiment entrer dans la documentation officielle et me souvenir de tout à nouveau







Commandes de base



Fonctionnement



Syntaxe générale pour sélectionner un exécutable à analyser







gdb program_name
      
      





Lancer l'exécution du programme







run | r
      
      





Rejoignez gdbserver







target remote host:port
      
      





Rejoignez le processus, déconnectez-vous







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
      
      





Consultez le registre des drapeaux et changez-les







flags
flags -Flag_name +Flag_name
      
      





Aide pour trouver les vulnérabilités des chaînes de format (définition de points d'arrêt sur celles-ci, informations sur les fonctions trouvées)







format-string-helper
      
      





Créer un motif et le trouver







pattern create 128
pattern search 0x61616167
pattern search $rbp
      
      





Rechercher des chaînes par motif







search-pattern pattern
      
      





Patcher







patch byte/word/dword/qword address value
      
      





Impression d'un tableau dans un format pratique pour la copie en code python. Le paramètre B doit être 8/16/32/64, l contrôle la longueur du tableau







Exemple







print-format -b 64 -l 1  $rsp
      
      





Pour rechercher un shellcode par motif







shellcode search pattern
shellcode get shellcode_number
      
      





Valeurs Xorim en mémoire et registres







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






All Articles