【问题标题】:How to dissalow modified clients in an open source client-server project? [closed]如何在开源客户端-服务器项目中禁止修改客户端? [关闭]
【发布时间】:2013-07-14 20:02:18
【问题描述】:

假设我有一个完全开源的开源客户端和服务器软件。

如何确保修改后的客户端无法连接到未修改的服务器?或者检测修改过的客户端?比如防止开源大型多人在线游戏作弊?

我找不到关于这个主题的任何内容,除了空的谷歌搜索之外回答。

【问题讨论】:

  • 如果您要确保不会发生作弊,您需要以不信任 any 客户端的方式编写服务器未修改。
  • 一种解决方案是实际跟踪用户从 A 到 B 所花费的时间/路径,并将其与“实际努力”进行比较(例如,是否有可能从 A 到 B在 1.2 秒内,或者应该需要 12 秒),然后用它来“拒绝”造假者。这比试图阻止某人更改源更容易实现。
  • 我认为这是一个法律问题。在我看来,这在技术上是无法实现的。

标签: c++ open-source client-server anti-cheat


【解决方案1】:

要完美地做到这一点,要么极其困难,要么不可能。您可以向客户端添加代码,使其获取自身的哈希并传输该哈希,然后将该哈希服务器端与已知的未修改哈希进行比较,但熟练的程序员可以使用这种方法轻松伪造有效的哈希。您最好确保修改客户端不会在在线游戏时获得优势。

【讨论】:

    【解决方案2】:

    不可能 100% 可靠地做到这一点。您正在尝试想出一种方法,使完全由对手控制的系统可以值得信赖,但这种情况永远不会发生。只要有服务器信任的客户端程序,人们就可以修改它来做他们想做的事。

    解决方案是不信任客户。不要给它不需要的信息(假设你正在制作一个游戏,以防止像墙黑客这样的事情),并对它发送到服务器的数据执行完整性检查(以防止像速度黑客这样的事情)。此外,允许人们从每个客户端的角度查看服务器状态以及它如何变化。这将允许服务器管理员和其他玩家检测诸如瞄准机器人之类的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多