首页
社区
课程
招聘
[已解决] [讨论]EPT hook后,物理机上很卡,虚拟机中正常 10雪币
发表于: 2025-5-22 12:04 491

[已解决] [讨论]EPT hook后,物理机上很卡,虚拟机中正常 10雪币

2025-5-22 12:04
491

[求助] Hypervisor From Scratch,EPT Hook后,物理机很卡。
原贴不能编辑,无法上传代码,所以重新开贴,原贴可以删掉,谢谢。


我使用是论坛中的 Hypervisor From Scratch 教程,其中part 8 部分的源代码。

对 ObpReferenceObjectByHandleWithTag 函数做执行Hook,发现虚拟机中正常,用于物理机时却卡得无法接受。 这是为什么呢? 上传完整代码,请热心的朋友们测试,寻求解决之道。  物理机和虚拟机系统,均为 win10 ltsc 2021,版本号是 19044.1348


图1:代码说明


图2: 在虚拟机中测试,正常不卡。


图3:在物理上测试,非常卡。



[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 2025-5-22 12:10 被mengerlin编辑 ,原因: 完善描述。
上传的附件:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 176
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

问题补充:
    发现物理机上很卡,并不是因为Hook了 ObReferenceObjectByPointerWithTag 的原因,而是因为Hook前,将这个函数所在的2M页面,拆分成4K页面了,拆分后既使不Hook,物理机也变得十分卡。
    问题仍然没解决:为什么就这样拆分2M为4K,物理机就很卡了呢? 为什么vmware虚拟机中就不卡呢?我系统上并没有Hyper-V,应该不是冲突起发的。

2025-5-23 16:44
0
雪    币: 176
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
具体点说,就是执行了 EptSplitLargePage 这个函数,将 EPT表中,ObReferenceObjectByPointerWithTag 所在的PML2,从2M的大页,分成了4K的小页,方便后续做Hook。  拆分后,既使不进行后续hook操作,物理机也很卡。 原因就在这里,但是为什么会这要,怎么解决? 求助。
2025-5-23 16:51
0
雪    币: 105
活跃值: (2903)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
好像是内存类型没有设置... 之前也踩过坑
2025-5-23 17:29
0
雪    币: 105
活跃值: (2903)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
恒大 好像是内存类型没有设置... 之前也踩过坑

太久远了,好像是这里

2025-5-23 17:31
0
雪    币: 176
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6

感谢恒大老哥,你的出现真是一场及时雨,确实是这里的问题,缺少代码。我没想到是内存属性的问题,你不说,我应该很多天都无法解决。万分感谢!

2025-5-23 20:44
0
雪    币: 23
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
为啥是因为这个内存属性就很卡没明白
2025-5-23 23:56
0
雪    币: 176
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
如果是普通的内存页,影响就没这么大,但这个函数所在的页,需要非常高频的执行,系统中很多操作都要调用这个内存页中的函数。 当开启EPT身份映身后,内存缓存策略不对,就很拖速度了。 【个人浅显的理解】
2025-5-24 07:48
0
雪    币: 1022
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习了
2025-6-9 09:05
0
游客
登录 | 注册 方可回帖
返回