explaingit

mytechnotalent/reverse-engineering

13,571AssemblyAudience · developerComplexity · 3/5Setup · moderate

TLDR

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.

Mindmap

mindmap
  root((Reverse Engineering))
    Architectures
      x86 32-bit
      x64 64-bit
      ARM 32 and 64
      RISC-V
      AVR 8-bit
    Topics
      Assembly basics
      Memory and registers
      GDB debugging
      Malware analysis
    Platforms
      Linux
      Windows
      Embedded devices
    Resources
      Free ebook
      Discord community
      Numbered lessons
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Work through the x86 section to learn how to read assembly code and use GDB to debug Linux programs from scratch

USE CASE 2

Study the ARM section to analyze disassembled code from mobile apps or Raspberry Pi projects

USE CASE 3

Follow the Windows internals section to understand how Windows executables are structured and can be analyzed

USE CASE 4

Use the RISC-V and AVR sections to learn how to examine firmware on embedded microcontrollers

Tech stack

AssemblyGDBx86x64ARMRISC-VAVRGo

Getting it running

Difficulty · moderate Time to first run · 1h+

Each architecture section requires its own toolchain, GDB for x86/x64 on Linux, separate emulators or hardware for ARM and AVR, so plan to set up the right environment before each section.

In plain English

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.

Copy-paste prompts

Prompt 1
I am starting the reverse engineering curriculum from scratch, explain what the x86 stack and heap are in plain terms, then show me how to use GDB on Linux to inspect memory layout and register values of a simple compiled C program
Prompt 2
Using the x64 reverse engineering curriculum concepts, help me analyze a Linux ELF binary: show me how to find the main function in GDB, set a breakpoint, step through instructions, and read register values
Prompt 3
Based on the ARM reverse engineering lessons, explain the key differences between ARM32 and ARM64 calling conventions and show me how those differences appear when I disassemble a mobile app binary
Prompt 4
Walk me through the first five lessons of the reverse engineering curriculum, binary numbers, hexadecimal, memory layout, CPU registers, and the stack, as if I have never done systems programming before
Prompt 5
Using the Raspberry Pi Pico section of the curriculum, explain how to set up the AVR or RISC-V environment and disassemble a simple firmware binary to read what it does
Open on GitHub → Explain another repo

← mytechnotalent on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.