2016-07-26 55 views
-3

所以最近我注意到很多程序被破解,因为我的/小开发者的朋友有.dll作为参考源代码公开,然后人们重新编写该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

让我谷歌为你:https://www.google.com/search?q=Detect+if+User + modified + a + dll + that + is + used + by your + program&ie = utf-8&oe = utf-8 –

+0

@roryap ye,但是所有使用api的帖子我都记得如此,所以我让她知道if这是一种编写代码并在程序启动时运行它的方法... ima为我加了一个编码,我的朋友尝试了OP(didn#T work,buti认为它在其他方向) – Dafuqisthis

回答

相关问题