Reverse engineering

Reverse engineering is the process of analyzing a compiled binary or system to understand its design, functionality and structure without access to source code or design documentation. Objectives:

  • Understand internal software mechanisms
  • Identify vulnerabilities for exploit development
  • Analyze malware
  • Modify program behavior (e.g., apply patches)
  • Research compatibility and interoperability
              REVERSE ENGINEERING (Reversing)
                       /       \
                      /         \
            Static Analysis   Dynamic Analysis
                                     /    \
                                    /      \
                              Debugging   Instrumentation

Methodologies

  • Static analysis: Examination of the binary without execution (disassembly, decompilation, file structure inspection)
  • Dynamic analysis: Execution and observation of runtime behavior, including API calls and memory usage

Tools

IDA Pro, Ghidra, Hopper, LLDB, Frida, DTrace