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