GDB
pour l'exploitation de binaire
Installation
- GDB est installé par défaut sur Linux
- Plugins utile
- GDB-Peda (https://github.com/longld/peda)
Code analysé
#include <stdio.h> #include <stdlib.h> int main(int argc, unsigned char** argv) { unsigned char data[100]; puts("Quel est ton nom ?\n"); gets(data); printf("Ton nom est %s. \n", data); return 0; }
Commandes
- start (démarre et arrête au début)
Commandes
- x/19i main (affiche le code du main)
Commandes
- Avancer dans le programme
- si
- prochaine instruction et entre dans les "call"
-
ni
- prochaine instruction et n'entre pas dans les "call"
- finish
- continue jusqu'au prochain "ret"
- si
Commandes
- Point d'arrêt
- b *0x00000000
- Ajoute un point d'arrêt à 0x00000000
-
b main
- Ajoute un point d'arrêt au début de la fonction "main"
-
d
- Supprime tous les points d'arrêt
-
info b
- Liste tous les points d'arrêt
-
c
- Continue jusqu'au prochain point d'arrêt
- b *0x00000000
Commandes
- Affichage de données
- p $eax
- Affiche la valeur du registre eax
- p main
- Affiche l'adresse de la fonction main
- p $eax
Commandes
-
Affichage de données
-
x/abc 0x00000000
- Affiche les données à l'adresse 0x00000000
- a = Nombre d'élément à afficher
-
b = Largeur
- w = 4 bytes, g = 8 bytes, b = 1 bytes
-
c = Type
- i = Instruction (code)
- x = Nombre (hexadécimal)
- d = Nombre (entier)
-
Exemple :
- x/8bx $rbp
- x/25i main
-
x/abc 0x00000000
Commandes
-
Information sur la stack
- info frame
GDB
By Olivier Arteau
GDB
- 1,326