Tesla.Angela 发表于 2014-8-29 01:24:17

《WIN64驱动教程》补充[20]:MSR HOOK的实现

作者:Tesla.Angela

MSR 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 *****

thegfw 发表于 2014-8-29 18:41:32

来莫拜下。。。

ugvjewxf 发表于 2014-10-13 15:52:17

这是32位代码吧,,,,,,

Tesla.Angela 发表于 2014-10-16 08:44:54

ugvjewxf 发表于 2014-10-13 15:52
这是32位代码吧,,,,,,

32、64全兼容。网上那些渣牛的代码才是只支持XP32的!!!

5ak 发表于 2024-1-3 08:07:23

学习了

kanren 发表于 2024-1-6 16:09:17

看看怎么个操作

xtfpg 发表于 2024-1-9 17:17:29

抄一抄

baggiowangyu 发表于 2024-1-26 23:35:10

2024补充学习

376408384 发表于 2024-1-27 11:58:00

我来学习

376408384 发表于 2024-1-27 11:59:31

基本原理

yimingqpa 发表于 2024-3-28 16:58:06

感谢楼主,学习 一下。

nj001 发表于 2024-3-29 11:36:57

学习一下

WordStar 发表于 2024-10-26 12:16:33

学习一下

wst5898 发表于 2025-1-26 08:46:07

感谢楼主,学习 一下。
页: [1]
查看完整版本: 《WIN64驱动教程》补充[20]:MSR HOOK的实现