Skip to content

Course

Reverse Engineering Fundamentals

How working reverse engineers take a stripped binary apart — disassembly, Ghidra, decompilers, dynamic analysis, and patching — and build a mental model of a program they will never see the source of.

9 lessons

Course Q&A

Reviews

Enrolled members can rate this course.

No reviews yet.

Reading the Machine

What a binary actually contains after compilation, the x86-64 literacy you really need, and how control flow maps back to the code that was written.

  1. 01What the Compiler Actually Throws AwayA binary is the fossil record of a program — mechanism survives, intent is erased. Learn which artifacts are still legible before you try to read them.20mOpen
  2. 02Reading x86-64 Without PanickingFifteen instructions cover ninety percent of real disassembly. Learn the vocabulary, the calling convention, and the stack frame — the pattern-matching does the rest.22mOpen
  3. 03Control Flow: Finding the Shape of the CodeAssembly is flat; programs are trees and loops. Learn the five control-flow shapes and how disassemblers actually find the code — including where they get fooled.22mOpen

Static Analysis in Practice

Ghidra as a working environment: triage through strings and xrefs, reading decompiler output skeptically, and rebuilding structure.

  1. 01A First Session in GhidraGhidra is free, scriptable, and what most pros reach for first. The learning curve is the interface, not the analysis — a dozen habits carry a whole investigation.22mOpen
  2. 02Triage: Strings, Imports, and Cross-ReferencesNobody reads a binary front to back. Find a legible anchor, follow its references down, and expand outward — the excavation loop that finds the interesting code fast.24mOpen
  3. 03Reading Decompiler Output SkepticallyThe decompiler produces C-shaped output that reads fluently and lies fluently — every type is a guess. Audit it against the listing and inject understanding through retyping.24mOpen

Dynamic Analysis and the Craft

Debuggers, watchpoints, patching, and the hypothesis-driven workflow that turns instructions into intent.

  1. 01Debuggers, Breakpoints, and WatchpointsStatic analysis shows every path a program can take; the debugger shows the one it does take. Four commands and one mindset dissect almost anything.24mOpen
  2. 02Patching: Changing Behavior Without SourceThe constraint that shapes everything: you can't insert bytes, only overwrite them. Classic patches, code caves, and the integrity checks that punish careless edits.22mOpen
  3. 03From Instructions to Intent: Building the ModelThe skill isn't reading assembly faster — it's building a theory of the program, knowing when it's wrong, and proving it by reimplementation.26mOpen