PROFIL / INDEX© Clément Depernet / 2026

← Retour à la liste

19 mars 20242 min de lecture

Cheat sheet — Reverse engineering : GDB & assembleur x86

Débugger un binaire avec GDB (points d'arrêt, inspection des registres et de la mémoire, exemple strcmp pour retrouver une comparaison) et les bases de l'assembleur x86 : registres, instructions, flux de contrôle.

intermediate#reverse-engineering#gdb#assembleur#x86#cheatsheet

Mis à jour le 21 sept. 2026

Débugger avec GDB

Cas d’usage classique : trouver la chaîne attendue dans un strcmp.

gdb ./challenge
info functions strcmp     # localiser la fonction
break strcmp              # point d'arrêt
run <arguments>           # lancer ; s'arrête à strcmp

À l’arrêt, inspecter les paramètres. Sur x86_64 ils sont dans les registres :

print (char*) $rdi        # 1er argument (ex. saisie utilisateur)
print (char*) $rsi        # 2e argument (ex. valeur attendue)

Sur i386 ils sont sur la pile :

x/s *(char**)($esp+4)
x/s *(char**)($esp+8)

Inspecter la mémoire pointée :

x/s  <adresse>            # en chaîne
x/20x <adresse>           # 20 mots en hexa

Commandes utiles

Commande Rôle
break <fn> / break *<adr> point d’arrêt sur fonction / adresse
run <args> exécuter
info functions / info registers lister fonctions / registres
disassemble code assembleur autour du point courant
x/s, x/20x examiner la mémoire
continue (c) reprendre

Binaire strippé (symboles supprimés) ou optimisé : travailler par adresses/offsets récupérés avec objdump/readelf, et disassemble autour du point d’arrêt.

Assembleur x86 (rappels)

Registres

  • Généraux : EAX (accumulateur), EBX (base), ECX (compteur), EDX (données).
  • Index/pointeurs : ESI/EDI (source/destination), EBP (base de pile), ESP (sommet de pile).
  • Contrôle : EIP (instruction courante), EFLAGS (indicateurs, dont ZF).

Instructions courantes

MOV dest, src     ; déplacer
PUSH / POP        ; empiler / dépiler
ADD / SUB         ; arithmétique
AND / OR / XOR    ; logique
SHL / SHR         ; décalages
CMP a, b          ; comparer (positionne les flags)
JMP / JE / JNE    ; sauts (JE si ZF=1)
CALL / RET        ; appel / retour de fonction

En reverse, repérer un CALL strcmp@plt précédé de deux MOV qui empilent les adresses des chaînes comparées est le schéma typique d’une vérification de mot de passe — on pose un point d’arrêt sur le call et on lit les deux chaînes.

Outils complémentaires : Ghidra, IDA, Radare2 pour l’analyse statique, NASM pour écrire/assembler.

SEC / OPS / CD-01

Astro + Tailwind, conteneurisé, servi derrière Caddy · Inspiration · Thème sonore : Severance (Theodore Shapiro) · Trop mignon le favicon, non ?

PRÊT / CD-01