Retour aux projets

Projet 42

Override

Une plongée dans le reverse engineering, l’exploitation mémoire et la compréhension bas niveau des binaires.

Stack

  • C
  • Assembly
  • GDB
  • Linux

Skills acquis

  • Lire et comprendre le comportement d’un binaire sans code source
  • Utiliser GDB pour analyser la mémoire, la pile et les registres
  • Comprendre les vulnérabilités classiques d’exploitation
  • Construire une méthode de debugging bas niveau plus rigoureuse

Override est un projet de reverse engineering composé de plusieurs niveaux, chacun basé sur un binaire à analyser et exploiter. L’objectif était de comprendre le comportement du programme sans accès au code source, d’identifier ses failles et de construire une méthode fiable pour passer chaque étape.

01 — Analyse

Comprendre un programme qui ne veut rien te dire.

Le premier enjeu était d’apprendre à observer. Sans code source, chaque indice compte : chaînes de caractères, appels système, registres, état de la pile, comportement après une entrée utilisateur. Le travail consistait à reconstruire progressivement une logique à partir d’indices parfois minuscules.

Illustration humoristique d’une session de debugging en reverse engineering
Fig. 01
Quand GDB devient ton meilleur ami, mais refuse quand même de t’expliquer clairement ce qu’il se passe.

02 — Exploitation

Transformer une faille en chemin reproductible.

Une fois la vulnérabilité comprise, l’objectif n’était pas seulement de réussir une fois, mais de construire une exploitation stable. Cela oblige à être précis : offsets, adresses, formats d’entrée, environnement d’exécution et effets de bord.

Illustration humoristique d’un exploit mémoire qui fonctionne après plusieurs essais
Fig. 02
Le moment exact où ton offset est bon et où tu fais semblant d’avoir tout maîtrisé depuis le début.

03 — Apprentissage

Revenir au plus près de la machine.

Override m’a forcé à descendre sous les abstractions habituelles du développement web. Le projet m’a permis de mieux comprendre la mémoire, l’exécution d’un programme et les mécanismes de sécurité qui protègent ou exposent un système.

Illustration humoristique d’un développeur comprenant enfin la stack mémoire
Fig. 03
Après quelques niveaux, tu ne vois plus un programme, tu vois une pile d’appels qui te juge.