转自: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如下: