|
关于SSDT HOOK后通过事件通知应用程序问题
[复制链接]
关于SSDT HOOK后通过事件通知应用程序问题
HOOK SSDT应该没有问题通过DbgPrint在自己的函数中显示被HOOK的信息一切正常但是通过事件通知应用程序时却有时候会蓝屏
驱动:
在列程序IRP_MJ_WRITE中
通过
RtlCopyMemory(&hEventApp,Irp->AssociatedIrp.SystemBuffer,4);
ObReferenceObjectByHandle(hEventApp,EVENT_MODIFY_STATE,*ExEventObjectType,Irp->RequestorMode,(PVOID*) &pEventApp,NULL);
得到用户应用程序传来的事件对象指针
然后在自己定义用来代替被HOOK的函数的函数里用如下代码激发事件
if(pEventApp!=NULL)
{
KeSetEvent(pEventApp, IO_NO_INCREMENT, TRUE);
KeClearEvent(pEventApp);
}
======================================================================
应用程序:
hShareE = CreateEvent(NULL,TRUE,FALSE,"jwtEvent");//创建事件
DWORD t;
HANDLE fh = CreateFile("\\\\.\\jwtddk", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
WriteFile(fh,&hShareE,4,&t,NULL);//将事件句柄传到驱动中
然后在应用程序中创建一个线程等待事件发生代码如下:
UINT __cdecl mySingle( LPVOID pParam )
{
while(1)
{
//阻塞等待
WaitForSingleObject((HANDLE) pParam,INFINITE);
//通知用户
AfxMessageBox("jwt Event!");//这句写与不写有时候均出线蓝屏
}
return 0;
}
请大侠赐教
|
|