diff --git a/CHANGELOG.md b/CHANGELOG.md index 91079ac18..bcd36ff42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -112,15 +112,17 @@ The table below shows which release corresponds to each branch, and what date th [2476]: https://github.com/Gallopsled/pwntools/pull/2476 [2364]: https://github.com/Gallopsled/pwntools/pull/2364 -## 4.14.1 +## 4.14.1 (`stable`) - [#2533][2533] Fix installation on Python 3.5 and lower - [#2518][2518] fix: update apport coredump path handling for CorefileFinder +- [#2559][2559] Fix parsing corefile with missing auxv [2533]: https://github.com/Gallopsled/pwntools/pull/2533 [2518]: https://github.com/Gallopsled/pwntools/pull/2518 +[2559]: https://github.com/Gallopsled/pwntools/pull/2559 -## 4.14.0 (`stable`) +## 4.14.0 - [#2356][2356] Add local libc database provider for libcdb - [#2360][2360] Add offline parameter for `search_by_hash` series function diff --git a/pwnlib/elf/corefile.py b/pwnlib/elf/corefile.py index f092153c1..26b9cff5f 100644 --- a/pwnlib/elf/corefile.py +++ b/pwnlib/elf/corefile.py @@ -555,6 +555,9 @@ def __init__(self, *a, **kw): # Pointer to the entry point self.at_entry = 0 + # Pointer to the vdso + self.at_sysinfo_ehdr = None + try: super(Corefile, self).__init__(*a, **kw) except IOError: @@ -611,6 +614,8 @@ def __init__(self, *a, **kw): if not self.stack and self.mappings: self.stack = self.mappings[-1].stop + if self.mappings[-1].start == 0xffffffffff600000 and len(self.mappings) > 1: + self.stack = self.mappings[-2].stop if self.stack and self.mappings: for mapping in self.mappings: