《WIN64驱动教程》补充[20]:MSR HOOK的实现
作者:Tesla.AngelaMSR HOOK是一种比较罕见的HOOK了,网上甚至少有提及。这里我必须普及一下关于MSR的知识。MSR直译叫做“模块指定寄存器”,这是一组特殊的寄存器,它不能通过MOV指令进行读写,而必须用专门的指令:RDMSR和WRMSR。这种寄存器甚至没有名称,只有代号,但是部分MSR里却记录了重要的内容,比如KiFastCallEntry的函数地址(WIN64上不叫这个名字,但是用途相同)。众所周知,KiFastCallEntry是RING3进入RING0的关口,是一个“一夫当关万夫莫开”的位置,而这个地址,系统就是通过RDMSR获取的。所以如果修改了特定寄存器(WIN32是0x176,WIN64是0xC0000082)里的内容,那么就能劫持这个入口。内核重载让RING3程序无视内核HOOK,根本点就在这里。所以MSR HOOK的本质就是使用WRMSR来修改特定MSR的内容。但是这个这么重要的位置,PATCHGUARD当然是不会放过的。在WIN64上修改关键MSR的值会导致蓝屏。如果用VT技术,拦截RDMSR指令,返回代理函数的地址,就能绕过PG实现类似SSDT HOOK的效果了。当然,要实现用VT框架来拦截MSR,就是另外一个故事了。
**** Hidden Message ***** 来莫拜下。。。 这是32位代码吧,,,,,, ugvjewxf 发表于 2014-10-13 15:52
这是32位代码吧,,,,,,
32、64全兼容。网上那些渣牛的代码才是只支持XP32的!!! 学习了 看看怎么个操作 抄一抄 2024补充学习 我来学习 基本原理 感谢楼主,学习 一下。 学习一下 学习一下 感谢楼主,学习 一下。
页:
[1]