找回密码
 加入我们
搜索
      
查看: 1847|回复: 9

[软件] 用CPU虚拟化来防止DMA外挂的原理是啥?

[复制链接]
发表于 2025-7-31 18:55 | 显示全部楼层 |阅读模式
https://www.chiphell.com/thread-2730619-1-1.html

意思通过CPU虚拟化功能,游戏自己就是个虚拟机+简易操作系统+游戏?
然后通过定制虚拟机的硬件,阻止不明设备,从而杜绝了DMA设备?
发表于 2025-8-3 21:50 | 显示全部楼层
之前DMA硬件可以畅通无阻的访问几乎全部内存地址,游戏的安全程序无法探测。

现在使用IOMMU内存切割,DMA无需授权能访问的普通内存地址,没有游戏数据,等于白搭。
DMA想要访问那一段特殊内存地址,必须报上名号,设备ID,中断,内存地址范围,等等。
只要让安全程序接管这一控制过程,就可以轻松的知道,哪些设备跑来访问了不该访问的内容。
再结合游戏服务端的数据分析(异常的高胜率),两者都对得上,直接封号。
发表于 2025-8-3 21:38 | 显示全部楼层
并不是把游戏运行在虚拟机里面。

只用了一个IOMMU的内存地址切割功能,把游戏的核心内存,使用虚拟化指令强制切割了。
外面的硬件无法访问那个内存地址,包括DMA硬件也无法访问。

有点类似于你在ESXi里面把磁盘阵列卡直通给一个虚拟机,需要勾选强制预留全部内存才能直通。
此时那一部分内存就被强制分配给虚拟机了,连ESXi自己都不会去用它。
物理硬件,只有那个磁盘阵列卡能够访问那一段特殊内存;母鸡的其他物理硬件还是归ESXi管理,虚拟机看不到。

游戏没有那么绝对,它没有独占物理硬件,但确实切割了内存地址。
只有支持VT-d和IOMMU的CPU才能开启这种功能。
好消息是现在的CPU基本都支持。
发表于 2025-8-3 21:14 | 显示全部楼层
就是把游戏运行在虚拟机上,DMA直接通过PCI-E总线读取内存,可以不在主机上安装任何软件,不在内存里写入任何数据,如果游戏运行在虚拟机上,要读取虚拟机的内存数据,那就必须得安装程序穿透,或者在虚拟机里安装驱动,那就能被检测到了。
发表于 2025-8-3 20:34 | 显示全部楼层
超频仔的噩梦
发表于 2025-8-3 20:23 | 显示全部楼层
虚拟化还可以用来这么玩儿,
发表于 2025-7-31 20:33 | 显示全部楼层
pcie控制器是在cpu的 没有主板什么事
发表于 2025-7-31 20:15 | 显示全部楼层
好像docker一样么
发表于 2025-7-31 19:14 | 显示全部楼层
大概是微软的Virtualization-Based Security (VBS) Enclaves技术
https://github.com/microsoft/VbsEnclaveTooling

评分

参与人数 1邪恶指数 +1 收起 理由
Mufasa + 1 支持一下

查看全部评分

发表于 2025-7-31 19:07 | 显示全部楼层
其实是 IOMMU.
具体的机制 wiki 解释地很好.
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-8-4 14:15 , Processed in 0.009422 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表