所以最近我注意到很多程序都破解了,因为我的小朋友/小开发者已经将.dll作为源代码公开的参考,然后人们重新编写了这个dll并添加了一个调试系统,所以程序所做的一切都得到了在跑步时打印到控制台。我想找到一种方法来检查用户是否修改了一个dll,并且与我在开头包含的dll完全相同。任何帮助表示赞赏。
private bool check()
{
bool flag = false;
string dllname = "dllname";
string str = "1a720eff0feeb58484180c0f01a774ba";
AssemblyName name = (from assembly in Assembly.GetExecutingAssembly().GetReferencedAssemblies()
where assembly.Name.ToLower().Equals(dllname.ToLower())
select assembly).FirstOrDefault<AssemblyName>();
if (name != null)
{
string location = Assembly.ReflectionOnlyLoad(name.FullName).Location;
if (!(location != string.Empty))
{
return flag;
}
if (!System.IO.File.Exists(location))
{
return flag;
}
byte[] buffer = System.IO.File.ReadAllBytes(location);
if (BitConverter.ToString(MD5.Create().ComputeHash(buffer)).Replace("-", "").ToUpper().Equals(str.ToUpper()))
{
flag = true;
}
}
return flag;
}
答案 0 :(得分:0)
使用密钥对程序集进行签名?强烈命名的程序集会在加载时自动检查(如果我理解你的话)。
答案 1 :(得分:0)
您可以使用强名称签署程序集: Strong-Named Assemblies