overducast/WriteProcess-Dumper
GitHub: overducast/WriteProcess-Dumper
通过 DLL 注入 hook 目标进程的内存写入 API,实时记录并转储所有写入缓冲区的 Windows 恶意代码分析工具。
Stars: 1 | Forks: 0
# WriteProcess 转储器
一款 Windows 研究工具,通过 DLL 注入 hook 目标进程中的 `WriteProcessMemory` 和 `VirtualAllocEx`,将每一次写入记录并转储到磁盘。适用于脱壳、shellcode 提取以及研究注入行为。
## 工作原理
[](https://streamable.com/iaellg)
`injector.exe` 以挂起状态启动目标可执行文件,通过 `LoadLibraryA` 远程线程注入 `dllmain.dll`,然后恢复该进程。DLL 一旦加载,就会在目标内部的 `WriteProcessMemory` 和 `VirtualAllocEx` 上安装内联 JMP hook。每次调用都会被拦截、记录,并且写入的缓冲区会被保存到 `.bin` 文件中。针对可执行内存区域的写入在文件名中会标记为 `-EXEC`。
```
Target process
└─ WriteProcessMemory() ──► Hooked_WriteProcessMemory()
├─ VirtualQueryEx() (classify region)
├─ IsTrackedExecRegion() (check VAE table)
├─ IsMZHeader() (detect PE image)
├─ Log to .txt
├─ Dump buffer to .bin
└─ Call original WPM
```
## 输出文件
所有文件都会被写入到 `dllmain.dll` 所在的目录下。
| 文件 | 内容 |
|------|----------|
| `WPMDump-.txt` | 包含地址、区域信息和 MZ 警告的完整调用日志 |
| `WPMDump--.bin` | 第 N 次 `WriteProcessMemory` 调用产生的原始缓冲区 |
| `WPMDump---EXEC.bin` | 同上,但目标区域是可执行的,或者缓冲区是一个 PE 镜像 |
## 构建
在 Windows 上需要 Visual Studio (MSVC)。运行提供的构建脚本:
```
compile.bat # produces injector.exe (x64) + dllmain.dll (x64)
compile_X86.bat # produces injector.exe (x86) + dllmain.dll (x86)
```
手动 MSVC 构建:
```
cl.exe /O2 /W4 /EHsc /Fe:injector.exe injector.cxx
cl.exe /O2 /W4 /EHsc /LD /Fe:dllmain.dll dllmain.cxx
```
## 用法
```
injector.exe
[?] Path to target .exe : C:\path\to\target.exe
[?] Path to dumper .dll : C:\path\to\dllmain.dll
```
按 Enter 键确认后,注入器会挂起启动目标,注入 DLL,然后恢复运行。转储文件会实时累积在 DLL 所在的目录下。按 `Ctrl+C` 可强制提前终止。
## Hook 细节
| API | 补丁 (x86) | 补丁 (x64) |
|-----|-------------|-------------|
| `WriteProcessMemory` | `E9 rel32` (5 字节) | `FF 25 00000000 + abs64` (14 字节) |
| `VirtualAllocEx` | `E9 rel32` (5 字节) | `FF 25 00000000 + abs64` (14 字节) |
每个 hook 都使用独立的 `CRITICAL_SECTION` 来串行化暂停/取消暂停操作。原始字节仅在真实调用期间恢复,随后补丁会被立即重新应用。
## EXEC 检测
如果满足以下任何一个条件,该次写入将被归类为 `-EXEC`:
- 缓冲区以 `MZ` 开头(PE 镜像头)
- 目标地址位于先前由 `VirtualAllocEx` 分配的、带有可执行保护标志的区域内
- `VirtualQueryEx` 报告目标区域当前具有可执行保护标志
## 要求
- Windows 7 或更高版本
- MSVC (Visual Studio 2019+)
- 根据目标的不同,可能需要管理员权限
## 免责声明
本工具旨在用于恶意软件分析、逆向工程研究以及在受控环境中的教育用途。请勿用于您不拥有或未获得明确检查权限的进程。
标签:API Hook, C++, DAST, DNS 反向解析, Shellcode提取, 云资产清单, 动态脱壳, 安全意识培训, 恶意软件分析, 数据擦除, 端点可见性, 逆向工程