Reverse Engineering
Binary analysis with Ghidra and radare2, symbolic execution with angr, string extraction, and AI-assisted vulnerability discovery in compiled code.
Prerequisites
- Binary file to analyze (ELF, PE, Mach-O, raw firmware)
- Ghidra 11+ installed and analyzeHeadless configured
- radare2 installed
- Python 3.12 with angr package (optional — for symbolic execution)
- Written authorization covering binary analysis of the target software
-
1
Select Reverse Engineering from Home Screen
Click ⚙️ Reverse Engineering. Upload your binary or enter the path on disk.
-
2
Claude Runs Full RE Pipeline
Phase 1: Security posture — checksec: NX, ASLR, PIE, stack canary, RELRO Phase 2: Architecture — file, readelf: arch, bitness, endianness, OS Phase 3: Strings analysis — extract credentials, URLs, debug strings, crypto Phase 4: Symbol analysis — imported libs, exported functions, syscalls Phase 5: Ghidra decompile — decompile all functions to C pseudocode Phase 6: Pattern matching — find: strcpy, gets, sprintf, system(), eval Phase 7: Symbolic exec — angr: buffer overflows, null derefs, format strings Phase 8: AI analysis — Claude reviews decompiled code (anonymized) Phase 9: Report — findings with CWE mapping and PoC -
3
Review in the RE Dashboard
The RE Dashboard shows: binary header (arch, security flags), function list with complexity scores, decompiled C pseudocode viewer, and the Findings panel. Click any function to view its decompiled code with vulnerability annotations.
-
4
Generate Binary Security Report
Reports → RE Report includes: binary posture (checksec summary), findings by category, AI narrative analysis, decompiled function excerpts showing vulnerabilities, and remediation guidance.
Common Issues
Verify the Ghidra installation path in Settings → Tools → Ghidra. The analyzeHeadless script must be in the Ghidra installation's support/ directory. Check that the postScript path is correct and DecompileAll.py exists at config/ghidra_scripts/DecompileAll.py. Run with -log /tmp/ghidra.log for detailed error output.
Symbolic execution has state explosion on large code paths. Focus angr on specific functions rather than the full binary: use proj.factory.blank_state(addr=target_function_addr). Set a timeout: use Python threading or angr's built-in step limits. For large binaries, use Ghidra decompilation + manual review to identify vulnerable functions first, then target angr precisely.
Try dynamic unpacking: run the binary under strace or in a sandbox to let it unpack itself, then dump the unpacked version from memory with gdb + dump binary memory unpacked.bin addr1 addr2. UPX-packed binaries: upx -d binary. Check for anti-analysis tricks: ltrace shows library calls that may include decryption routines.