2013-10-18 248 views
2

我正在构建一个连接到服务器的客户端程序。这个客户端程序需要将源代码作为授权的一部分提供给用户(而不是选项)。但是,我需要确保当用户使用该客户端程序连接到服务器时,它使用原始代码运行,并且未被更改和重新编译。验证客户端/服务器握手中的客户端二进制文件

有没有办法联系到他们正在使用的程序的不变版本的服务器中检查?

回答

2

不,没有办法做到这一点。

你基本上遇到“受信任的客户”的问题。客户端代码在用户的PC上运行,用户可以完全控制该PC。他可以更改磁盘上的程序字节,甚至可以更改内存中的字节。如果您试图对代码执行散列或校验和,他可以简单地更改执行验证的代码,并使其返回“未修改”。

您可能会尝试对恶意用户有点难,但没有实际的方法来实现您的愿望。

2

你所描述什么是视频游戏行业一直战斗在过去十年半一个问题。简而言之,如何防止用户修改客户端(在他们的情况下,通常是为了防止作弊,尽管也是出于版权原因)。如果这种努力教会了我们什么,那就是防止对客户进行修改是一场永不间断的军备竞赛,永远不会取得胜利。鉴于此,请勿尝试。

按照标准的客户端 - 服务器假定客户端是在敌人的手中,不能被信任。根据这个假设建立你的服务器端防御,你会没事的。

+1

我同意。你无法保护用户免受他人的伤害。但至少要签署申请表,以保护他们免受他人的伤害。 –

+0

即使努力阻止您的游戏被破解并不科学安全,它至少会为您争取时间。希望足够长的时间可以在游戏的初始销售期间(“商店保质期”)或第一次补丁的时间周期内(这使得它更难)。一年后,大多数客户将会玩一些其他游戏,而黑客将会继续前进。 – selbie

0

这是非常非常困难的,也许不值得。但是如果你有兴趣追求它,你必须开发一些由Windows核心代码签名和监控的东西。

一对夫妇的主题,将定位你的问题的范围:

Protected media path

Driver signing

两个媒体设备和设备驱动程序数字由制造商签署,由Windows连续监测。如果任何事情发生,它会被关闭(这不是技术术语)。看起来非常令人生畏。我不知道该技术是否适用于不是设备驱动程序且与DRM无关的桌面软件。

祝你好运!

相关问题