c# -从self计算md5来检查文件是否被修改

本文关键字:文件 检查 是否 修改 md5 self 计算 | 更新日期: 2023-09-27 18:09:45

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

所以我想要程序计算md5从self exe和比较。

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

但是当我将哈希值设置为string时,文件的md5将被更改。

有什么办法可以做到吗?

c# -从self计算md5来检查文件是否被修改

你可以这样做,

选项1

你可以在线存储哈希值,这可能更安全,因为如果有人要改变你的程序,他们也可以改变哈希值。

选项2

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

<<p> 代码片段/em>
  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);