Choosing the right tool for the binary format and analysis goal dramatically accelerates reverse engineering. This page covers the most commonly used tools with practical usage notes.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/HackTricks-wiki/hacktricks/llms.txt
Use this file to discover all available pages before exploring further.
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.