overducast/WriteProcess-Dumper

GitHub: overducast/WriteProcess-Dumper

通过 DLL 注入 hook 目标进程的内存写入 API,实时记录并转储所有写入缓冲区的 Windows 恶意代码分析工具。

Stars: 1 | Forks: 0

# WriteProcess 转储器 一款 Windows 研究工具,通过 DLL 注入 hook 目标进程中的 `WriteProcessMemory` 和 `VirtualAllocEx`,将每一次写入记录并转储到磁盘。适用于脱壳、shellcode 提取以及研究注入行为。 ## 工作原理 [![展示](https://cdn-cf-east.streamable.com/image/iaellg.jpg)](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提取, 云资产清单, 动态脱壳, 安全意识培训, 恶意软件分析, 数据擦除, 端点可见性, 逆向工程