C# 检测用户是否修改了程序使用的dll
因此,最近我注意到许多程序被破解,因为我的朋友/小型开发人员将.dll作为源代码公开的参考,然后人们对该dll重新编码,并添加了调试系统,以便在运行时将程序所做的一切打印到控制台。我想找到一种方法来检查一个dll是否被用户修改了/与我在开始时包含的dll不完全相同。感谢您的帮助C# 检测用户是否修改了程序使用的dll,c#,dll,C#,Dll,因此,最近我注意到许多程序被破解,因为我的朋友/小型开发人员将.dll作为源代码公开的参考,然后人们对该dll重新编码,并添加了调试系统,以便在运行时将程序所做的一切打印到控制台。我想找到一种方法来检查一个dll是否被用户修改了/与我在开始时包含的dll不完全相同。感谢您的帮助 private bool check() { bool flag = false; string dllname = "dllname";
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;
}
使用密钥对程序集进行签名?如果我理解您的意思,则会在加载时自动检查强名称程序集
您可以使用强名称对程序集进行签名:
让我帮你谷歌一下:@roryap ye,但我记得所有使用api的帖子都是这样的,所以我问她是否有办法在程序启动时编码并运行它。。。我加了一个编码,我和我的朋友尝试了这个选项,但我认为它是正确的方向