Skip to content

Releases: MrEx-Right/exploitlab

v0.2.0 - Deep GDB Integration & The Listener Tube

14 Apr 20:53

Choose a tag to compare

v0.2.0 - Deep GDB Integration & The Listener Tube

This major release delivers a massive workflow upgrade to ExploitLab by introducing deep, native GDB integration and built-in network listening capabilities. We've completely eliminated the need for manual GDB attaching and external tools like netcat. Now, you can instrument binaries, catch reverse shells, and control your entire debugging pipeline directly from your Python exploit script.

🔬 The Debugger & Native GDB Integration

  • Dynamic Attachment & Spawning: Introduced GDB.attach() to hook into running processes mid-execution and GDB.debug() to spawn executables from scratch (instrumenting before main()). Added attach() and debug() module-level aliases to mirror the familiar pwntools flow.
  • Smart Breakpoints & Auto-Sourcing: Pass symbol names ("main", "vuln") or raw addresses directly to generate break commands automatically. Seamlessly supply and source .gdb or Python-GDB scripts on startup via the gdbscript parameter.
  • Environment Auto-Detection: The engine now automatically hunts for graphical terminal emulators (Alacritty, Kitty, xterm, gnome-terminal, etc.) to pop GDB in a new window. Plus, it auto-detects your flavor of choice (pwndbg, peda, or gef) directly from ~/.gdbinit.
  • Headless Execution & Control: Programmatically drive the debugger without a GUI using send_command() and pause inferiors via interrupt() (SIGINT). We've also wrapped it all in a clean Context Manager (with blocks) for flawless resource teardown.

🎧 The Listener & Reverse Shell Catching

  • Built-in TCP Listener: Added the highly anticipated listen() class to spawn local TCP servers natively, making it trivial to catch incoming connections and reverse shells directly in your script.
  • Unified Tube API: The listen() tube perfectly mirrors the Process and Remote interfaces, giving you seamless access to your favorite methods like .send(), .recv(), and .recvuntil().
  • Instant Interactive Mode: Catch a shell and immediately drop into it using the built-in .interactive() support—no external tools needed.
  • Global Namespace Export: Streamlined imports so GDB, attach, debug, and listen are instantly available in your top-level namespace via from exploitlab import *.