首页
社区
课程
招聘
[求助]在DriverUnload间歇出现这种问题
发表于: 2010-5-29 14:25 9194

[求助]在DriverUnload间歇出现这种问题

2010-5-29 14:25
9194
DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS (ce)
A driver unloaded without cancelling timers, DPCs, worker threads, etc.
The broken driver's name is displayed on the screen.

而Unload如下:
VOID DriverUnload(PDRIVER_OBJECT pDrvObject)
{	
	
	UNICODE_STRING strLink;
	UnHookSSDT();
	RtlInitUnicodeString(&strLink, LINK_NAME);
	IoDeleteSymbolicLink(&strLink);
	IoDeleteDevice(pDrvObject->DeviceObject);
	dprintf("[filemonitor] Unloaded\n");
}

VOID HookSSDT()
{
	//初始化服务号
	InitSystemCallIndex();
	//映射MDL
	g_pMdlSystemCall = MmCreateMdl(	NULL, 
									KeServiceDescriptorTable->ServiceTableBase, 
									KeServiceDescriptorTable->NumberOfServices*4);
    if(!g_pMdlSystemCall)
		return ;
    MmBuildMdlForNonPagedPool(g_pMdlSystemCall);
    g_pMdlSystemCall->MdlFlags = g_pMdlSystemCall->MdlFlags | MDL_MAPPED_TO_SYSTEM_VA;
    MappedSystemCallTable = MmMapLockedPages(g_pMdlSystemCall, KernelMode);
	//调用HOOK宏
	HOOK_SYSCALL( ZwOpenFileIndex,      MyZwOpenFile,		      OrigZwOpenFile      );
	HOOK_SYSCALL( ZwCreateFileIndex,    MyZwCreateFile,           OrigZwCreateFile    );
	HOOK_SYSCALL( ZwReadFileIndex,		MyZwReadFile,             OrigZwReadFile      );
	HOOK_SYSCALL( ZwWriteFileIndex,		MyZwWriteFile,            OrigZwWriteFile     );

}

VOID UnHookSSDT()
{


	UNHOOK_SYSCALL( ZwOpenFileIndex,		MyZwOpenFile,		      OrigZwOpenFile      );
	UNHOOK_SYSCALL( ZwCreateFileIndex,		MyZwCreateFile,           OrigZwCreateFile    );
	UNHOOK_SYSCALL( ZwReadFileIndex,		MyZwReadFile,             OrigZwReadFile      );
	UNHOOK_SYSCALL( ZwWriteFileIndex,		MyZwWriteFile,            OrigZwWriteFile     );

	//Unlock and Free MDL
	if(g_pMdlSystemCall)
	{
		MmUnmapLockedPages( MappedSystemCallTable, g_pMdlSystemCall );
		IoFreeMdl(g_pMdlSystemCall);
	}
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS (ce)
2010-5-29 14:27
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
ZwXXXXXFile 可能有挂起的irp
2010-5-29 14:46
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
4
那怎么处理 可以避免这种错误
2010-5-29 14:50
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
5
魔法盾同样挂钩这几个函数 它就稳定  不知道 如何处理的
2010-5-29 14:51
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
魔法盾挂钩35个函数  使用感受:很糟糕
2010-5-29 14:52
0
雪    币: 287
活跃值: (102)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
同步...................
2010-5-29 19:05
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
8
太精辟了 不懂
2010-5-30 15:38
0
雪    币: 107
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
有人说拦掉所有irp,自己构造,下发,将拦到的pending挂入list,在driverunload里XX,想了想.不行.
2010-5-31 11:27
0
游客
登录 | 注册 方可回帖
返回
//