-
-
[求助]WIN7X64下如何进入新建的内核调试流程
-
发表于:
2017-9-7 11:30
3360
-
[求助]WIN7X64下如何进入新建的内核调试流程
抛开PG的前提条件下
问题1:
MSR寄存器0xC0000082里面存放的是KiSysCall64的地址,通过替换这个地址来进入自己的调试流程。
测试的时候VMware设置为多个处理器,64位调试器可以正常进入自己的调试流程。
但是如果VMware设置为1个处理器,64位调试器还是走的原来的KiSysCall64函数。大家有遇到过这样的问题吗?
多核的处理代码如下:
for (i = 0; i < KeNumberProcessors; i++)
{
KeSetSystemAffinityThread ((KAFFINITY) ((ULONG_PTR)1 << i));
__writemsr(0xC0000082, g_NewKiSysCall64);
KeRevertToUserAffinityThread ();
}
问题2:
测试的时候发现32位的调试器根本就不是从MSR寄存器0xC0000082里面读取KiSysCall64地址的,所以这种方法根本就不能用在32位的调试器上。
要兼容,32,64位调试器,我想到的方法有下面几种:
1.inline hook KiSysCall64
2.直接inline hook各个调试相关的函数。
3.在R3就HOOK各个调试相关的函数,通过自己的方式来调用内核相关调试函数。
感觉这些方法都不是很好,大家有没有其他好一点的方法?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课