Ce tutoriel couvre les bases de l'utilisation de GDB avec l'extension Pwndbg pour déboguer des programmes en C ou des exécutables ELF.
-
Installer GDB :
sudo apt update sudo apt install gdb
-
Installer Pwndbg :
git clone https://github.com/pwndbg/pwndbg.git cd pwndbg ./setup.sh
-
Vérifier l'installation : Lance GDB et observe si Pwndbg s'initialise automatiquement :
gdb
Un message ressemblant à ceci devrait apparaître :
pwndbg: Loaded X commands. Type 'pwndbg' for a list.
-
Lancer un programme avec ses arguments :
gdb --args ./programme arg1 arg2
-
Charger le programme dans GDB :
gdb ./programme
-
Démarrer l'exécution :
run
- Sur une fonction spécifique :
b main # Point d'arrêt à la fonction `main` b fonction_xyz # Sur une autre fonction
- À une adresse spécifique :
b *0xdeadbeef
info breakpoints
del 1 # Supprime le point d'arrêt numéro 1
run
si # Step Instruction
- Entrer dans une sous-routine :
step
- Passer au-dessus de la sous-routine :
next
continue
- En hexadécimal :
x/10x 0xdeadbeef # Affiche 10 mots en hexadécimal
- En instructions assembleur :
x/10i 0xdeadbeef # Affiche 10 instructions
- En chaînes de caractères :
x/10s 0xdeadbeef
info registers
context
- Par exemple, pour modifier un mot à l'adresse
0xdeadbeef
:set *(int *)0xdeadbeef = 42
- Charger une instruction
nop
à une adresse donnée :set *(char *)0xdeadbeef = 0x90
hexdump 0xdeadbeef
disassemble
bt # Backtrace
info locals
info args
watch *(int *)0xdeadbeef
rwatch variable
-
Afficher la disposition mémoire :
vmmap
-
Suivre les allocations de mémoire (malloc, free) :
heap
-
Analyser les protections d'une adresse mémoire :
checksec
-
Afficher des informations sur les fichiers ELF chargés :
info files
Pour quitter GDB :
quit