转自:http://lwglucky.blog.51cto.com/1228348/284829
有部分模块加载时会调用ZwMapViewOfSection,比如进程创建时映射N份DLL到自己的虚拟空间中去.我们替换SSDT中的这个函数,过滤出是加载Kernel32.dll的情况,从参数中取得其基址,Inline Hook其EAT中的CreateThread函数,跳转到在这个进程虚拟地址空间中申请的Buffer,在其中完成DLL的加载过程.
关键API:
ZwAllocateVirtualMemory ---- 在此进程空间中分配内存,存放Shellcode
ZwProtectVirtualMemory ---- 使当前内存块具有可读可写属性
IoAllocateMdl ---- 创建MDL
关键Code如下:



本文详细介绍了如何通过替换SSDT中的ZwMapViewOfSection函数,过滤出加载Kernel32.dll的情况,进而InlineHook其EAT中的CreateThread函数,实现在此进程虚拟地址空间中申请缓冲区并完成DLL加载的过程。关键API包括ZwAllocateVirtualMemory、ZwProtectVirtualMemory和IoAllocateMdl等。
3704

被折叠的 条评论
为什么被折叠?



