检测用户是否修改了程序使用的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;
        }

检测用户是否修改了程序使用的dll

用密钥对程序集进行签名?强名称程序集在加载时会自动检查(如果我了解您的话)。

创建和使用强命名程序集

您可以使用强名称对程序集进行签名:强命名程序集