服务器(即充当多个客户端的中央服务的远程主机)如何检测类似于暴雪的 Warden 的恶意或无效客户端。在某种程度上,这类软件每隔一段时间就会向客户询问特定信息,这些信息不容易被非官方客户伪造。
我想知道的是,如何实现这样的机制,以便很难或不可能从客户端进行逆向工程?开源客户端软件(闭源服务器)有没有这样的技术?
服务器(即充当多个客户端的中央服务的远程主机)如何检测类似于暴雪的 Warden 的恶意或无效客户端。在某种程度上,这类软件每隔一段时间就会向客户询问特定信息,这些信息不容易被非官方客户伪造。
我想知道的是,如何实现这样的机制,以便很难或不可能从客户端进行逆向工程?开源客户端软件(闭源服务器)有没有这样的技术?
简短的回答:你不能。客户基本上是不可信的。暴雪(和其他反作弊软件供应商)一直在与作弊者进行军备竞赛。你不能只实现一次就完成它;您必须不断监控您的产品(启发式或通过玩家报告)是否作弊,然后弄清楚如何以编程方式评估是否有人作弊。
更长的答案是你让你的“秘密武器”检测远离客户端;相反,客户端只是收集信息,然后将其转发到受信任的机器进行分析。这会使作弊者更难避免被发现,因为他们只知道正在收集什么信息,而不知道正在用它做什么。但最终,他们会弄清楚如何欺骗该信息,然后您的反作弊机制将需要处理该问题。
您可以做的是在您的服务器代码中实施启发式方法,以检测正在发送原本不可能的输入的玩家,然后标记这些帐户以供审查或禁止。这不会检测客户端上的恶意软件,但它可以检测到该恶意软件的影响。因此,虽然您可能无法查明是什么发送了这些无效输入,但您仍然可以不处理该帐户。
但是,更具体地说,对于您的问题,不可能给您提供示例,因为您必须在应用程序的上下文中定义什么构成“作弊”,然后定义用于检测它的设备方法。这是一个非常特定于领域的问题,更复杂的是,您不太可能找到此类系统的开源实现,因为它们必须依靠默默无闻来检测作弊者。