Skip to content
All tools
ReversingRuns locallyNo account

ELF, PE and Mach-O binary analyzer

Parse headers, sections, imports, and symbols from Linux, Windows, and macOS binaries, with C++ symbol demangling and gadget discovery.

Open in ctfpal

Before disassembling anything, read the headers. They tell you the architecture, whether the binary is stripped, which protections are on, and which libraries it calls - and those four facts determine the entire approach to the challenge.

The protections decide the exploit

ProtectionIf enabledIf disabled
NXNo shellcode on the stack - use ROPShellcode works
PIEAddresses randomised - you need a leakFixed addresses, straightforward
CanaryOverflow is detected - leak or overwrite itOverwrite the return address directly
RELRO (full)GOT is read-only - no GOT overwriteGOT overwrite available
The same checklist checksec prints, and the same decisions it drives.

Imports name the vulnerability

The import table is a summary of what the program can do. gets means an unavoidable overflow. system present in a binary that never appears to call it means a ret2libc is intended. printf called with a user-controlled first argument is a format string bug. Reading the imports before the disassembly saves a great deal of time.

Part of a module

10. Binary exploitation

Read a binary’s protections, find an overflow offset in one crash, and build a ROP chain when the stack is not executable.

Practise on real challenges

Go deeper

Related tools