Back to projects

42 project

Override

A deep dive into reverse engineering, memory exploitation and low-level binary analysis.

Stack

  • C
  • Assembly
  • GDB
  • Linux

Skills gained

  • Reading and understanding a binary without Github
  • Using GDB to inspect memory, the stack and registers
  • Understanding classic exploitation vulnerabilities
  • Building a more rigorous low-level debugging process

Override is a reverse engineering project made of several levels, each based on a binary to analyze and exploit. The goal was to understand a program without access to its Github, identify its weaknesses and build a reliable method to solve each step.

01 — Analysis

Understanding a program that refuses to explain itself.

The first challenge was learning how to observe. Without Github, every clue matters: strings, system calls, registers, stack state and behavior after user input. The work consisted in progressively rebuilding logic from very small signals.

Humorous illustration of a reverse engineering debugging session
Fig. 01
When GDB becomes your best friend but still refuses to explain what is happening.

02 — Exploitation

Turning a vulnerability into a reproducible path.

Once the vulnerability was understood, the goal was not just to succeed once, but to build a stable exploitation path. That requires precision: offsets, addresses, input formats, execution environment and side effects.

Humorous illustration of a memory exploit finally working
Fig. 02
The exact moment your offset is right and you pretend you had it under control from the start.

03 — Learning

Getting closer to the machine.

Override forced me to go below the abstractions I usually work with in web development. It helped me better understand memory, program execution and the security mechanisms that protect or expose a system.

Humorous illustration of a developer finally understanding the memory stack
Fig. 03
After a few levels, you no longer see a program — you see a call stack silently judging you.