在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加载器?还是让前一种方法更简单?
是,实现AppDomain。AssemblyResolve事件。
此事件在程序集解析失败时触发(您需要将程序集存储在程序集解析无法找到它们的地方),然后您可以在加载并解密后说"哦,它在这里"。