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