Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测用户是否修改了程序使用的dll_C#_Dll - Fatal编程技术网

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

C# 检测用户是否修改了程序使用的dll,c#,dll,C#,Dll,因此,最近我注意到许多程序被破解,因为我的朋友/小型开发人员将.dll作为源代码公开的参考,然后人们对该dll重新编码,并添加了调试系统,以便在运行时将程序所做的一切打印到控制台。我想找到一种方法来检查一个dll是否被用户修改了/与我在开始时包含的dll不完全相同。感谢您的帮助 private bool check() { bool flag = false; string dllname = "dllname";

因此,最近我注意到许多程序被破解,因为我的朋友/小型开发人员将.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;
        }

使用密钥对程序集进行签名?如果我理解您的意思,则会在加载时自动检查强名称程序集


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

让我帮你谷歌一下:@roryap ye,但我记得所有使用api的帖子都是这样的,所以我问她是否有办法在程序启动时编码并运行它。。。我加了一个编码,我和我的朋友尝试了这个选项,但我认为它是正确的方向