Reverse Engineering
Overview
Reverse engineering malware involves disassembling and decompiling binaries to understand their internal logic — control flow, algorithms, encryption routines, C2 protocols, and evasion techniques. This is the deepest level of malware analysis, used when static and dynamic analysis alone cannot fully explain a sample's behavior.
Topics in This Section
- Disassembly & Decompilation — using Ghidra, radare2, and other tools to convert machine code back to assembly and pseudocode
- Debugging Techniques — stepping through malware execution with GDB and x64dbg to observe runtime state
- Anti-Analysis Techniques — common evasion techniques malware uses to thwart analysis, and how to defeat them
- .NET & Java Reversing — decompiling managed code with specialized tools (dnSpy, jadx)
General Approach
- Disassemble — load the binary into a disassembler to view assembly code
- Identify key functions — find entry points, main logic, and interesting routines (crypto, networking, persistence)
- Decompile — use decompiler output for higher-level understanding
- Debug — set breakpoints at key locations and step through execution
- Defeat anti-analysis — patch or bypass packing, anti-debugging, and environment checks
- Document — record findings on malware capabilities, IOCs, and C2 protocols