C# - 从self计算md5以检查文件是否未被修改

时间:2016-10-01 19:50:04

标签: c# .net security md5

我想检查我的程序是否未被修改(破解)。

所以我希望程序从self exe计算md5并进行比较。

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

但是当我将hash放到string中时,文件的md5将会被更改。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

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

选项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);