Fast, parallel, cross-variant ROP/JOP gadget search tool for x86/x64 binaries, supporting exploit development.
xgadget is a tool for Return-Oriented Programming (ROP) and Jump-Oriented Programming (JOP) exploit development. It provides fast, multi-threaded gadget search across multiple binary formats, focusing on practical performance and experimental features like cross-variant gadget discovery.
Security researchers, penetration testers, and exploit developers who need to manually craft stable ROP/JOP chains for x86/x64 binaries. It is designed for expert users analyzing real-world programs.
Developers choose xgadget for its speed, parallel processing, and unique features like register-sensitive filtering without SMT solving, JOP-efficient search using instruction semantics, and cross-variant analysis to find gadgets that work across different binary versions.
Fast, parallel, cross-variant ROP/JOP gadget search for x86/x64 binaries.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages multiple cores to search single or multiple binaries simultaneously, processing 10 Linux kernels in under 10 seconds in benchmarks, as shown in the README.
Filters gadgets by register usage behavior (overwrite, read, memory access) without SMT solving, enabling precise control for exploit development, as detailed in CLI options like --reg-overwrite.
Finds gadgets that work across multiple binary variants (e.g., different compiler versions) with full and partial matches, supporting anti-diversification research, illustrated with diagrams in the README.
Uses instruction semantics for JOP gadget discovery instead of hardcoded regex patterns, improving accuracy and efficiency, with options like --dispatcher for filtering.
Explicitly does not generate ROP/JOP chains, requiring manual effort from users, which can be time-consuming for complex exploits, as admitted in the 'Why No Chain Generation?' section.
Currently supports only 8086/x86/x64 architectures, excluding ARM, MIPS, and others commonly used in embedded or mobile systems, limiting its applicability.
Statically-linked binary releases are significantly slower due to the memory allocator, forcing users to build from source with Rust for optimal performance, as noted in the CLI build section.
xgadget is an open-source alternative to the following products:
rp is a command-line tool for performing reverse proxying, allowing users to expose local servers to the internet or route traffic between different networks.
Ropper is a tool for displaying information about binary files and searching for gadgets to facilitate Return-Oriented Programming (ROP) exploits.
ROPgadget is a tool that facilitates Return-Oriented Programming (ROP) exploit development by searching for gadgets in binary files.