Disassemblers and decompilers
Ghidra
Free and open-source tool from the NSA. Supports x86, ARM, MIPS, PowerPC, and many more architectures. The built-in decompiler produces readable C-like pseudocode.IDA Pro / IDA Free
Industry-standard disassembler. IDA Free handles x86/x64 ELF and PE files. Use F5 to decompile the current function with the Hex-Rays decompiler.Binary Ninja
Strong Python/C++ API for automation. Particularly useful for writing custom analysis passes.Debuggers
GDB with GEF or pwndbg (Linux)
x64dbg / x32dbg (Windows)
Open-source Windows debugger with a plugin ecosystem. Use ScyllaHide to bypass common anti-debug checks. To debug a DLL:- Load
rundll32.exeas the executable - Set the command line:
"C:\Windows\SysWOW64\rundll32.exe" "target.dll",DLLMain - Enable Options → Settings → DLL Entry to break on
DllMain
.NET reversing
dnSpy / dnSpyEx
Decompiles and allows editing .NET assemblies in-place. Right-click a method and choose Modify Method to patch logic without recompiling from source. Enabling debug symbols for runtime debugging:ILSpy
Lightweight .NET decompiler. Available as a standalone app and as a Visual Studio Code extension (search “ILSpy” in the extensions marketplace).dotPeek (JetBrains)
Excels at decompiling Xamarin and restoring projects to.csproj format for reimport into Visual Studio.
Java / Android reversing
WebAssembly (Wasm)
| Direction | Tool |
|---|---|
| Wasm → Wat (text) | https://webassembly.github.io/wabt/demo/wasm2wat/ |
| Wat → Wasm (binary) | https://webassembly.github.io/wabt/demo/wat2wasm/ |
| Wasm decompiler | JEB (commercial), wasmdec |
Shellcode analysis
Blobrunner
Blobrunner allocates raw shellcode into a memory region, prints the address, and pauses. Attach IDA or x64dbg, set a breakpoint at the printed address, and resume.scdbg
Emulates shellcode execution and reports which API calls it makes — useful for quick triage without running the shellcode on a live system.Cutter (radare2 GUI)
Open the shellcode as a raw binary and use the Emulate feature to step through instructions and inspect registers interactively.CyberChef
For quick disassembly of small shellcode blobs without running them:SMT solvers — Z3
Z3 (and theangr binary analysis framework built on top of it) can automatically solve for inputs that satisfy a set of constraints — perfect for key-check or flag-check functions.
Obfuscation-specific tools
Movfuscator
Obfuscates all instructions intomov instructions. Use demovfuscator (with libcapstone and libz3) to reverse it.
Game Boy Advance
| Tool | Purpose |
|---|---|
| no$gba (debug build) | Full debugger UI with breakpoints |
| mGBA | CLI debugger |
| gba-ghidra-loader | Ghidra plugin for GBA ROM analysis |
Useful online resources
- Decompiler Explorer (dogbolt.org): compare output of Ghidra, IDA, Binary Ninja, and others side-by-side on the same binary.
- CyberChef: encode/decode/transform/disassemble data in browser.
- godbolt.org: compile C/C++ and inspect generated assembly for any architecture.