ept技术_[讨论]R3检测EPT方式HOOK页面的方案(20170919更新-已解决)

本文讨论了在R3层使用EPT Hook技术时遇到的检测问题。作者通过实验发现,即使采取了多种策略,如备份页面、修改EptEntry权限,仍无法避免被检测到。在确保EPT隐藏效果正常、VirtualQuery和NtQueryVirtualMemory返回值正确、Hook相关API未被探测的情况下,问题依然存在。作者希望得到业内专家的帮助解决这一难题。
摘要由CSDN通过智能技术生成

==== 本段更新于20170919 ====

1.感谢hzqst、v校在这一过程中提供的帮助

2.问题根源在于,检测进程将我HOOK的内存页映射到自己的内存空间;

不同VA映射相同PA时,然后被XXOO

所以 在处理EptViolation的时候,唯一靠谱的就是Lock之后的GuestPhysicalAddress

我之前使用GuestLinerAddress进行判断,所以就悲剧了。

==== 本段更新于20170905 ====

根据1L V校提供的思路,我又做了如下两种测试:

0. 备份Hook页面,原始页面为RW页,备份页面为X页,备份页不进行任何修改(不做HOOK仅测试);

响应EPT Violation时,如果是从RW切换到X,则将RW页面拷贝到X页面;

这样从理论上讲, 如果遇到  xor [code + offset], XX 之类,直接自己X自己代码的情况,可以保证读写页和执行页相同;

我自己用Demo程序测试,确认无论如果自身修改自己的代码,RW页面的修改可以同步到X页面上。

然而结果,直接扑街,依旧被检测到;

1. 不进行备份,只对EptEntry的WriteAccess、ReadAccess进行修改;

进一步缩小可能存在检测的范围,无论读写还是执行,均返回同一个页面;

只是在相应EPT Vi

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值