Reverse Engineering

Reverse Engineering

Reverse engineering is the process of understanding how a program works by examining its compiled binary. In CTFs this means reading disassembly, tracing execution flow, bypassing password checks, and deobfuscating code. These skills directly translate to malware analysis, vulnerability research, and software security.

5 steps·16 challenges
  1. 1

    Running and Inspecting Binaries

    Before you read assembly, learn to interact with programs. Running a binary, passing arguments, piping input, and using the strings command to find printable text are all essential first steps. These challenges teach you to treat an unknown binary as a black box and probe it methodically.

  2. 2

    Reading x86 Assembly

    Assembly is the language your CPU actually speaks. Understanding mov, add, cmp, and jmp instructions gives you a direct window into program logic. Start by reading small snippets and tracing register values by hand. The Bit-O-Asm series is designed exactly for this kind of practice.

  3. 3

    Debugging with GDB

    GDB is the GNU Debugger and it's the most powerful free tool for reverse engineering Linux binaries. You can pause execution at any point, inspect memory, modify register values, and trace function calls. The GDB baby step series walks you through the basic commands in a hands-on way.

  4. 4

    Crackmes and Password Bypass

    Crackmes are programs that ask for a password and only print the flag when you enter the correct one. The goal is to either find the password through analysis or patch the binary to skip the check entirely. These are the bread and butter of beginner reverse engineering.

  5. 5

    Obfuscation and Packing

    Real-world malware and protected software use packers and obfuscators to make reverse engineering harder. A packer compresses or encrypts the original binary and unpacks it in memory at runtime. Learning to identify and unpack these is an essential next step in your reversing journey.