-
Sujet
-
Bonjour !
Quand on veut cracker ou faire du reverse engineering un programme, on utilise généralement un désassembleur (ou alors au moins la commande strings 🙂 ). gdb est justement un désassembleur (POUR LINUX) et je vais vous présenter des commandes de base. Si vous voulez tester ce que je présente sans passer par l’installation de gdb et autres : https://www.onlinegdb.com/online_c_compiler
On lance gdb avec la commande… gdb (pas besoin sur le site)
une fois dans l’interface gdb, on utilise la commande file nomDuFichier pour charger un fichier (pas besoin sur le site).
on tape disas main pour désassembler la fonction main du programme
ATTENTION, ce sera en assembleur avec la syntaxe AT&T. Pour mettre en syntaxe intel (la plus utilisée), on tape set disassembly-flavor intel
pour placer un breakpoint/point d’arret : b *0xoffsetDeL’endroitOuVousPlacezLeBreakpoint
exemple : b *0x000000000000121d (si vous etes sur un programme en x86, l’adresse sera beaucoup moins grosse parce qu’elle sera en 32 bits/4 octets)
gdb renverra un numéro correspondant au breakpoint/point d’arret. Exemple : Breakpoint 1 at 0x121d
on peut le supprimer avec clear [numéro du breakpoint] Exemple : clear 1
on lance le programme avec r
on exécute une commande bash en mettant shell devant suivi de la commande. Exemple : shell echo culte du code est le meilleur site du monde !
on utilise quit pour quitter l’interface de gdb
vous pouvez taper info r pour afficher l’état des registres
en tapant sur entree, gdb exécute la dernière commande tapée
en tapant info proc map, on peut voir les espaces d’adressage virtuel attribué à des librairies, la stack, la heap et autre
avec x nomDuneFonction on obtient l’offset dune fonction
x/8gx $rsp va afficher 8 adresses dans la stack (pour un système 64 bits)
x/8wx $esp va afficher 8 adresses dans la stack (pour un système 32 bits)
Voilàà !
- Vous devez être connecté pour répondre à ce sujet.