0
我想检查我的程序是否未被修改(破解)。C# - 自我计算md5以检查该文件未被修改
所以我想程序从自己的EXE计算md5并进行比较。
if(GetMD5FromSelf() != "hash")
Application.Exit(); //modified so exit
但是,当我把哈希字符串然后文件的MD5将被改变。
有没有办法做到这一点?
我想检查我的程序是否未被修改(破解)。C# - 自我计算md5以检查该文件未被修改
所以我想程序从自己的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);
如果有人黑了你的程序,不会他们删除检查? –
我的程序有很多对话框(窗体),所以我想把检查线程放在每个窗口和崩溃应用程序中,如果修改的话。比没有保护更好的保护。 – Dave