检测用户是否修改了程序使用的dll
本文关键字:dll 程序 用户 是否 修改 检测 | 更新日期: 2023-09-27 17:58:38
最近我注意到许多程序被破解,因为我的朋友/小型开发人员将.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;
}
用密钥对程序集进行签名?强名称程序集在加载时会自动检查(如果我了解您的话)。
创建和使用强命名程序集
您可以使用强名称对程序集进行签名:强命名程序集