阅读:1088回复:2
hook ssdt怎么受driverstudio的影响呢?
在我的XP系统里面我hook了zwopenprocess,BSOD发生了,但同样的代码在一些机器上运行正常。我在本机装上Compuware_DriverStudio_v3.1准备调试,结果装完后又好了,但我卸载了driverstudio以后又发生了BSOD。然后我用windbg分析dump文件,结果是:
FAULTING_IP: ProSer!HookSystemCall+25 [d:\proser_w2k\proser.c @ 96] f7b00651 c704815205b0f7 mov dword ptr [ecx+eax*4],offset ProSer!NewZwOpenProcess (f7b00552) 我的源码是: typedef struct ServiceDescriptorEntry { unsigned int *ServiceTableBase; unsigned int *ServiceCounterTableBase; //Used only in checked build unsigned int NumberOfServices; unsigned char *ParamTableBase; } ServiceDescriptorTableEntry_t, *PServiceDescriptorTableEntry_t; __declspec(dllimport) ServiceDescriptorTableEntry_t KeServiceDescriptorTable; #define SYSTEMSERVICE(_function) KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)_function+1)] VOID HookSystemCall() { OldZwOpenProcess = (ZW_OPENPROCESS)(SYSTEMSERVICE(ZwOpenProcess)); _asm cli (ZW_OPENPROCESS)(SYSTEMSERVICE(ZwOpenProcess)) = NewZwOpenProcess; _asm sti } 我的问题是,以上代码有什么不对劲吗?但是为什么又在某些机器上运行正常?并且怎么受driverstudio的影响呢? |
|
沙发#
发布于:2007-10-24 09:46
在论坛搜索一下吧,很多例子
|
|
板凳#
发布于:2007-10-24 10:53
列子我也有很多,我就是想弄清楚上面的原因呀.
|
|