Reverse-Engineering
A FREE comprehensive reverse engineering tutorial covering x86, x64, 32-bit/64-bit ARM, 8-bit AVR and 32-bit RISC-V architectures.
A free, structured curriculum for learning reverse engineering across five CPU architectures, starting from binary numbers and building up to real-world debugging, malware analysis, and embedded systems work.
This repository is a free, structured educational curriculum for learning reverse engineering, the practice of taking compiled software and working backward to understand how it operates. The curriculum covers five processor architectures: x86 (32-bit desktop), x64 (64-bit desktop), 32-bit ARM, 64-bit ARM, and 8-bit AVR, with additional material on 32-bit RISC-V processors used in embedded devices.
Reverse engineering is the skill of reading and analyzing machine code or assembly language, the low-level instructions a processor executes directly. It is used in security research to find vulnerabilities in software, in malware analysis to understand what harmful programs do, and in embedded systems development to examine hardware behavior. This repository starts from the absolute basics, including number systems, memory layout, and processor registers, and works through practical debugging and analysis techniques.
The course is organized as a long series of numbered lessons grouped by topic. The x86 section begins with foundational concepts like binary and hexadecimal numbers, transistors, and memory, then covers processor registers, the stack, the heap, and how to use GDB, a common debugger on Linux. Subsequent sections address ARM architecture for mobile and embedded processors, x64 for modern 64-bit software, and a course for the Raspberry Pi Pico microcontroller. There are also sections on Windows internals, Go and Rust binary analysis, WebAssembly, and RISC-V.
Each lesson description in the README is brief, with links pointing to a companion free ebook and PDF assembled by a separate contributor. The repository also links to a Discord server for a hacking study group, plus related repositories covering Windows hacking, network tools, and Python education for beginners. New lessons appear to be added on a regular schedule.
The full README is longer than what was shown.
Where it fits
- Work through the x86 section to learn how to read assembly code and use GDB to debug Linux programs from scratch
- Study the ARM section to analyze disassembled code from mobile apps or Raspberry Pi projects
- Follow the Windows internals section to understand how Windows executables are structured and can be analyzed
- Use the RISC-V and AVR sections to learn how to examine firmware on embedded microcontrollers