Windows 内存管理中的内存访问控制

问题描述 投票:0回答:1

为什么Windows内核不能通过ACL(访问控制列表)或其他访问控制方法禁止作弊程序进程在运行时访问游戏内存??

memory access-control windows-kernel cheat-engine anti-cheat
1个回答
0
投票

举个例子吧。

假设我们是一家游戏发行商。我们发布了一款游戏,我们的客户可以在任何用户帐户下运行该游戏(游戏很少需要以提升的权限运行)。

游戏用户除了我们的游戏外,还安装了一个以当前用户身份运行的游戏作弊程序。

用户开始运行游戏及其作弊(两者都在同一用户帐户下运行)。现在,系统不会阻止 欺骗访问(例如读写内存、修改 CPU 上下文等)游戏进程:进程从游戏进程继承其权限 登录会话,与用户帐户绑定。所以基本上,任何进程都可以“访问”在该系统上运行的任何其他进程 同一会话(在同一用户帐户下)。

现在,您可能会想:应该有一种方法来调整游戏进程权限,这样,即使它运行在 与流氓程序(作弊)相同的用户帐户,无法从其他程序访问它。但这与各种基本原则相矛盾 操作系统的安全原理:

  • 您无法获得比您获得的最大权限更多的权限。
    • 这意味着,作为非管理用户,您无法调整游戏进程 ACL 来以管理员甚至系统身份运行游戏。
  • 用户对其正在运行的程序(即在其自己的用户帐户下运行的程序)拥有所有权力。
    • 根据他们的权限集,他们可能有权也可能不有权控制在其他用户帐户下运行的程序。

现在我们决定强制我们的游戏用户以高级管理员身份运行游戏(另一种可能性是 安装一个以SYSTEM身份运行的服务,那么游戏就会由该服务启动,这样游戏也会以SYSTEM身份运行)。 但是,想一想,没有什么可以阻止用户以高级管理员身份运行作弊程序(我们没有任何 在用户机器上进行控制)。我们又回到了原点。

输入内核驱动程序。作为发行商,我们决定为我们的游戏提供内核驱动程序,因此从内核方面,我们制作 进程内存不可读且不可写,基本上阻止任何访问,无论用户帐户和权限是什么(甚至是管理员)。 为了解决这个问题,作弊引擎还附带了一个内核驱动程序 [1],破坏并撤消我们自己的内核驱动程序正在执行的任何操作。

现在我们决定对我们的游戏进行 DRM,防止对游戏和内核驱动程序进行逆向工程。但是……骗子 引擎现在利用虚拟化功能技术,即使从内核空间也看不到......(虚拟化控制内核空间)。

总结一下:ACL 不是 PC 上反作弊等式的一部分,因为作为发行商,您无法(幸运的是,对于我们作为用户而言)控制最终用户计算机。这是一场永无止境的猫鼠游戏。

[1] 尽管驱动程序必须经过签名才能加载,但您可以利用合法但“易受攻击”的签名驱动程序在内核空间中执行您想要的任何操作。这些被称为“loldrivers”。

© www.soinside.com 2019 - 2024. All rights reserved.