Skip to content
CYBERSKILLS Academy
Intermediate4h 15m · 14 learning steps · 2 required checkpoints

Assembly: Reading Machine Code

What your program actually became

For anyone who can write C and now wants to see what the compiler produced — and for anyone heading toward reverse engineering, exploit analysis or low-level debugging, where the source is not available and the binary is the only evidence. This course assumes a working Unix-like shell and, from the C course onwards, a C compiler and make. If you do not have those yet — or have never opened a terminal — the Setting Up course installs and verifies all of it first, and nothing here repeats that material.

Course preview

What you will be able to do

  • Read x86-64 disassembly and follow what it does, instruction by instruction
  • Name the registers, their widths, and which ones survive a function call
  • Recognise compiler transformations: division by multiplication, loops replaced by arithmetic, lea used as maths
  • Trace control flow through comparisons, conditional jumps and loops
  • Follow the stack through a call, a frame and a recursive descent
  • Use objdump and a debugger to examine a binary you did not build

Before you join

Course roadmap

English is available for every learning step.

This is the full learning route. Lessons build on earlier work; required checkpoints are the points where the route asks you to demonstrate it.

  1. 01

    The program you wrote is not the program that runs

    Lesson · 17 min

  2. 02

    Sixteen registers and the names they answer to

    Lesson · 18 min

    Builds on: The program you wrote is not the program that runs

  3. 03

    Moving data, and the instruction that does not move anything

    Lesson · 18 min

    Builds on: Sixteen registers and the names they answer to

  4. 04

    Arithmetic, and the four bits it leaves behind

    Lesson · 18 min

    Builds on: Moving data, and the instruction that does not move anything

  5. 05

    Two ways to write the same instruction

    Lesson · 14 min

    Builds on: Moving data, and the instruction that does not move anything

  6. 06

    How an if becomes a jump

    Lesson · 18 min

    Builds on: Arithmetic, and the four bits it leaves behind

  7. 07

    Finding the loop, and what became of it

    Lesson · 18 min

    Builds on: How an if becomes a jump

  8. 08

    Recovering data layout from address arithmetic

    Lesson · 18 min

    Builds on: Finding the loop, and what became of it

  9. 09

    How a function call actually works

    Lesson · 17 min

    Builds on: How an if becomes a jump

  10. 10

    What a function builds before it starts working

    Lesson · 19 min

    Builds on: How a function call actually works

  11. 11

    The agreement that lets separately compiled code work together

    Lesson · 19 min

    Builds on: What a function builds before it starts working

  12. 12

    Capstone: measuring what a recursive call costs

    Required checkpoint · 20 min

    Builds on: The agreement that lets separately compiled code work together

  13. 13

    The tools that read a binary for you

    Lesson · 19 min

    Builds on: What a function builds before it starts working

  14. 14

    Capstone: reconstructing a function you have never seen

    Required checkpoint · 22 min

    Builds on: The tools that read a binary for you · Recovering data layout from address arithmetic

Learn with an account when access opens

Your CYBERSKILLS account will keep progress and checkpoint results together. Until then, this syllabus is here to help you choose the route that fits your goal.

Browse course previews