1

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

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

我找不到关于这个主题的任何东西,除了空的谷歌搜索我不知道从哪里开始寻找关于这个主题的信息,所以我想也许这里有人可以回答这个问题,甚至可以为我指出正确的方向以获得答案。

4

2 回答 2

4

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

于 2013-07-16T14:57:42.987 回答
3

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

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

于 2013-07-16T15:25:40.720 回答