前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么反作弊阻碍了超频工具

为什么反作弊阻碍了超频工具

原创
作者头像
franket
发布2020-11-03 00:17:36
17.4K0
发布2020-11-03 00:17:36
举报
文章被收录于专栏:技术杂记

对于读者而言,这是一个简短的参考信息,它不是来自与作弊/反作弊/驱动程序或相关技术有关的深厚技术背景。引起我们注意的是,许多人想知道为什么当玩家打开超频/调谐软件时某些反作弊功能会阻止或记录日志。首先,我将解释为什么这些类型的软件需要驱动程序,然后显示一些示例说明为什么它们很危险,并提供有关危险代码回收的信息,这些代码使最终用户容易受到攻击。出于最终用户的方便而回收代码的风险,这是一个懒惰的决定,可能会导致系统损坏。在这种情况下,将从kernelmode.info,OSR Online等站点中回收代码。该软件使用的驱动程序特别有问题,如果要开发大量的人,这将是我要寻找的第一个目标-由于下面提供的工具,游戏玩家和技术爱好者将是一大群。这绝不是一个详尽的清单,我只讲了一些在作弊社区中已经被利用的驱动程序。野外有几十个甚至数百个。让我们用这些类型的软件介绍驱动程序的原因。

Notice: We are not affiliated with game publishers or anti-cheat vendors, paid or otherwise.

驱动程序要求

随着专业游戏的增长以及运行某些游戏的技术要求,硬件监控/超频工具在最近的十年中已经越来越流行。这些工具查询各种系统组件,例如GPU,CPU,热传感器等,但是,用户不容易获取此信息。例如,要查询片上数字温度传感器以获取CPU的温度数据,应用程序需要对特定于模型的寄存器执行读取操作。这些特定于模型的寄存器以及用于读取/写入它们的内部函数仅在以更高的特权级别(例如,ring-0(驱动程序在其中运行))运行时才可用。特定于模型的寄存器(MSR)是其中一部分的寄存器x86指令集。顾名思义,有些寄存器存在于某些处理器上,而另一些则不存在-使它们特定于模型。它们主要用于存储平台特定信息和CPU功能信息。它们还可以用于性能监控或热传感器监控。英特尔决定在x86 ISA中提供两条指令,以允许特权软件(操作系统或其他方式)读取或写入特定于模型的寄存器。说明是rdmsrwrmsr,并允许特权参与者修改或查询这些寄存器之一的状态。在各自的SDM / APM中可以找到适用于Intel和AMD处理器的大量MSR。这样做的意义在于,这些MSR中的许多信息都不应被任何特权或没有特权的任务修改。即使编写设备驱动程序,也几乎不需要这样做。

许多用于硬件监视软件的驱动程序允许非特权任务(就特权级别而言,不包括管理员要求)读取/写入任意MSR。这是如何运作的?好了,驱动程序必须具有可用的通信模式,以便它们可以从非特权应用程序中读取特权数据,并且这些驱动程序提供了该接口。重要的是要重申,客户端应用程序附带的大多数硬件监视/超频驱动程序具有更多(尽管不是必需的)通过此通信协议提供的功能。客户端应用程序(例如CPUZ桌面应用程序)使用名为DeviceIoControl的Windows API函数。从最简单的意义上讲,CPUZ调用DeviceIoControl具有IO控制代码,开发人员已知该IO控制代码可以执行对MSR的读取,例如片上数字温度传感器。这不是天生的危险。有问题的是,这些驱动程序实现了软件范围之外的其他功能,并通过同一接口公开了该功能,例如写入MSR或物理内存。

那么,如果只有开发人员知道代码,那为什么会有问题呢?逆向工程是一项富有成果的努力。攻击者所需要做的就是获取驱动程序的副本,将其加载到所需的反汇编程序(如IDA Pro)中,并寻找IOCTL处理程序。这是CPUZ驱动程序中的IOCTL代码,用于从2个不同的I / O端口(0xB2(广播SMI)和0x84(输出端口4))发送2个字节。这很有趣,因为您可以使用端口0xB2强制SMI,该端口允许进入系统管理模式。但是,这并没有真正完成任何重要的事情,只是需要注意。SMI端口主要用于调试。

现在,让我们看一下英特尔提供的驱动程序,该驱动程序允许攻击者进行梦every以求的所有操作。

未公开的英特尔驱动程序

该驱动程序与Intel创建的诊断工具打包在一起。它允许许多不同的操作,最成问题的是非特权应用程序直接写入物理内存中的内存页的能力。

Note: Unprivileged application meaning an application running at a low privilege level (ring-3), despite the requirement of Admin rights to carry out the DeviceIoControl request.

除其他事项外,它还允许直接端口IO(应该是特权操作),该端口会被滥用以在目标计算机上引起各种问题。从恶意行为者那里,它可以通过写入可用于硬重置处理器的IO端口来执行拒绝服务。

作为Intel的诊断工具,该操作具有一定意义。但是,这是与公共工具相关的签名驱动程序,在这种情况下,如果使用不正确的手,可能会造成严重破坏。读取和写入物理内存的能力意味着攻击者可以访问游戏的内存,而无需做传统的事情,例如打开进程的句柄并使用Windows API来帮助读取虚拟内存。对于攻击者而言,这是一项繁重的工作,但从未停止过任何积极进取的人。好吧,我不使用此诊断工具-谁在乎?看一下下面两个使用易受攻击的驱动程序的工具。

硬件监控

我已经在不同的社区中看到过它的提法,它用于超频,常规诊断以及对于机箱风扇不足以防止其过热的人们。该工具附带的驱动程序在提供的功能方面也存在很大问题。下面的屏幕截图显示了通过MmMapIoSpace读取一部分物理内存的另一种方法。这对于攻击者以受信任的硬件监视工具为幌子对游戏使用很有用。写入那些特定于模型的寄存器该怎么办?该工具无需对任何MSR进行写操作,但可以提供一个控制案例,其中正确的代码允许用户写入任何特定于模型的寄存器。这是HWMonitor中不同IOCTL块的两个图像。

另外,HWMonitor使用的驱动程序也是CPUZ使用的驱动程序!如果反欺诈只是阻止HWMonitor(应用程序)运行攻击者,则可以简单地拉起CPUZ并具有相同的功能。这是一个问题,因为如前所述,特定于模型的寄存器是要由系统软件读取/写入的。通过任何未经检查的界面将这些寄存器公开给用户,攻击者便可以修改他们不应该访问的系统数据。它允许攻击者规避可能由第三方实施的保护措施,例如反欺诈。反作弊可以注册回调,例如ExCbSeImageVerificationDriverInfo 这使驱动程序可以获得有关已加载驱动程序的信息。利用受信任的驱动程序可以使攻击者无法被发现。许多个人签名的驱动程序被某些反作弊记录/标记/转储,并且某些WHQL或来自像Intel这样的供应商的内在信任。此回调也是防止作弊方法用来阻止驱动程序(如CPUZ的打包驱动程序)加载的一种方法。或只是注意到它们存在,即使驱动程序名称被修改。

微星加力

在这一点上,很明显为什么很多反驱动软件都阻止了这些驱动程序的加载。我将让这个exploit-db页面代表MSI Afterburner。与前面提到的驱动程序一样糟糕,并且要保留系统和游戏的完整性,反作弊以防止其加载是合理的。

自从这些漏洞被修补以来,这仅仅是许多工具中行为类型的一个示例。虽然MSI做出了适当的响应并更新了Afterburner,但并非所有OC /监视工具都已更新。

结论

现在,无论多么不幸,为什么有些反作弊方法会阻止这些类型的驱动程序加载,这应该是有道理的。我已经看到了许多反对这种策略的争论,但是最后,反作弊的工作是保护游戏的完整性并最大程度地提高游戏质量。如果那意味着您不能运行硬件监视工具,则只需要关闭它即可播放。自2015/2016年末以来,甚至甚至在此之前,游戏作弊者就一直在使用这些驱动程序(但是,在此之前,第一个PoC并未在大型作弊论坛上公开发布)。阻止它们是必要的,以确保不会通过可信任的第三方驱动程序来篡改反作弊程序,并使用这种攻击方法来保护游戏免受黑客攻击。不能使用监控工具令人沮丧,这是可以理解的,而不是责怪反欺诈,而是将这些类型的软件的供应商归咎于回收危险代码并使您的系统处于危险之中,而不管您玩的是什么游戏。如果我是攻击者,我肯定会考虑使用许多驱动程序中的一种来危害系统。

对于某些公司而言,一种解决方案是简单地删除不必要的代码,例如映射物理内存,写入特定于模型的寄存器,写入控制寄存器等。维护热传感器和其他与组件相关的数据为只读将不再是问题。

这绝不是一篇详尽的文章,而只是一个简短的信息片段,可以帮助玩家/用户理解为什么他们的硬件监控/超频工具会受到反欺诈的阻碍。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 驱动程序要求
    • 未公开的英特尔驱动程序
      • 硬件监控
        • 微星加力
        • 结论
        相关产品与服务
        应用性能监控
        应用性能监控(Application Performance Management,APM)是一款应用性能管理平台,基于实时多语言应用探针全量采集技术,为您提供分布式性能分析和故障自检能力。APM 协助您在复杂的业务系统里快速定位性能问题,降低 MTTR(平均故障恢复时间),实时了解并追踪应用性能,提升用户体验。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档