Skip to content

Latest commit

 

History

History
46 lines (37 loc) · 3.89 KB

File metadata and controls

46 lines (37 loc) · 3.89 KB

Changelog 🚀

All notable changes to the ExploitLab project will be documented in this file.

[0.2.0] - 2026-04-14

The Debugger (GDB Integration 🔬)

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.

Added

  • GDB.attach() – Attach GDB to any running Process tube (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 before main() 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 the break commands automatically.
  • GDB Script Source – Supply a path to any .gdb or Python-GDB script via gdbscript=; it will be sourced automatically on startup.
  • Plugin Detection – Auto-detects pwndbg, peda, and gef via ~/.gdbinit and 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() – Send SIGINT to GDB to pause a running inferior from Python.
  • Context ManagerGDB implements __enter__ / __exit__ for clean resource teardown via with blocks.
  • Global API ExportGDB, attach, and debug are now available in the top-level namespace via from exploitlab import *.
  • listen() – TCP listener tube for catching incoming connections and reverse shells directly from your exploit script.

The Listener

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.

Added

  • Listen Tube: listen() class for spawning a local TCP server to catch incoming connections and reverse shells.
  • Unified Interface: listen() fully mirrors the Process and Remote tube APIs, enabling seamless use of .send(), .recv(), and .recvuntil().
  • Reverse Shell Catcher: Built-in .interactive() support for the listen() tube, instantly dropping you into an interactive session when a target connects back.
  • Global API Export: listen is now directly available in the global namespace via from exploitlab import *.

[0.1.0] - 2026-04-03

Initial Release (The Big Bang 💥)

This is the first public release of ExploitLab! The core framework is established, focusing on speed, simplicity, and essential exploit development tools.

Added

  • Tubes Engine: Process and Remote classes 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(), and u64().
  • Pattern Generation: cyclic() and cyclic_find() for instant De Bruijn sequence generation and buffer overflow offset calculation.
  • Assembly & Shellcraft: On-the-fly ASM compilation (asm()) via keystone-engine and basic shellcode templates (shellcraft.sh()).
  • Global Context: context.arch and context.endian global management, with auto-detection when loading an ELF.
  • Logging: Colored, structured logging (log.info, log.success, log.error).