你如何信任客户?

时间:2014-04-29 21:56:36

标签: security networking architecture

我正在开发一款在客户端上进行世界模拟的游戏。这些客户端将更新的世界状态提交给中央服务器。然后,该服务器将这些更改重新分配给其余的客户端。简单。

问题是,我想防止修改后的客户端。也就是说,我想防止那些修改变量或其他东西的骗子。

起初我以为我会使用公钥/私钥加密方案。从客户端发送的所有命令都将被加密并发送到服务器。但我很快意识到,这并没有提供真正的保护,因为他们仍然可以修改变量。

我能想到的唯一其他解决方案是将所有变量存储在一个文件中并记录它的哈希值。然后客户端只能在服务器验证这些哈希值后更新服务器。

但后来我意识到骗子可以重写网络请求以修补这些哈希值。

我不知道从哪里开始。

可以使用哪些协议,以便服务器只接受来自可信(即已知)代码库的命令?

1 个答案:

答案 0 :(得分:0)

你不必如此悲观。尽力避免欺骗者修改您的数据。例如,常见方法之一是将DLL注入游戏进程并修改内存上的数据。大多数游戏培训师都是这样做的。您可以定期检查进程的已加载模块,如果有未知模块则退出。你可能会想到游戏的互联网连接。好吧,尽你所能。添加加密和一些自定义握手算法,使骗子变得复杂和困难。

一般来说,你可以采取很多措施让你的游戏难以作弊。