-
-
[求助]WIN7SP1下用MDL蓝屏
-
发表于:
2013-4-27 15:03
6224
-
/*********************
这个问题我已经自己解决了
见3L
*********************/
RT,接触内核时间不长,最开始我一直使用cr0来开关内存写保护的。不过在W7SP1下作HOOK,基本都是直接蓝了。
我在论坛找了一下,看到解除内存写保护的3种方式中,MDL最为靠谱,所以我也试验了一下。
看了几位论坛前辈的帖子和KSSD里面的资料,我自己搞了一下,但是发现还是不行,驱动加载上等个几秒还是蓝了。
我看前辈们有人说好像WIN7 不能用MmCreateMdl 要用IoAllocateMdl
不过那个帖子是说R3下内存的 不小的R0下是否也是需要用Io这个函数。
希望前辈们能给出一些指点,因为我在尝试用IoAllocateMdl这些函数时候,不晓得参数应该怎么设置。希望能给出一些例子,谢谢。
代码如下
NTSTATUS MDL_ON(PMDL pMdl, PVOID* pMdlTable, PVOID pAddr, ULONG uSize)
{
pMdl = MmCreateMdl(NULL, pAddr, uSize);
if (pMdl == NULL) return STATUS_UNSUCCESSFUL;
MmBuildMdlForNonPagedPool(pMdl);
pMdl->MdlFlags = pMdl->MdlFlags | MDL_MAPPED_TO_SYSTEM_VA;
(PVOID&)pMdlTable = MmMapLockedPages(pMdl, KernelMode);
return STATUS_SUCCESS;
}
VOID MDL_OFF(PMDL pMdl, PVOID* pMdlTable)
{
MmUnmapLockedPages(pMdlTable, pMdl);
IoFreeMdl(pMdl);
}
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!