-
-
[讨论]hook rdtsc 在win10下怎样处理rdtscp
-
发表于:
2019-4-22 13:25
7622
-
[讨论]hook rdtsc 在win10下怎样处理rdtscp
最近在调试一程序,里面大量使用了rdtsc搞的很狼狈,于是搜索资料想在驱动里hook掉rdtsc一劳永逸
方法是置位cr4的tsd标志,使r3调用到rdtsc进入gp保护,然后hook idt 0xd在里面过滤rdtst,修改rdx rax就ok了
在win7 64位下这个驱动跑的很正常,但是换到win10就出问题了,虚拟机运行是直接重启,物理机运行是卡死
x64 hook idt会触发pg,暂时不考虑pg问题,经过调试定位到出现问题的位置是应用层的services.exe调用到rdtscp这一指令导致的,读到0xFFFFFFFFFFFFFFFF内存,该进程挂掉了,由于是系统关键进程,所以整个系统就卡死了(vmware中是被直接重启),于是查了rdtscp的资料
相关说明如下:
#GP(0) If the TSD flag in register CR4 is set and the CPL is greater than 0.
对照我这个情况 TSD置位了,
services.exe 运行在R3,CPL=3,符合
#GP(0) ,于是我在0xd里面加上对rdtscp的处理,结果还是一样
搞了几天还是搞不定这个问题,在本论坛看到@小宝的这个帖子
https://bbs.pediy.com/thread-212786.htm
情况有点类似,但他是用的vt,我很少写驱动,不熟悉,VT对我来说太复杂, 请问各位前辈, 这个问题不用VT的话该如何处理
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课