Getting Started
exhume_memory is the specialized memory forensics module of the toolsuite for acquisition and analysis, built on the memflow framework. This module is currently unstable and subject to changes.
Features​
- BitLocker Key Recovery: Fast extraction of FVEK/VMK keys using pool tag and signature scanning.
- Parallel Scanning: Multi-threaded physical memory analysis for raw memory dumps and KVM sources.
- Multiple Connectors: Supports LeechCore (FPGA/USB hardware), KVM, and raw memory images.
- Process Listing and Triage: Enumerate processes and inspect modules with architecture detection.
Prerequisites​
Optional - LeechCore (for pcileech connector)​
To use exhume_memory with an FPGA device (pcileech), you need the LeechCore runtime libraries.
macOS​
- Download the latest LeechCore macOS release ($LEECHCORE_RELEASE_URL).
- Extract the libraries (
leechcore.dylib,leechcore_ft601_driver_macos.dylib, etc.). - Place them in one of the following locations:
src-tauri/binaries/bin-macos/LeechCore/runtimewhen embeddingexhume_memoryinto the Thanatology Tauri app.- A directory named
lc-runtimein the same folder as theexhume_memorybinary. - Any directory in your
DYLD_LIBRARY_PATH. /usr/local/libor other standard library paths.
When run inside Thanatology on macOS, exhume_memory now prefers the packaged Tauri runtime at binaries/bin-macos/LeechCore/runtime and falls back to lc-runtime for standalone workflows.
Windows / Linux​
Follow the standard memflow and leechcore installation guides for your platform.
Installation​
# Clone the repository
git clone https://github.com/forensicxlab/exhume_memory.git
cd exhume_memory
# Build the project
cargo build --release
Usage​
Use --json before the subcommand to emit structured output on stdout.
./target/release/exhume_memory --json --connector /path/to/dump.raw --connector-type rawmem pslist
BitLocker Recovery​
Raw Memory Dump (High Speed Parallel Scan):
./target/release/exhume_memory --connector /path/to/dump.raw --connector-type rawmem bitlocker
Live System (LeechCore FPGA):
./target/release/exhume_memory --connector ":device=FPGA" --connector-type pcileech bitlocker
Process Listing (pslist)​
./target/release/exhume_memory --connector ":device=FPGA" pslist
./target/release/exhume_memory --json --connector ":device=FPGA" pslist
Process Triage​
./target/release/exhume_memory --connector /path/to/dump.raw --connector-type rawmem triage --pid 640
Environment Variables​
./target/release/exhume_memory --connector /path/to/dump.raw --connector-type rawmem envars --pid 640
./target/release/exhume_memory --connector /path/to/dump.raw --connector-type rawmem envars --pid 640 --name USERDOMAIN
Memory Dumping​
./target/release/exhume_memory memdump --end 0x100000000 --out memory.raw
memdump always starts at 0x0. If --end is omitted, it dumps to the connector's resolved max
physical address.
./target/release/exhume_memory memdump --out memory.raw
Example: Raw Dump BitLocker Scan​
cargo run --manifest-path members/exhume_memory/Cargo.toml -- \
--json \
--connector-type rawmem \
--connector /Volumes/Forensics/suspect_memdum.raw \
bitlocker