Skip to main content
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.

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:
  1. Load rundll32.exe as the executable
  2. Set the command line: "C:\Windows\SysWOW64\rundll32.exe" "target.dll",DLLMain
  3. 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:
Then: File → Save Module…, restart the app, and attach dnSpy via Debug → Attach to Process.

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

For Android, apktool decodes resources and smali bytecode; jadx goes further by lifting smali to Java.

WebAssembly (Wasm)

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 the angr 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.
Angr automates this for full binary paths:

Obfuscation-specific tools

Movfuscator

Obfuscates all instructions into mov instructions. Use demovfuscator (with libcapstone and libz3) to reverse it.

Game Boy Advance

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.