使用 ZwUnmapViewOfSection 卸载内存镜像替代内存镜像
发布时间
阅读量:
阅读量
The ZwUnmapViewOfSection routine unmaps a view of a section from the virtual address space of a subject process.
NTSTATUS ZwUnmapViewOfSection(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress );
该函数在 wdm.h 文件中进行声明,其作用是移除进程的内存镜像(Image Buffer)。所谓内存镜像,指的是进程所占用的4GB虚拟地址空间中,从 ImageBase 地址开始、长度为 SizeOfImage 的内存区域。
完成内存镜像的卸载操作后,系统将释放出一块“干净”的4GB空间。此时,可以通过 VirtualAllocEx 函数向其中注入数据,例如替换为其他程序对应的内存镜像。
采用这种方式的优势在于,我们能够直接从内存中启动一个程序,从而避免了与磁盘读写相关的操作。通常情况下,使用 CreateProcess 函数创建进程时必须指定程序路径,而通过此技术手段可以绕过这一限制。
接下来将提供一个简单的示例程序,用于展示如何创建一个处于挂起状态的“傀儡进程”,
全部评论 (0)
还没有任何评论哟~
