Skip to content

Chapter 1 Overview: Peering under the hood

Before we can manipulate software, we must understand the fundamental language of machines. This chapter breaks down the wall between high-level human logic and raw electrical signals.

Every program has a life cycle. We explore how a developer’s thoughts in a high level language (like C, C++ or python) are compressed, translated, and optimized into a binary file. Understanding this “forward” process is the only way to effectively work “backward.”

  • Key Concept: Compilation vs. Interpretation.
  • Goal: Visualize the journey from Source Code to Machine Code.

Computers don’t understand Hello World —they understand voltage. We dive into the math that powers the digital world.

  • Key Concept: Converting between Decimal, Binary, and Hex.
  • Goal: Learn to read memory addresses like 0x7FFE(reading these types of low level languages are a big part in your reverse engineering journey!).

Think of the CPU as a workspace with very limited desk space. These “desks” are called Registers. We look at how a processor stores temporary data while it performs calculations.

  • Key Concept: The roles of EAX, EBX, ESP, and EIP.
  • Goal: Understand where data lives during execution.

Software needs a place to store its variables. We explore the Stack (organized memory) and the Heap (free-form memory) and how programs move data between them.

  • Key Concept: LIFO (Last-In, First-Out) logic.
  • Goal: Visualize how memory is managed in real-time.

Start with the first lesson to see how code is made before we learn how to take it apart. Go to Lesson 1.1: The Software Pipeline →