All notable changes to the ExploitLab project will be documented in this file.
This release introduces deep GDB integration into ExploitLab, eliminating the need to manually attach GDB during exploit development. The debugger can now be attached to any tube or spawned directly around a binary — all from your Python script.
GDB.attach()– Attach GDB to any runningProcesstube (or any PID-carrying object) mid-execution. Supports breakpoints, custom GDB commands, and an external GDB script.GDB.debug()– Spawn an executable directly under GDB from scratch, so you can instrument code beforemain()is even called.attach()/debug()– Module-level convenience aliases for the class methods, mirroring pwntools' familiar API.- Breakpoint API – Pass symbol names (
"main","vuln") or raw addresses (0x401200) in a list; ExploitLab generates thebreakcommands automatically. - GDB Script Source – Supply a path to any
.gdbor Python-GDB script viagdbscript=; it will be sourced automatically on startup. - Plugin Detection – Auto-detects
pwndbg,peda, andgefvia~/.gdbinitand reports which enhancement is active. - Terminal Auto-detection – Searches for a graphical terminal emulator (
gnome-terminal,xterm,konsole,alacritty,kitty, etc.) and opens GDB in a new window automatically (new_window=True). send_command()– Programmatically send raw GDB commands when running in headless (no new window) mode.interrupt()– SendSIGINTto GDB to pause a running inferior from Python.- Context Manager –
GDBimplements__enter__/__exit__for clean resource teardown viawithblocks. - Global API Export –
GDB,attach, anddebugare now available in the top-level namespace viafrom exploitlab import *. listen()– TCP listener tube for catching incoming connections and reverse shells directly from your exploit script.
This release also introduces the highly anticipated network listening capabilities to ExploitLab, making it trivial to catch reverse shells directly within your exploit scripts without relying on external tools like netcat.
- Listen Tube:
listen()class for spawning a local TCP server to catch incoming connections and reverse shells. - Unified Interface:
listen()fully mirrors theProcessandRemotetube APIs, enabling seamless use of.send(),.recv(), and.recvuntil(). - Reverse Shell Catcher: Built-in
.interactive()support for thelisten()tube, instantly dropping you into an interactive session when a target connects back. - Global API Export:
listenis now directly available in the global namespace viafrom exploitlab import *.
This is the first public release of ExploitLab! The core framework is established, focusing on speed, simplicity, and essential exploit development tools.
- Tubes Engine:
ProcessandRemoteclasses for seamless local and network I/O communication. - Interactive Mode: Built-in
.interactive()shell handler for tubes. - ELF Analysis module: Fast parsing of binary symbols, PLT/GOT addresses, and memory searching using
pyelftools. - Memory Packing: Core conversion utilities
p32(),p64(),u32(), andu64(). - Pattern Generation:
cyclic()andcyclic_find()for instant De Bruijn sequence generation and buffer overflow offset calculation. - Assembly & Shellcraft: On-the-fly ASM compilation (
asm()) viakeystone-engineand basic shellcode templates (shellcraft.sh()). - Global Context:
context.archandcontext.endianglobal management, with auto-detection when loading an ELF. - Logging: Colored, structured logging (
log.info,log.success,log.error).