Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Process-Dump — 用于将恶意软件PE文件从内存转储到磁盘进行分析的Windows工具。 | Kitploit
工具/GitHubGitHub/glmcdona/process-dump
内存取证逆向工程取证分析恶意软件分析二进制分析
GitHubglmcdona/process-dump

Process-Dump

用于将恶意软件PE文件从内存转储到磁盘进行分析的Windows工具。

查看仓库
1.9k2832417天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

Process Dump

Process Dump 是一款 Windows 逆向工程命令行工具,用于将恶意软件的内存组件转储回磁盘以供分析。恶意软件文件在执行前通常会被打包和混淆,以躲避 AV 扫描器;然而当这些文件被执行时,它们往往会在内存中解包或注入一份干净的恶意软件代码。恶意软件研究人员在分析恶意软件时的一项常见任务,就是将这份解包后的代码从内存转储回磁盘,以便用 AV 产品扫描,或用 IDA 等静态分析工具进行分析。

Process Dump 适用于 Windows 32 位和 64 位操作系统,可以从特定进程或当前正在运行的所有进程中转储内存组件。Process Dump 支持创建和使用干净哈希数据库,从而可以跳过对 kernel32.dll 等已知文件的转储。其主要功能包括:

  • 从特定进程或所有进程转储代码。
  • 查找并转储未正确加载到进程中的隐藏模块。
  • 查找并转储零散的代码块,即使它们不与 PE 文件关联。它会为这些代码块构建 PE 头和导入表。
  • 使用激进的方法重建导入。
  • 可以运行在关闭转储监控模式(-closemon),此时被挂钩的进程会在终止前被暂停并转储。
  • 多线程,因此当你转储所有正在运行的进程时速度会相当快。
  • 可以生成干净哈希数据库。在干净系统上生成此数据库,以便在后续转储时跳过已知模块。

我在我的网站上维护着一个官方编译版本: https://split-code.com/processdump.html

安装

你可以在此处下载 Process Dump 的最新编译版本:

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

在 64 位 Windows 上使用 pd64.exe(推荐),或在 32 位 Windows 上使用 pd32.exe。两个二进制文件均为独立文件;无需 Microsoft Visual C++ Redistributable。

命令行参数

Process Dump 可以从内存中转储所有未知代码(-system)、转储特定进程,或监控进程并在其终止前进行转储。

在干净的工作站上,使用以下任一命令生成基线数据库:

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

将数据库生成和转储作为单独的命令运行。为获得最佳访问权限,请以管理员身份运行。默认工作线程数为 16。

示例用法:

  • 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

通用转储选项

选项描述
-system从所有可访问的进程中转储不匹配干净哈希数据库的模块和零散代码。
-pid <pid>转储特定进程。使用十进制或带 0x 前缀的十六进制 PID。
-closemon挂钩进程终止并在退出前转储。请在受控环境中使用;按 Ctrl+C 停止。
-p <regex>转储其完整名称匹配区分大小写的正则表达式的进程。多个匹配项会提示确认。
-a <address>在指定的基地址处转储。需要 -pid;接受十进制或带 0x 前缀的十六进制。
-o <path>设置输出文件夹(默认:当前工作目录)。请先创建该文件夹;现有文件绝不会被覆盖。

干净哈希数据库选项

数据库文件默认位于应用程序目录:clean.hashes、entrypoints.hashes 和 shortentrypoints.hashes。

选项描述
-db gen从正在运行的进程以及 %WINDIR%、%USERPROFILE%、C:\Program Files 和 C:\Program Files (x86) 中递归的 PE 文件添加哈希。
-db genquick仅从正在运行的进程添加哈希。比 gen 更快,但不够完整。
-db add <dir>从指定目录递归添加 PE 文件哈希,包括入口点签名。
-db remove <dir>, -db rem <dir>从目录中递归移除匹配的干净模块哈希。入口点签名会保留。
-nr禁用数据库添加/移除命令的递归。不影响 -db gen。
-db clean清除所有三个数据库,包括入口点签名。
-db ignore在本次转储中忽略所有三个已加载的数据库,而不更改文件。重复的模块在运行期间仍可能被跳过。
-cdb <filepath>, -c <filepath>设置干净哈希数据库路径。
-edb <filepath>设置入口点哈希数据库路径。
-esdb <filepath>设置短入口点哈希数据库路径。

输出选项

选项描述
-v打印详细诊断信息。
-nh抑制版本/版权横幅。
--help, -help, -h, --h打印帮助并退出。不带参数运行也会打印帮助。

高级选项

选项描述
-g强制生成 32 位和 64 位 PE 头,忽略现有头。
-eprec即使存在有效入口点也强制进行入口点恢复。恢复是启发式的;搜索不成功则保留旧值不变。
-ni禁用激进的导入重建(默认启用)。
-nc禁用松散代码转储和哈希(默认启用)。
-nep禁用入口点恢复和实时入口点哈希,覆盖 -eprec。文件数据库生成仍会收集入口点签名。
-reexec用于重新运行转储的实验性准备。丢弃部分捕获的状态并假定原始节布局;不会运行转储,也不保证其能正常工作。默认关闭。
-nt使用一个工作线程,等同于 -t 1。关闭监控仍有单独的监控线程。
-t <count>设置用于系统转储、数据库生成和关闭监控的工作线程数(默认 16,最小 1)。直接 PID/名称转储保持同步。最后一个 -t/-nt 生效。

使用示例

命令描述
pd64.exe -db genquick从当前正在运行的进程快速构建基线。
pd64.exe -system -t 4 -o C:\dumps使用四个工作线程将未知模块和松散代码转储到现有输出文件夹。
pd64.exe -closemon以终止监控模式运行。
pd64.exe -pid 0x18A从特定进程转储模块和松散代码。
pd64.exe -p ".*chrome.*"转储名称包含 chrome 的进程。
pd64.exe -db gen从正在运行的进程和常见文件夹构建更完整的基线。
pd64.exe -db add C:\baseline -nr从目录添加 PE 文件而不搜索子目录。
pd64.exe -pid 0x1a3 -a 0x401000在特定地址转储。如果不存在 PE 头,则生成 32 位和 64 位头。

沙箱使用

对于恶意软件分析,请使用隔离的实验环境并以管理员身份运行 Process Dump:

  • 在引入样本之前,使用 pd64.exe -db gen 或 pd64.exe -db genquick 构建干净哈希数据库。
  • 保持 pd64.exe -closemon 运行,以便在被挂钩进程终止时捕获它们。
  • 使用 pd64.exe -system 转储仍在运行的进程。
  • 按 Ctrl+C 停止监控。

除非设置了 -o,否则转储会写入工作目录。请妥善保管。转储用于分析,不保证能运行;大于 256 MiB 的映像会被拒绝。

关于转储模块命名约定的说明:

  • hiddenmodule 而非模块名,表示该模块未在进程中正确注册。
  • codechunk 表示从没有 PE 头的松散可执行区域转储的内容。这些内容会被转储两次,分别重建 x86 和 x64 头。

示例文件名:

  • 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

版本历史

版本 3.0.0(2026 年 10 月 2 日)

  • 修复了过大和空的转储,并改进了节区和导入重建。
  • 改进了入口点恢复。
  • 加快了系统转储和数据库生成速度。
  • 修复了安全性和可靠性问题,并添加了自动化测试。

版本 2.1(2017 年 2 月 12 日)

  • 修复了某些情况下最后一个节区会被填充为零的 bug。感谢 megastupidmonkey 报告此问题。
  • 修复了 64 位基地址会被截断为 32 位地址的 bug。现在它会正确保留完整的 64 位模块基地址。感谢 megastupidmonkey 报告此问题。
  • 解决了进程转储关闭监视器会导致 csrss.exe 崩溃的问题。
  • 阻止 Process Dump 在关闭监视模式下挂钩自身进程。

版本 2.0(2016 年 9 月 18 日)

  • 新增标志 '-closemon',以监视模式运行 Process Dump。它会在任何进程关闭时暂停并转储该进程。此功能旨在与恶意软件分析沙箱良好配合,确保在恶意进程关闭之前从内存中转储恶意软件。
  • 将 Process Dump 升级为多线程。转储或获取多个进程哈希的命令将按操作运行单独的线程。默认线程数为 16,这显著加快了 Process Dump 的一般转储处理速度。
  • 将 Process Dump 升级为可转储内存中发现的未附加代码块。这些被识别为内存中未附加到模块且没有 PE 头的可执行区域。它还要求代码块至少引用 2 个导入才被视为有效,以减少噪声。转储时,会重建 PE 头以及导入表。代码块完全受干净哈希数据库支持。
  • 添加了用于控制干净哈希数据库文件路径以及转储文件输出文件夹的标志。
  • 修复了从用户路径生成干净哈希数据库时导致崩溃的问题。
  • 修复了标志 '-g'(强制生成 PE 头)的问题。此前即使设置了此标志,系统转储(-system)在转储进程时也会忽略此标志。
  • 各种性能改进。
  • 将项目升级到 VS2015。

版本 1.5(2015 年 11 月 21 日)

  • 修复了非常大的内存区域会导致 Process Dump 挂起的 bug。
  • 修复了在 64 位 Windows 下无法找到某些位于高地址的模块的 bug。
  • 在详细模式下现在会输出更多调试信息。

版本 1.4(2015 年 4 月 18 日)

  • 新增了激进的导入重建方法。现在会将模块中的所有 DWORD 和 QWORD 修补为对应的导出匹配项。
  • 新增 '-a(要转储的地址)' 标志以转储特定地址。它将为该地址生成 PE 头并构建导入表。
  • 新增 '-ni' 标志以跳过新的导入重建算法。
  • 新增 '-g' 标志,即使转储模块时已存在 PE 头也强制生成新的 PE 头。例如,当 PE 头格式错误时,这很有用。
  • 各种 bug 修复。

版本 1.3(2013 年 10 月 10 日)

  • 改进了对节区指定无效虚拟大小和地址的 PE 头的处理。
  • 改进了将虚拟节区转储为磁盘节区的模块转储方法。

版本 1.1(2013 年 4 月 8 日)

  • 修复了与 Windows XP 的兼容性问题。
  • 修正了进程转储会打印正在转储模块但实际上并未转储的 bug。
  • 实现了 '-pid ' 转储标志。

版本 1.0(2013 年 4 月 2 日)

  • 初始版本。

编译源代码

在 Visual Studio 2019 或 2022(社区版即可)中打开 pd.sln,需安装“使用 C++ 的桌面开发”工作负载和 Windows SDK。为 Win32 或 x64 构建 Release 版本;Release 构建会静态链接运行时。

要从 Visual Studio Developer PowerShell 构建并运行测试:

msbuild pd.sln /m /p:Configuration=Release /p:Platform=x64
.\x64\Release\pd_tests.exe

32 位构建请使用 Platform=Win32。Python 测试可通过 python -m unittest discover -s tests -p "test_*.py" 运行。

下载工具