当前位置:  开发笔记 > 编程语言 > 正文

在线游戏作弊:是否有可能阻止一个Win32进程检查/操纵另一个内存?

如何解决《在线游戏作弊:是否有可能阻止一个Win32进程检查/操纵另一个内存?》经验,为你挑选了5个好方法。

我玩在线游戏"魔兽世界",它受到自动机器人的困扰,这些机器人检查游戏分配的内存,以便读取游戏/玩家/世界状态信息,用于机械地玩游戏.他们有时也直接写入游戏的记忆本身,但据我所知,更复杂的记忆本身并没有.

该游戏的供应商暴雪娱乐有一个名为Warden的独立应用程序,它应该检测和禁用这样的黑客和作弊,但它并不能捕捉到一切.

是否有可能创建一个Windows应用程序,在这个应用程序中,您是唯一可以读取您已读入内存的内容的应用程序?

在数百万台机器上运行的大型C++应用程序上实现是否务实?



1> Roel..:

无法做到.在内存访问方面,应用程序受操作系统的支配.控制操作系统的人控制对内存的访问.用户可以完全访问整个计算机,因此他们始终可以使用设置的权限启动进程,以允许他们从其他进程的内存空间读取.

这假设是一个"常规"环境 - 今天的硬件,具有多用途操作系统,允许多个同步程序运行,等等.

可以这样想 - 即使是单一用途的机器,开发人员可以完全控制硬件,使用数字签名和XBox或PlayStation等所有技巧都无法保留第三方代码.对于多用途操作系统来说,它要难10倍.


有关如何规避此特定技术的信息,请参见http://www.alex-ionescu.com/?p=34.除此之外,在VM中运行并从那里修改内存是另一种策略,如下所示.我的观点是,任何缓解策略都会被坚定的攻击者打破 - 这是PC硬件和操作系统的开放结构所固有的.而且暴雪所面临的攻击者的类型是非常*确定的,用自动收获的黄金可以赚钱.
可以在Vista和更新版本上保护一个进程内存空间免受其他进程的影响.该技术被称为"受保护的进程"(http://msdn.microsoft.com/en-us/library/ms684880(VS.85).aspx),这就是Protected Media Path的实现方式.当然,这种技术不能防止硬件工具从存储器芯片中物理读取存储器,但可以很好地防止间谍过程.

2> Suma..:

如果您想要实现真正的安全性,而不仅仅是默默无闻,那么这需要在操作系统级别完成.这是所谓的可信计算的一部分,这在过去几年中被大量讨论,但没有取得实际进展(例如,您可以搜索Microsoft Palladium).

如果您尝试使用私钥和公钥来查看此加密问题,则目前无法隐藏您在应用程序中使用的私钥.一旦黑客找到您的私钥,他就可以使用它来模拟您的应用程序 - 而您所能做的就是让它变得更难.

在多人游戏中可以使用一些部分解决方案,其中部分游戏在服务器上运行.您可以使用黑客无法访问服务器的事实,因此服务器可以使用自己的私钥来执行操作,而黑客无法获取该私钥.这在某些情况下可能有所帮助,但它远非一般解决方案.



3> 小智..:

Warden既不是一个单独的应用程序,也不会尝试以任何方式禁用黑客攻击.它的结构基本上等同于从已知位置下拉(理论上可信)代码然后运行它的木马.此代码执行各种检查(其中绝大多数是内存中的散列位置以检测诸如bot事件处理程序之类的补丁),以便将帐户标记为"可疑".然后暴雪等待他们拥有足够数量的"可疑"帐户并执行禁令浪潮(有一些明显的例外,这可能会导致即时禁令,但这些是针对特定的已知黑客,如暗黑破坏神II中的Glider或D2JSP,不是为了一般的作弊).

我解释这一点的意义有两个:首先,你应该知道Warden在设计上是非常不安全的.您正在授权某人在您的计算机上执行任意x86指令,如果您使用的是Windows,则可能具有完全管理员权限.存在部署在私有仿真服务器上的Warden服务器代码的私有重新实现,这些可能是恶意的.我说这是一个编写自定义Warden模块的人.其次,与所述问题更相关,Warden不是一种预防工具,它是一种惩罚工具,是对隐私的重大侵犯.如果你是一个想要实现类似系统的游戏开发者,我强烈反对它,因为它打开了许多蠕虫,并且仍然会失败.由于它涉及动态加载代码,因此有许多方法可以解决这个问题,其中许多方法在标准测试中很难找到.除了守望者之外,暴雪唯一真正努力阻止黑客攻击魔兽是他们试图阻止Lua插件做任何接近僵尸的事情(甚至这种情况被多次绕过).正如其他人所说的那样,即使系统像Warden一样充满活力,基本上也不可能阻止黑客入侵.即使没有触及游戏的内存,数据包和屏幕阅读也足以制作高级机器人(看看mm.BOT和RedVex,或任何完全依赖于像素检测的oldschool AutoIt机器人).

在游戏中或其他方式停止机器人的最佳方法仍然是使用某种类型的CAPTCHA.但它不一定是扭曲的图像.将人类或AI测试集成到对合法用户至少有些透明的游戏中有很多种方法.如果您使系统足够模块化,那么您将能够比任何公开发布的hack更新代码更快地进行更新.



4> grawity..:

即使您可以这样做,也可以在虚拟机中运行游戏,并从主机修改虚拟RAM.客人永远不会知道.



5> Fionn..:

有一本关于该主题的好书:

利用在线游戏:欺骗大规模分布式系统(ISBN-10:0132271915或ISBN-13:978-0132271912)

问题是不仅存在其他线程/应用程序的威胁,还存在来自内核级别的威胁.有一些机器人与根套件一起工作,以隐藏检测软件.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有