Security 服务器如何检测无效的客户端

Security 服务器如何检测无效的客户端,security,reverse-engineering,server,challenge-response,Security,Reverse Engineering,Server,Challenge Response,服务器(即充当多个客户端的中心服务的远程主机)如何检测类似于暴雪的Warden的恶意或无效客户端。在某种程度上,这类软件每隔一段时间就会向客户询问特定的信息,而非官方客户很难伪造这些信息 我想知道的是,如何实现这样一种机制,从而很难或不可能从客户端进行反向工程?开源客户端软件(封闭源代码服务器)有这样的技术吗?简单回答:你不能。客户基本上是不稳定的。暴雪(以及其他反作弊软件供应商)正在与作弊者进行持续的军备竞赛。你不能只实施一次就完成它;你必须经常监控你的产品(启发式的或者通过玩家报告)是否有作

服务器(即充当多个客户端的中心服务的远程主机)如何检测类似于暴雪的Warden的恶意或无效客户端。在某种程度上,这类软件每隔一段时间就会向客户询问特定的信息,而非官方客户很难伪造这些信息


我想知道的是,如何实现这样一种机制,从而很难或不可能从客户端进行反向工程?开源客户端软件(封闭源代码服务器)有这样的技术吗?

简单回答:你不能。客户基本上是不稳定的。暴雪(以及其他反作弊软件供应商)正在与作弊者进行持续的军备竞赛。你不能只实施一次就完成它;你必须经常监控你的产品(启发式的或者通过玩家报告)是否有作弊行为,然后找出如何通过编程来评估是否有人作弊

较长的答案是,你不让客户发现你的“秘密酱汁”;相反,客户机只是收集信息,并将其转发给受信任的计算机进行分析。这会使作弊者更难避免被发现,因为他们只知道收集了什么信息,而不知道如何处理这些信息。不过,最终他们会发现如何欺骗这些信息,然后你的反作弊机制将需要解决这个问题

您可以做的是在服务器代码中实现启发式,以检测发送不可能的输入的玩家,然后标记这些帐户以供审查或禁止。这不会检测客户端上的恶意软件,但可以检测该恶意软件的影响。因此,虽然您可能无法确定是什么发送了这些无效的输入,但您仍然可以对帐户执行“否”操作


但是,更具体地说,对于您的问题,不可能给出示例,因为您必须在应用程序的上下文中定义什么构成“欺骗”,然后设置用于检测欺骗的方法。这是一个非常特定于领域的问题,更为复杂的是,您不太可能找到此类系统的开源实现,因为它们必须依靠隐蔽性来检测作弊者。

谢谢,您给了我一些有希望的想法!