C# - 从自身计算 md5 以检查文件未被修改

C# - Calculate md5 from self to check that file is not modified

我想确认我的程序没有被修改(破解)。

所以我想让程序从自己的 exe 中计算 md5 并进行比较。

if(GetMD5FromSelf() != "hash")
    Application.Exit(); //modified so exit

但是当我将哈希值放入字符串时,文件的 md5 会发生变化。

有什么办法吗?

这些是您可以做到的一些方法,

选项 1

您可以在线存储散列,这可能更安全,因为如果有人要更改您的程序,他们也可以更改散列。

选项 2

您可以在应用程序的末尾添加 4 个字节和一个字符串并将校验和保存在那里,注意不要将这些包含在您的校验和中并且只验证您自己的文件大小,而不是 4 个字节和字符串。

代码片段

  List<byte> total = new List<byte>(File.ReadAllBytes(System.Reflection.Assembly.GetEntryAssembly().Location));
                byte[] totalByteArray = total.ToArray(); 
                int OwnSize = 115200;//Size of you exe file without checksum
                int Md5Length = BitConverter.ToInt32(totalByteArray, OwnSize+4);
                string NormalFileNameString = Encoding.ASCII.GetString(totalByteArray, OwnSize, Md5Length);