Here is the 2023.07.17 release. Thanks to everyone who contributed!
We would also like to honour Zach Riggle once again, who was a long time contributor and maintainer of Pwndbg.
Also please note that this release will be the last to support Python 3.6 and Python 3.7 (and so Ubuntu 18.04 and Debian 10).
TL;DR what this release brings
- The
setup.sh
now installs Python dependencies in a virtual environment created inpwndbg/.venv/
andgdbinit.py
sets appropriate paths so that the created virtual environment is used automatically (previously, we installed deps in the system's Python interpreter which could break users' setups) - New or improved commands:
- The
pwndbg
helper command can now filter commands list by category, e.g.:pwndbg -c heap
(categories are: heap, kernel, linux etc.) - Added
killthreads [<ids....>]
command to kill threads with given IDs - Added
slab contains <addr> [<addrs...>]
command to inspect Linux kernel heap (when debugging kernel) - Added
spray <addr> ...
command to spray memory with given values (instead of doingpi pwndbg.gdblib.memory.write(address, b'data')
) - Improved
got
command display and filtering - Multiple heap commands improvements (
heap
,vis_heap_chunks
optimized,find_fake_fast
,*bins
)- Optimized
vis_heap_chunks
command
- Optimized
telescope -r
now always displays the input address- Fixed
vmmap
for 32-bit kernels - Fixed
patch-list
andpatch-revert
commands - More AI clouds support in the
ai
command
- The
- Improved RISC-V support -- added branch prediction through Unicorn emulation
- Added basic heap heuristics for RISC-V and PowerPC
- Added
krelease
function that allows us to implement different behavior for different Linux kernel versions - Better glibc version detection
...and other bug fixes and improvements. See below for full changelog!
What's Changed
- Set version to 2023.03.19 by @disconnect3d in #1633
- Fix setup.sh on MacOS due to gnu vs bsd sed by @disconnect3d in #1635
- Update tips.py with
info args
andset scheduler-locking on
by @disconnect3d in #1636 - Fix missing length in mprotect doc example by @Xeonacid in #1641
- Fix shfmt lint issue in setup.sh by @disconnect3d in #1642
- Fix the wrong type for
tcache_count
inmalloc_par
by @lebr0nli in #1648 - Fix wrong
MALLOC_ALIGNMENT
for powerpc by @lebr0nli in #1646 - Fix linux arm/aarch64/ppc(64) syscall abi by @Xeonacid in #1639
- Support riscv syscall and ABI; Fix riscv retval register by @Xeonacid in #1651
- Add some basic heap heuristics supports for riscv and powerpc by @lebr0nli in #1649
- Add types-request to dev-requirements.txt by @gsingh93 in #1652
- Add docs on adding commands and config options by @gsingh93 in #1507
- slab: add credit to slabdbg project by @disconnect3d in #1654
- Search GLIBC version in .rodata section of libc.so by @lebr0nli in #1656
- Use
store_true
argparse action on *bins commands by @CptGibbon in #1655 - Fixed a crash that caused formatting failure in readlink when qemu returns None as the pid. by @Squirre17 in #1644
- Fix the unused arguments of the
heap
commands by @lebr0nli in #1659 - Largebins size range tests for x64 & i386_big by @CptGibbon in #1658
- Add update mode for setup.sh by @Cnly in #1660
- Better
--verbose
flag descriptions for *bins commands by @CptGibbon in #1665 - CI: remove Ubuntu 18.04 from lint and tests builds by @disconnect3d in #1670
- Smallbins size tests for x64 & i386_big by @CptGibbon in #1669
- feature: Add
killthreads
command (closes #1580) by @alufers in #1581 - Resolve some
find_fake_fast
command issues by @CptGibbon in #1640 - Port pwntools asm into pwndbg by @Ignatella in #1384
- Add support for Arch Linux ARM in setup.sh by @alufers in #1672
- Corrected year in README by @dabrd in #1674
- add
krelease()
function by @theguy147 in #1673 - Added support for Anthropic's Claude LLM as a backend for the ai tool by @oblivia-simplex in #1661
- Update CONTRIBUTING.md by @disconnect3d in #1681
- Allow Garuda Linux install in setup by @AlEscher in #1680
- feat: use pytest for qemu-system tests by @theguy147 in #1679
- make qemu-system tests more customizable by @theguy147 in #1682
- Issue #1667 Display OS Information In Bugreport by @MinimalEffort07 in #1683
- Fix unit tests by @gsingh93 in #1685
- Add unit tests for which.py by @gsingh93 in #1686
- New lib/cache.py: make caching great again by @disconnect3d in #1671
- Add pwndbg.lib.cache test by @disconnect3d in #1691
- Fix and Improvements for ArchOps by @theguy147 in #1676
- Test more kernels by @theguy147 in #1684
- Optimize vis_heap_chunks command by @disconnect3d in #1678
- Switch from flake8 to ruff by @gsingh93 in #1696
- Fix enums from Python 3.11: use ReprEnum by @disconnect3d in #1700
- Increase killthreads timeout to 10s to fix CI issues by @disconnect3d in #1701
- Honour Zach Riggle in README by @disconnect3d in #1702
- Repair slab info command by @theguy147 in #1699
- Add heuristic to add executable base to vmmap in qemu-user by @peace-maker in #1695
- Fix stack.update caching bug by @disconnect3d in #1703
- ascii heap function by @Czarna1024 in #1708
- Fix test command procinfo by @Unknownsentinel193 in #1706
- Add
slab contains
command by @theguy147 in #1707 - Updated version.py for bugreport command to display more information by @Unknownsentinel193 in #1709
- Include opensuse-tumbleweed in setup.sh by @alexbradd in #1710
- Fix Ubuntu 22.04 CI build by installing libgcc-s1:i386 by @disconnect3d in #1716
- refactor: move slab business logic to gdblib by @theguy147 in #1711
- Make args an alias for dumpargs by @dmur1 in #1721
- By default remove the context backtrace f prefix #1288 by @dmur1 in #1727
- Filter commands by category by @theguy147 in #1726
- Add codecov.yml by @gsingh93 in #1720
- address translation only works with debug symbols by @theguy147 in #1723
- Add a test binary that has very long symbols by @dmur1 in #1719
- Add OnlyWhenUserspace Decorator #1459 by @dmur1 in #1729
- Support slab command for all available cpus by @theguy147 in #1725
- Update QEMU image download URL by @gsingh93 in #1731
- Cleanup heap decorators #1208 by @dmur1 in #1736
- Covert printf format strings to f-strings by @gsingh93 in #1735
- Add +10min (30min) to qemu-tests CI build by @disconnect3d in #1737
- Convert format strings to f-strings by @gsingh93 in #1738
- Add more type hints by @gsingh93 in #1743
- Upgrade dependencies by @gsingh93 in #1745
- More type hints by @gsingh93 in #1746
- Fix patch_list and patch_revert commands by @disconnect3d in #1750
- slab: show per-node partial slabs by @matrizzo in #1751
- Fix #1756: change cache ._reset() to .cache.clear() by @disconnect3d in #1757
- Fix banner width for TUI mode with horizontal split for cmd window by @ThomsonTan in #1752
- Fix vmmap for 32-bit kernels by @gsingh93 in #1739
- Update gdb-pt-dump by @gsingh93 in #1763
- Fix #1728: racing test by @disconnect3d in #1764
- vmmap.py: fix yama/ptrace_scope command suggestion (Fixes #1768) by @disconnect3d in #1769
- Remove ArchLinux from CI by @disconnect3d in #1776
- Fix: Undefined info command: "win" by @idofran in #1775
- Improve RISCV support by @peace-maker in #1770
- Fallback to
gdb.parse_and_eval
instead ofinfo address
by @lebr0nli in #1724 - Fix context without CONFIG_IKCONFIG in kernel by @lonnywong in #1767
telescope -r
should always display the input address #1240 by @ntsleep in #1779- Add "spray" command by @bog2n in #1782
- Setup.sh use virtualenv by @disconnect3d in #1780
- Enhance got command by @lebr0nli in #1771
- Fix #1785: remove unused PWNDBG_GITHUB_ACTIONS_TEST_RUN by @disconnect3d in #1786
- CI: disable builds on push by @disconnect3d in #1788
- Improvements to spray command by @bog2n in #1789
- Fix codecov by @intrigus-lgtm in #1792
- Fix/ignore venv restrict bind mount by @intrigus-lgtm in #1796
- Use fork of action-docker-layer-caching to prevent warnings by @intrigus-lgtm in #1794
- Bringt back Archlinux CI. Fixes #1772, closes #1783 by @intrigus-lgtm in #1800
New Contributors
- @Squirre17 made their first contribution in #1644
- @Cnly made their first contribution in #1660
- @Ignatella made their first contribution in #1384
- @dabrd made their first contribution in #1674
- @theguy147 made their first contribution in #1673
- @AlEscher made their first contribution in #1680
- @MinimalEffort07 made their first contribution in #1683
- @peace-maker made their first contribution in #1695
- @Czarna1024 made their first contribution in #1708
- @Unknownsentinel193 made their first contribution in #1706
- @alexbradd made their first contribution in #1710
- @dmur1 made their first contribution in #1721
- @ThomsonTan made their first contribution in #1752
- @idofran made their first contribution in #1775
- @bog2n made their first contribution in #1782
- @intrigus-lgtm made their first contribution in #1792
Full Changelog: 2023.03.19...2023.07.17