如何使用C#检查文件哈希是否已更改

时间:2018-08-28 08:23:51

标签: c# hash md5

我是游戏开发者,当我发布新游戏BOOM !!!时,该游戏将被修改,并且我正在运行网络游戏,对我来说这是巨大的损失,我正在与Unity合作,希望你伙计们可以理解我,我想将HashCheck添加到游戏主文件中,例如“如果更改了文件哈希,Game,close”

就像:-我有Assembly-CSharp.dll作为我的主要游戏数据文件,因此,如果Modders要修改我的游戏,他们只需将Assembly-CSharp.dll加载到一些反编译器中并编辑文件

我也尝试过“十六进制”保护,但是他们绕过了

所以,我想做的是,当Modders更改Assembly-CSharp.dll时,哈希将更改, 如果Hash更改了“ Application.quit”

我只是想比较MD5哈希值

但是我没有得到,甚至没有任何示例代码

我只需要代码即可添加HashCheck Assembly-CSharp.dll

意味着我需要C#代码

1 个答案:

答案 0 :(得分:1)

强名称集会签名之类的声音可能会对您有所帮助。

除其他外,对程序集进行强命名的好处之一是,它们使用数字签名进行了签名签名,从而保护了程序集不受篡改。 如果有人要修改您的部件,则在部件加载期间自动进行的验证过程将失败并引发异常。

  

全名提供了强大的完整性检查[,]保证自程序集的内容自生成以来就没有更改。

取自docs.microsoft


详细了解如何使用强命名here


编辑

正如toATwork所提到的,在这里强命名将不会带来好处。强大的命名功能可以确保您的用户确实来自您自己的程序集,而不会被他人修改。

不希望 修改您的程序集的用户篡改您的程序集!

由于也可以轻松地绕过哈希检查,因此我建议将混淆与 tamper checks结合使用。您可以使用Dotfuscator,它已经是included in Visual Studio