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