我们的下一个项目应该是一个基于MS的游戏(用C#编写,带有一个winform和一个集成的DirectX显示控制),为想要给最好的玩家颁奖的客户。这个项目是为了运行几年,与冠军,梯子,锦标赛,球员与球员-行动,等等。
这里的一个主要问题是作弊,因为如果一个玩家能够--例如,让一个定制的机器人为他玩游戏--(更多的是在策略上--决策而不是玩很多小时的游戏),他就会受益匪浅。
所以我的问题是:我们有什么技术上的可能性来检测机器人的活动?当然,我们可以跟踪播放的小时数,分析检测异常的策略等等,但就这个问题而言,我更感兴趣的是了解以下细节:
您的反馈非常感谢!
发布于 2008-09-27 09:29:50
不久前,我编写了d2botnet,一个.net暗黑破坏神2自动化引擎,您可以在列表中添加一些要注意的内容,即格式错误/无效/伪造的数据包。我猜这个游戏会通过TCP进行通信。包嗅探和伪造通常是第一种方式,游戏(在线)是自动化的。我知道暴雪会检测出畸形的数据包,这是我试图避免在d2botnet上做的事情。
因此,请确保检测到无效数据包。加密它们。干掉他们。做点什么以确保它们是有效的。如果你仔细想想,如果有人能准确地知道每一个数据包是什么意思,他们甚至不需要运行客户端软件,这就使得任何基于进程的检测都是毫无意义的。因此,您还可以添加某种基于数据包的挑战响应,您的cleint必须知道如何响应。
发布于 2008-09-27 08:39:54
如果“骗子”在虚拟机(比如vmware)中运行你的软件,并对这个窗口进行截图,那该怎么办?我怀疑你能为之辩护。
你显然无法抵御‘模拟差距’,例如骗子的系统用高质量的相机制作外部截图--我想这只是一个理论问题。
也许你应该去调查国际象棋网站。下棋有很多钱,他们也不喜欢机器人--也许他们已经想出了解决办法。
发布于 2008-09-27 09:17:44
防止自动化的最好办法是不要有需要磨练的任务。
尽管如此,检测自动化的最好方法是积极地让用户参与,并要求定期进行类似CAPTCHA的测试(除了没有图像等等)。我建议使用一个由数千个简单的一次性问题组成的数据库,这些问题经常会被提交给用户。
但是,基于您的问题,我认为您最好的选择是不要在C#中实现反自动化特性。您很难从托管代码中检测到编写良好的黑客/机器人,特别是当黑客只需进入ring0以避免通过任何标准方法进行检测时。我推荐一种类似典狱长的方法(可以下载的模块,您可以随时更新)与内核模式驱动程序相结合,该驱动程序连接所有的windows API函数,并监视它们是否“不合适”调用。但是,请注意,您将遇到很多错误,因此您不需要将禁止系统建立在自动数据的基础上。禁止之前一定要让人看一看。
https://stackoverflow.com/questions/143231
复制相似问题