阅读:1521回复:4
急急急!!!!SysEnter HOOK 过程中调用PsGetCurrentThreadId蓝屏
本人是初次接触内核驱动,写了一个简单的SysHOOK,系统环境是XP,现在的问题是,在HOOK处理的过程中调有PsGetCurrentThreadId系统就会蓝屏,请各位高手不吝赐教!部分代码下:
// ---------------------------------------------------------------- //这里有还没有写处理逻辑 int CheckFunction(int functionNo) { if (ISSELF) { return 1; } //MUTEX_WAIT(KMSELF); //ISSELF = TRUE; PsGetCurrentThreadId(); //如果注掉这一句,一切OK //ISSELF = FALSE; //MUTEX_RELEASE(KMSELF); return 1; } // ---------------------------------------------------------------- // Hook function __declspec(naked) MyKiFastCallEntry() { __asm { pushfd push eax push ebx push ecx push edx push ebp push esi push edi //call PsGetCurrentThreadId ; get thread id push eax call CheckFunction pop edi pop esi pop ebp pop edx pop ecx pop ebx pop eax popfd jmp [d_origKiFastCallEntry] } } NTSTATUS DriverInitialize (PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pusRegistryPath) { DWORD i; PDEVICE_OBJECT pDeviceObject = NULL; NTSTATUS ns = STATUS_DEVICE_CONFIGURATION_ERROR; if ((ns = IoCreateDevice (pDriverObject, DEVICE_CONTEXT_, &usDeviceName, FILE_DEVICE_SPY, 0, FALSE, &pDeviceObject)) == STATUS_SUCCESS) { if ((ns = IoCreateSymbolicLink (&usSymbolicLinkName, &usDeviceName)) == STATUS_SUCCESS) { gpDeviceObject = pDeviceObject; gpDeviceContext = pDeviceObject->DeviceExtension; gpDeviceContext->pDriverObject = pDriverObject; gpDeviceContext->pDeviceObject = pDeviceObject; MUTEX_INITIALIZE (gpDeviceContext->kmDispatch); MUTEX_INITIALIZE (gpDeviceContext->kmProtocol); __asm { push ecx push eax mov ecx, 0x176 rdmsr // read the value of the IA32_SYSENTER_EIP register mov d_origKiFastCallEntry, eax mov eax, offset MyKiFastCallEntry // Hook function address wrmsr // Write to the IA32_SYSENTER_EIP register pop eax pop ecx } } else { IoDeleteDevice (pDeviceObject); } } return ns; } 这个代码是在Nt Secrets书上的代码的基础上修改的. 另外还有一个问题,就是我HOOK了SysEnter,可在处理过程中又需要调有内核函数,怎么避免死循环呢? 急!!!! |
|
沙发#
发布于:2009-06-17 21:48
高手都不屑于回答我的问题?本人是新手呀,也没什么分,不过如果大牛愿意帮忙我也愿意以其它的方式酬谢呀. 请高手们一定要赐都呀.
|
|
板凳#
发布于:2009-06-18 08:17
不会吧, 都这么长时间了也不见大牛来说句话. 不要这样呀,帮帮我!
|
|
地板#
发布于:2009-06-18 15:32
还没有人回答?怎么这样呀,都一天了,高手都哪里去了?真让我失望呀
|
|
地下室#
发布于:2009-06-19 20:42
新手,连结帖也不知道怎么操作. 不说了
|
|