Reverse Engineering Roadmap

Prerequisites (Foundational Knowledge)

Operating Systems & Computer Architecture

  • Learn how OS works: processes, memory, system calls, file systems
  • Study computer architecture (x86/x86_64/ARM):
    • Registers, flags, stack, heap
  • Recommended:
    • “Computer Systems: A Programmer’s Perspective”
    • “Operating Systems: Three Easy Pieces”

Programming Skills

  • C and C++ (you’ll need this to understand compiled binaries)
  • Assembly Language:
    • x86 and x86-64 at minimum
    • ARM if you’re interested in mobile/IoT RE
  • Scripting: Python (for automating RE tasks)

Introduction to Reverse Engineering

Learn Basic RE Concepts:

  • What is disassembly, decompilation?
  • Static vs Dynamic Analysis
  • Understanding binary formats: PE (Windows), ELF (Linux), Mach-O (macOS)

Tools:

  • IDA Free / Ghidra / Binary Ninja (Disassemblers & Decompilers)
  • x64dbg / OllyDbg / WinDbg (Windows Debuggers)
  • radare2 / GDB / pwndbg (Linux Debuggers)
  • Cutter (GUI frontend for radare2)

Static Analysis Skills

  • Learn to read and interpret disassembled code
  • Recognize standard library functions (e.g., strcmp, printf)
  • Understand control flow graphs (CFGs), function prologues/epilogues

Focus Areas:

  • String references
  • API calls
  • Code obfuscation techniques

Dynamic Analysis Skills

  • Set breakpoints, step through code
  • Modify registers, memory at runtime
  • Trace system/API calls (e.g., with Procmon, strace, ltrace)
  • Use frida, Valgrind, or unicorn for advanced instrumentation

Software Modifying

  • Learn how to:
    • Bypass checks or popup dialogs
    • Modify control flow in binaries
    • Patch binaries (with tools like Hiew, LordPE, or 010 Editor)
  • Understand:
    • Software protection mechanisms (packing, obfuscation)
    • Anti-debugging techniques and how to bypass them

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *