阅读:1949回复:4
【求助】关于堕落天才sysenter Hook代码在双核下运行的问题
小弟初学驱动编程,在SSDT表后加入了几个自己定义的函数,然后想在sysenter处改变内核函数的索引值使之指向自己定义的函数,sysenter Hook使用的是堕落天才大大的代码,在其中MyKiFastCallEntry中修改eax的值为自己函数的索引值。代码在XP SP2单核机器上运行正常,但是在双核机器上会出现参数表地址被修改的情况,小弟认为可能是双核内核抢占造成的,但是应该怎样处理呢??期望各位达人的指点。
其中MyKiFastCallEntry处理代码如下: __declspec(naked) void MyKiFastCallEntry(void) { __asm{ pop edi mov SysEnter_OffSet, eax } __asm{ pushad push fs push 0x30 pop fs } if(SysEnter_OffSet == NtClosePos)//NtClosePos为内核函数NtClose的索引值 { __asm{ pop fs popad push New_NtClosePos //New_NtClosePos为自己定义函数索引值 pop eax pushad push fs } } __asm{ pop fs popad jmp pMovedSysenterCode } } |
|
沙发#
发布于:2008-12-11 18:03
这里没人认识他,你去看雪吧
|
|
|
板凳#
发布于:2008-12-11 23:08
在SSDT里边添加自定义例程,DDK导出了几个函数允许你合法的干这事,不需要用什么hook了。具体名称我一时也记不起来了,只知道在《Inside Windows NT》(第一版)里边描述了。
|
|
地板#
发布于:2008-12-12 00:36
回去翻了一下,是这个例程 KeAddSystemServiceTable(),在<Undocumented NT>里边介绍。
|
|
地下室#
发布于:2008-12-12 09:45
引用第3楼slwqw于2008-12-12 00:36发表的 : 但是应该怎样使应用层调用NtClose时转向我自己的函数呢? |
|