我们的下一个项目之一应该是基于MS Windows的游戏(用C#编写,具有winform GUI和集成的DirectX显示控件),供想要向最佳玩家赠送奖品的客户使用.该项目旨在运行几年,包括锦标赛,阶梯,锦标赛,球员与球员动作等.
这里的一个主要问题是作弊,因为玩家如果能够 - 例如 - 让一个定制的机器人为他玩游戏(在战略决策方面比在玩很多小时方面更多)会受益匪浅.
所以我的问题是:我们有什么技术可能来检测机器人活动?我们当然可以跟踪播放的小时数,分析检测异常的策略等等,但就这个问题而言,我更想知道像
如何检测另一个应用程序是否制作定期截图?
如何检测另一个应用程序是否扫描我们的进程内存
什么是确定用户输入(鼠标移动,键盘输入)是人为生成而非自动化的好方法?
是否可以检测另一个应用程序是否请求有关我们的应用程序中的控件的信息(控件的位置等)?
还有哪些其他方式可以让骗子收集有关当前游戏状态的信息,将这些信息提供给机器人并将确定的操作发送回客户端?
非常感谢您的反馈!
我曾经写过d2botnet,一个.net diablo 2自动化引擎,你可以添加到要注意的事项列表中的是畸形/无效/伪造的数据包.我假设这个游戏将通过TCP进行通信.数据包嗅探和锻造通常是游戏(在线无论如何)自动化的第一种方式.我知道暴雪会检测到格式错误的数据包,有些人试图远离d2botnet.
因此,请确保检测到无效数据包.加密他们.哈希他们.做一些事情以确保它们有效.如果你考虑一下,如果有人能够准确地知道每个数据包意味着来回发送的内容,他们甚至不需要运行客户端软件,这使得任何基于进程的检测都成为一个有争议的问题.因此,您还可以添加某种基于数据包的质询响应,以便您的提示必须知道如何响应.
只是想知道如果"骗子"在虚拟机(如vmware)中运行您的软件并制作该窗口的屏幕截图?我怀疑你能否反对.
你显然无法抵御"模拟差距",例如骗子的系统使用高质量的相机制作外部截图 - 我想这只是一个理论问题.
也许你应该调查国际象棋网站.国际象棋中有很多钱,他们也不喜欢机器人 - 也许他们已经提出了解决方案.