在c#应用程序中使用加密程序集

本文关键字:加密 程序集 应用程序 | 更新日期: 2023-09-27 18:08:52

我试图保护我在我的WPF应用程序中使用的dll从一个简单的副本。我的解决方案是加密这些dll的代码部分,并在它加载到我的应用程序时解密。

有一种使用Assembly的工作方法:

       using (FileStream fs = new FileStream(@"Mydll.dll", FileMode.Open, FileAccess.Read))
        {
            byte[] file = new byte[fs.Length];
            fs.Read(file, 0, (int) fs.Length);
            assemblyCashCode = Assembly.Load(file);
            Type[] types = assemblyCashCode.GetExportedTypes();
            Type t = MainWindow.assemblyCashCode.GetType("MyClass");
            MethodInfo[] mi = t.GetMethods();
            TypeInfo ti = t.GetTypeInfo();
            object cc = assemblyCashCode.CreateInstance("MyClass");
            int i = (int) t.InvokeMember("M3", BindingFlags.InvokeMethod, null, cc, null);
        }

但是我需要使用CreateInstance和InvokeMember方法,每次我想从这个dll的对象工作。这是一个可怕的观点,不是吗?

是否有另一种方法来加载这些dll而不是CLR加载器?还是让前一种方法更简单?

在c#应用程序中使用加密程序集

是,实现AppDomain。AssemblyResolve事件。

此事件在程序集解析失败时触发(您需要将程序集存储在程序集解析无法找到它们的地方),然后您可以在加载并解密后说"哦,它在这里"。