-
-
[分享]ExAllocatePool与常见kernel peload的问题
-
发表于:
2012-11-3 10:44
7407
-
[分享]ExAllocatePool与常见kernel peload的问题
kernel peload的时候大部分人都是用pool来存储pe然后直接执行代码的~其实在x86的情况下,一般ExAllocatePool出来的pool直接可以执行,但是某些x64的系统上pool可能无法执行。
这里提供一个方法map任意的内存为可执行内存~
NTSTATUS MmMapMemoryExcute(PVOID MemAddress,SIZE_T nSize,PVOID *ExecuteMap)
/*
输入参数:
MemAddress reload后的base地址
nSize 使用真实的ImageSize
ExecuteMap 用于存放map成功后可执行的地址的地址
返回:
只有STATUS_SUCCESS才是成功,其他均为有错误。
*/
{
NTSTATUS ns = STATUS_UNSUCCESSFUL;
PMDL Mdl;
if (!MemAddress||!ExecuteMap)
{
ns= STATUS_INSUFFICIENT_RESOURCES;
goto end;
}
if (ExGetPreviousMode()!=KernelMode)
{
ns = STATUS_ACCESS_DENIED;
goto end;
}
Mdl = IoAllocateMdl(
MemAddress,
nSize,
FALSE,
TRUE,
NULL
);
if (!Mdl)
{
ns = STATUS_INSUFFICIENT_RESOURCES;
goto end;
}
*ExecuteMap = MmMapLockedPagesSpecifyCache(
Mdl,
KernelMode,
MmCached,
NULL,
FALSE,
LowPagePriority
);
if (!(*ExecuteMap))
{
IoFreeMdl( Mdl );
ns = STATUS_INSUFFICIENT_RESOURCES;
goto end;
}
ns = MmProtectMdlSystemAddress(
Mdl,
PAGE_EXECUTE_READWRITE
);
if (!NT_SUCCESS( ns ))
{
IoFreeMdl( Mdl );
}
end:
return ns;
}
PS:
求捐助,求赞助,求投资,有意者欢迎联系QQ:86879759
欲购买 AntiGameProtect或UltraGameProtect或BypassGameProtect系列代码与产品 也欢迎联系。
AntiGameProtect系列用于穿透驱动保护调试程序
UltraGameProtect系列用于保护程序不被各类调试器(包括滴水调试器,GoodDbg等)成功调试
BypassGameProtect系列用于穿透驱动保护进行各种操作(如读写内存,注入dll,模拟键盘鼠标,防内存检测,DLL隐藏,反CRC效验等)
qq技术扯淡群1:171797360
qq技术扯淡群2:1748876
yy技术扯淡频道:80252844
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!