c9080 发表于 2016-8-7 23:17:35

关于SYSENTER HOOK中的一个蓝屏问题

今天研究SYSENTER HOOK 测试环境WIN7 32位
__declspec(naked) void MyKiFastCallEntry()
{
        __asm
        {
                pushad;
                pushfd;       
        }
        if (KeGetCurrentIrql() < DISPATCH_LEVEL)
        {
                PEPROCESSps = PsGetCurrentProcess();
                if (ps!=NULL)
                {
                        UCHAR* pName = ((UCHAR*)ps + PROCESS_NAME_OFFSET);
                        if (pName!=NULL)
                        {
                                if (0 == _stricmp(pName,"explorer.exe"))
                                {
                                        KdPrint(("sysCallIndex is %s\n", pName));
                                }
                        }               
                }
        }
        __asm
        {
                popfd;
                popad;
          jmp g_OrigKiFastCallEntry;
        }
}
这是我写的HOOK代码在目标机上测试 不用怀疑【蓝屏】!用windbg查看原因如图

百思不得其解的是为什么会蓝屏到KeGetCurrentIrql()函数 我查MSDN关于KeGetCurrentIrql()函数 IRQL: Any level那么
为什么触发IRQL_NOT_LESS_OR_EQUAL (a) 求大牛指点!

Tesla.Angela 发表于 2016-8-8 12:50:32

WINDBG定位不一定是准确的。。。很多时候甚至定位不到你的代码里。
此外Hook KiFastCallEntry代码这里有:http://www.m5home.com/bbs/thread-4508-1-1.html

c9080 发表于 2016-8-8 15:41:05

Tesla.Angela 发表于 2016-8-8 12:50
WINDBG定位不一定是准确的。。。很多时候甚至定位不到你的代码里。
此外Hook KiFastCallEntry代码这里有:h ...

拜谢!
页: [1]
查看完整版本: 关于SYSENTER HOOK中的一个蓝屏问题