【问题标题】:C# - Calculate md5 from self to check that file is not modifiedC# - 从 self 计算 md5 以检查文件是否未被修改
【发布时间】:2017-02-10 04:07:57
【问题描述】:

我想检查我的程序没有被修改(破解)。

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

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

但是当我把 hash 放到字符串中时,文件的 md5 会被改变。

有什么办法吗?

【问题讨论】:

  • 如果有人入侵了您的程序,他们不会删除该检查吗?
  • 我的程序有很多对话框(表单),所以我想在每个窗口中检查线程并在修改时崩溃应用程序。有保护总比没有保护好。

标签: c# .net security md5


【解决方案1】:

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

选项 1

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

选项 2

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

代码 sn-p

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-02
    • 2015-06-02
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多