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.
MODULE 1.1: THE SOFTWARE PIPELINE
Section titled “MODULE 1.1: THE SOFTWARE PIPELINE”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.
MODULE 1.2: BINARY, HEXADECIMAL, AND BITS
Section titled “MODULE 1.2: BINARY, HEXADECIMAL, AND BITS”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!).
MODULE 1.3: CPU ARCHITECTURE & REGISTERS
Section titled “MODULE 1.3: CPU ARCHITECTURE & REGISTERS”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.
MODULE 1.4: THE STACK AND THE HEAP
Section titled “MODULE 1.4: THE STACK AND THE HEAP”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.
READY TO BEGIN?
Section titled “READY TO BEGIN?”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 →