Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
Process-Dump — Windows tool for dumping malware PE files from memory back to disk for analysis. | Kitploit
Tools/GitHubGitHub/glmcdona/process-dump
Memory ForensicsReverse EngineeringForensicsMalware AnalysisBinary Analysis
GitHubglmcdona/process-dump

Process-Dump

Windows tool for dumping malware PE files from memory back to disk for analysis.

View RepositoryWebsite
1.9k2832416 days agoReviewed by Kitploit

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Process Dump

Process Dump is a Windows reverse-engineering command-line tool to dump malware memory components back to disk for analysis. Often malware files are packed and obfuscated before they are executed in order to avoid AV scanners, however when these files are executed they will often unpack or inject a clean version of the malware code in memory. A common task for malware researchers when analyzing malware is to dump this unpacked code back from memory to disk for scanning with AV products or for analysis with static analysis tools such as IDA.

Process Dump works for Windows 32 and 64 bit operating systems and can dump memory components from specific processes or from all processes currently running. Process Dump supports creation and use of a clean-hash database, so that dumping of known files such as kernel32.dll can be skipped. Its main features include:

  • Dumps code from a specific process or all processes.
  • Finds and dumps hidden modules that are not properly loaded in processes.
  • Finds and dumps loose code chunks even if they aren't associated with a PE file. It builds a PE header and import table for the chunks.
  • Reconstructs imports using an aggressive approach.
  • Can run in close dump monitor mode (-closemon), where hooked processes will be paused and dumped just before they terminate.
  • Multi-threaded, so when you are dumping all running processes it will go pretty quickly.
  • Can generate a clean hash database. Generate this on a clean system to skip known modules during later dumps.

I'm maintaining an official compiled release on my website here: https://split-code.com/processdump.html

Installation

You can download the latest compiled release of Process Dump here:

  • https://github.com/glmcdona/Process-Dump/releases

Use pd64.exe on 64-bit Windows (recommended), or pd32.exe on 32-bit Windows. Both binaries are standalone; no Microsoft Visual C++ Redistributable is required.

Command-line arguments

Process Dump can dump all unknown code from memory (-system), dump specific processes, or monitor processes and dump them before they terminate.

On a clean workstation, generate a baseline database with either:

  • pd64.exe -db genquick
  • pd64.exe -db gen

Run database generation and dumping as separate commands. For best access, run as Administrator. The default worker count is 16.

Example usage:

  • pd64.exe -system
  • pd64.exe -pid 419
  • pd64.exe -pid 0x1a3
  • pd64.exe -pid 0x1a3 -a 0x401000 -o C:\dumps
  • pd64.exe -p "chrome[.]exe"
  • pd64.exe -p ".*chrome.*"
  • pd64.exe -closemon

General Dumping Options

OptionDescription
-systemDumps modules and loose code not matching the clean hash database from all accessible processes.
-pid <pid>Dumps a specific process. Use decimal or a 0x prefix for a hexadecimal PID.
-closemonHooks process termination and dumps before exit. Use in a controlled environment; press Ctrl+C to stop.
-p <regex>Dumps processes whose entire name matches a case-sensitive regular expression. Multiple matches prompt for confirmation.
-a <address>Dumps at the specified base address. Requires -pid; accepts decimal or 0x-prefixed hex.
-o <path>Sets the output folder (default: current working directory). Create the folder first; existing files are never overwritten.

Clean Hash Database Options

Database files default to the application directory: clean.hashes, entrypoints.hashes and shortentrypoints.hashes.

OptionDescription
-db genAdds hashes from running processes and PE files recursively in %WINDIR%, %USERPROFILE%, C:\Program Files and C:\Program Files (x86).
-db genquickAdds hashes from running processes only. Faster than gen, but less complete.
-db add <dir>Adds PE file hashes from the specified directory recursively, including entrypoint signatures.
-db remove <dir>, -db rem <dir>Removes matching clean-module hashes from the directory recursively. Entrypoint signatures are retained.
-nrDisables recursion for database add/remove commands. Does not affect -db gen.
-db cleanClears all three databases, including entrypoint signatures.
-db ignoreIgnores all three loaded databases for this dump without changing the files. Repeated modules may still be skipped within the run.
-cdb <filepath>, -c <filepath>Sets the clean hash database path.
-edb <filepath>Sets the entrypoint hash database path.
-esdb <filepath>Sets the short entrypoint hash database path.

Output Options

OptionDescription
-vPrints verbose diagnostics.
-nhSuppresses the version/copyright banner.
--help, -help, -h, --hPrints help and exits. Running without arguments also prints help.

Advanced Options

OptionDescription
-gForces generation of both 32-bit and 64-bit PE headers, ignoring existing headers.
-eprecForces entrypoint recovery even if a valid entrypoint exists. Recovery is heuristic; an unsuccessful search leaves the old value unchanged.
-niDisables aggressive import reconstruction (enabled by default).
-ncDisables loose-code dumping and hashing (enabled by default).
-nepDisables entrypoint recovery and live entrypoint hashing, overriding -eprec. File database generation still collects entrypoint signatures.
-reexecExperimental preparation for re-running dumps. Discards some captured state and assumes the original section layout; does not run the dump or guarantee it will work. Off by default.
-ntUses one worker, equivalent to -t 1. Close monitoring still has a separate monitoring thread.
-t <count>Sets the worker count (default 16, minimum 1) for system dumping, database generation and close monitoring. Direct PID/name dumps remain synchronous. The last -t/-nt wins.

Usage Examples

CommandDescription
pd64.exe -db genquickQuickly builds a baseline from currently running processes.
pd64.exe -system -t 4 -o C:\dumpsDumps unknown modules and loose code with four workers into an existing output folder.
pd64.exe -closemonRuns in terminate monitor mode.
pd64.exe -pid 0x18ADumps modules and loose code from a specific process.
pd64.exe -p ".*chrome.*"Dumps processes with names containing chrome.
pd64.exe -db genBuilds a more complete baseline from running processes and common folders.
pd64.exe -db add C:\baseline -nrAdds PE files from a directory without searching subdirectories.
pd64.exe -pid 0x1a3 -a 0x401000Dumps at a specific address. If no PE header exists, generates both 32-bit and 64-bit headers.

Sandbox Usage

For malware analysis, use an isolated lab and run Process Dump as Administrator:

  • Build the clean hash database with pd64.exe -db gen or pd64.exe -db genquick before introducing the sample.
  • Keep pd64.exe -closemon running to capture hooked processes as they terminate.
  • Use pd64.exe -system to dump processes that are still running.
  • Press Ctrl+C to stop the monitor.

Dumps are written to the working directory unless -o is set. Keep them private. Dumps are for analysis and are not guaranteed to run; images larger than 256 MiB are rejected.

Notes on the naming convention of dumped modules:

  • hiddenmodule instead of a module name indicates the module was not properly registered in the process.
  • codechunk means a dump from a loose executable region without a PE header. These are dumped twice, with reconstructed x86 and x64 headers.

Example filenames:

  • notepad_exe_PID2990_hiddenmodule_16B8ABB0000_x86.dll
  • notepad_exe_PID3b5c_notepad.exe_7FF6E6630000_x64.exe
  • notepad_exe_PID2c54_codechunk_17BD0000_x86.exe
  • notepad_exe_PID2c54_codechunk_17BD0000_x64.exe
Download Tool