-
Notifications
You must be signed in to change notification settings - Fork 862
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Heap features from libheap #5
Comments
Not sure what we need to have feature parity with libheap. All the useful stuff I've needed is in #36, and there are a bunch of little helper functions in libheap that I've never used and don't think are worth implementing. |
Is this still necessary? We implemented a bunch of stuff for Pinging @cloudburst and @blendin to discuss. |
This could probably be closed (and I would close #4, it provides the same functionality as pwndbg plus there is also python object tracking/memory usage stats (it knows about CPython PyObject etc)). There are a few main differences as I see it to the pwndbg approach.
TLDR: I think any remaining libheap features are probably not goals of pwndbg and this could be closed. |
I think pwndbg currently has:
Maybe other stuff, I have not looked too much. GEF ( #178 ) added some logic parsing around checking all of the malloc_chunk headers to detect UAF. angelheap has some functionality similar to pwndbg's unicorn emulation which traces what the heap will do on next free(). I used to have this in libheap but I took it out as this kind of thing breaks every single glibc since they are always moving the structures and malloc()/free() functions around. So I think it's more effort to support than it's worth. |
Regarding bullet 2, how does that work? All of glibc's heap metadata is inline. |
Just storing the heap state in a snapshot/trace somewhere else and diffing the heap against that. Shadow saves the state to pyrsistence. I used to take traces from Core's HeapDraw (which halvar rewrote now) and import those into my python classes (which is why I didn't go the typeinfo.load route). |
I've been working on a new heap window for bullet 2 (much like our stack window) that has a view of the current heap and all broken free-lists. I thought about implementing bullet point 1, but we wouldn't be able to use |
We can now parse the heap without symbols. I think that was the last remaining thing keeping this open. If not, let's make new issues for the specific missing functionality. |
Whatever they're doing: https://github.com/cloudburst/libheap
The text was updated successfully, but these errors were encountered: