首页
社区
课程
招聘
[求助]WIN7SP1下用MDL蓝屏
发表于: 2013-4-27 15:03 6225

[求助]WIN7SP1下用MDL蓝屏

2013-4-27 15:03
6225
/*********************
这个问题我已经自己解决了
见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);
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 435
活跃值: (172)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
2
360的驱动里面应该有,逆一下就知道了
2013-4-27 16:20
0
雪    币: 140
活跃值: (125)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
[QUOTE='火翼[CCG];1171177']360的驱动里面应该有,逆一下就知道了[/QUOTE]

我初学 谢谢~
2013-4-27 17:01
0
雪    币: 140
活跃值: (125)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
RT 参考前辈们的代码 自己写了两个函数 用来开关写保护
如果错谬 请指教~
PMDL g_pMdl = NULL;
PULONG g_pMdlTable = NULL;

NTSTATUS WriteSSDT_On()
{
	g_pMdl = IoAllocateMdl(KeServiceDescriptorTable.ServiceTableBase, KeServiceDescriptorTable.NumberOfServices * 4, FALSE, FALSE, NULL);
	if (!g_pMdl)	return STATUS_UNSUCCESSFUL;

	MmBuildMdlForNonPagedPool(g_pMdl);
	g_pMdl->MdlFlags  |= MDL_MAPPED_TO_SYSTEM_VA;
	g_pMdlTable = (PULONG)MmMapLockedPagesSpecifyCache(g_pMdl, KernelMode, MmNonCached, NULL, FALSE, NormalPagePriority);
	if (!g_pMdlTable)
	{
		IoFreeMdl(g_pMdl);
		return STATUS_UNSUCCESSFUL;
	}

	return STATUS_SUCCESS;
}

VOID WriteSSDT_Off()
{
	MmUnmapLockedPages(g_pMdlTable, g_pMdl);
	IoFreeMdl(g_pMdl);
}
2013-4-27 17:52
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
5
mark~~~开关写保护
2013-4-28 11:38
0
雪    币: 140
活跃值: (125)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
直接开关写保护好像有时候不安全吧
我也刚开始研究 看前辈们都说MDL 是一个比较合适的方法~
2013-4-29 17:20
0
游客
登录 | 注册 方可回帖
返回
//