Add ElfCoreDump plugins#1984
Open
meck-gd wants to merge 1 commit intovolatilityfoundation:developfrom
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When working with memory dumps, I sometimes find myself in a position where I need deep introspection into a specific process. For example, I'll initially locate a specific structure/pointer by hand and then I need to follow pointers to locate specific runtime values that the process had at the time the dump was created.
So far, Volatility was not able to output process address spaces in a container format that other tools could easily read. I often had to use
memmapto create 1) a dump file and 2) a json file containing the virtual->file mappings, and then write custom tooling that parsed both to achieve what I wanted.This pull request adds plugins that create an ELF core dump for a given process id. This format can be parsed by many libraries such as LIEF in Python or Goblin in Rust. It can also be opened by gdb for manual poking around (e.g., you can use
info proc mappingsto list modules andxto view contents at virtual addresses of your choice).I didn't include thread state in the dump, because getting accurate register contents is a pretty hard problem when the processes were not prepared for dumping by the kernel beforehand, as would normally be the case for core dumps.
It may seem weird that Windows processes are also put into an ELF, but apart from the different image path format there's no real difference between process address spaces of different operating systems. My use case was using
py-spyto inspect a Python process, and it ate the Windows process core dump just fine with some minimal adjustments.