Le fichier d'initialisation débuté sur anticrack.de, maintenant reverse-engineering.net, permet d'avoir un affichage à la Softice et des fonctions pour faciliter l'exploration d'un processus, ce qui est bien utile.

Voici les principales fonctions définies jusqu'à la version 7 (le * indique un argument) :

  • les points d'arrêt : bpl (lister), bp * (ajouter), bpc * (effacer), bpe * (activer), bpd * (désactiver), bpt * (ajouter temporairement) et bpm * (accès à une adresse) ;
  • les informations sur le processus débogué : argv (arguments du programme), stack (liste des appels de fonction), eflags (tous les drapeaux du registre), func (fonctions du programme), var (variables du programme), lib (bibliothèques partagées liées au programme), sig (actions pour chaque signal), thread (threads en cours), dis * (désassembler la fonction qui comprend l'adresse donnée) ;
  • l'affichage : hex_quad * (8 valeurs hexadécimales), hexdump * (16 valeurs hexadécimales/ASCII), context (contexte d'exécution : registres, pile, données et code lors de l'arrêt), context-on/context-off (activer/désactiver son affichage lors de chaque arrêt), contextsize-stack/contextsize-data/contextsize-code (changer le nombre de lignes affichées dans le contexte) ;
  • le contrôle de l'exécution : n (instruction suivante sans rentrer dans les fonctions), go * (avance de N instructions assembleur), pret (aller à la fin de la fonction actuelle), step_to_call (s'arrête au prochain call), init (démarrer le programme et s'arrêter à _init), start (démarrer le programme et s'arrêter à _start), sstart (démarrer le programme et s'arrêter à _libc_start_main), main (démarrer le programme et s'arrêter au main) ;
  • le changement des drapeaux : cfc (retenue), cfp (parité), cfa (retenue auxiliaire), cfz (zéro), cfs (signé), cft (trap), cfi (interruption), cfd (direction), cfo (débordement) ;
  • patcher à la volée : nop * (écrit un nop), null * (écrit 0), int3 (écrit l'interruption int3 : retour au débogueur) ;
  • différentes utilisations : assemble (assemble les instructions utilisateur en opcodes x86 avec nasm), gas_asm (assemble les instructions utilisateur en opcodes x86 avec gas et objdump), dump_hexfile * * * (dumper la mémoire dans un fichier au format hexadécimal Intel), dump_binfile * * * (dumper la mémoire dans un fichier au format binaire), trace_calls (sauvegarder l'exécution dans ~/gdb_trace_calls.txt sous forme linéaire avec indication des calls), trace_run (sauvegarde l'exécution dans ~/gdb_trace_run.txt de manière indentée) ;
  • l'aide : tips liste les mini tutoriaux pour certaines actions et bien sur le help * avec le nom de la commande.

Et maintenant une belle capture d'écran (où on peut voir le contexte) : GDB

Ressources : GDB Refcard, Documentation complète sur GDB