github pwndbg/pwndbg 2024.02.14

2 months ago

2024.02.14 Release

Here is the 2024.02.14 release. Thanks to everyone who contributed!

Among others, this release brings GOT tracking mechanism, more step/break commands, mmap/mprotect syscalls, printing of linked lists, displaying of threads in context for multithreaded programs, lots and lots of fixes and more!

The release files can be used to install Pwndbg as self-contained (along with GDB, Python and all deps) package on many distros and x86-64 and arm64/aarch64 architectures. The *-portable.tar.gz archives can be just unpacked and run.

Below is a summary of changes, while the full changelog can be found further on.

Note: this release requires Python >= 3.8 (which means Ubuntu 18.04 or Debian 10 are not supported anymore).

Summary of changes

General changes:

  • Added portable Pwndbg archive to release as well as nix, rpm, deb, arch and alpine packages
  • Added $base(objfile_name) function to compute base address of given memory page, e.g. print $base(libc)+0x123 will return base of libc + 0x123
  • Context will now display threads information for multi-threaded programs
    • this is limited by context-max-threads parameter (use set context-max-threads <N> to change)
  • Added glibc heap exploitation support for libc 2.12+ (#1823)
  • Added support for FreeBSD (#1832)
  • The gdb-pt-dump git submodule was moved to a python dependency (#1929)

New commands:

  • track-got {enable,disable,info,query} ... can be used to track (#1971)
  • stepuntilasm <asm> will step through program instructions until a matching part of instruction string is found (#1798)
  • break-if-taken <loc> and break-if-not-taken <loc> will setup a breakpoint on given location of a branch instruction which will stop the program if the branch was taken or not (#1799)
  • plist ... can be used to print linked lists (#1795, #1817)
  • mmap ... and mprotect ... commands will invoke the mmap or mprotect syscalls with given arguments in the debugged program
    • note: this works by assembling a shellcode for the syscall call, placing the code on current PC/IP address, executing the syscall and reverting back the register and memory changes made
  • thread command to display threads information
  • hi command to check if an address belongs to a glibc heap chunk (#1938)
  • tips to display tips about Pwndbg usage
  • sigreturn <address> to print sigreturn x86-64 frame (#1940)

Changed commands:

  • Added telescope --frame to display stack frame information (requires BP and SP to point to the same memory region) (#1855)
  • Glibc heap commands now also print real chunk size (#1748)
  • Added spray --only-funcptrs | -x flag to spray only the memory addresses where values point to executable memory pages (#1809)
  • Added -A <N> and -B <N> flags to vmmap to display N entries after/before the filtered page (#1810)
  • The linux kernel memory pages figured out by gdb-pt-dump can now be filtered in vmmap (they have unique names) (#1837)
  • Added new arguments/options to the search memory command (#1867)
  • telescope output can now show frame pointer offsets (#1925)
  • distance <single-address> now prints offset from memory page start address (#1926)
  • Added stack -i | --inverse to show stack in reverse order (#1978)
  • Added new positional argument to cyclic command to save its output to file (so it can later be used, e.g. as run < input) (#2009)

Detailed changelog (from git log)

New Contributors

Full Changelog: 2023.07.17...2024.02.14

Don't miss a new pwndbg release

NewReleases is sending notifications on new releases.