Reverse Engineering is the analysis of a program without source code to understand its logic, find vulnerabilities, or reconstruct algorithms.
Static Analysis
Disassembly (IDA Pro, Ghidra, Binary Ninja), decompilation, strings.
Dynamic Analysis
Debugging (GDB, x64dbg, WinDbg), tracing (strace, ltrace), instrumentation (Frida, PIN).