如何给DLL进行加密?
C#程序里面会调用一个DLL,有什么方法可以把这个DLL加密一下,就是想实现让这个DLL在当前电脑上第一次被调用的时候需要根据电脑硬件信息进行解密才可以使用。 --------------------编程问答-------------------- 在线等 --------------------编程问答-------------------- 同求。。。。 --------------------编程问答-------------------- 可以用ZProtect加壳工具实现吗? --------------------编程问答-------------------- --------------------编程问答-------------------- 调用DLL时判断可以访问的电脑硬件信息,不过c#程序做好加密吧。 --------------------编程问答-------------------- 根据电脑硬件信息,这个获取不难,网上的加密算法那很多加密使用的源信息都在人家手里,BIOS一样刷,MAC一样伪造
只能说提高破解的门坎,做到万无一失也不太可能 --------------------编程问答-------------------- windows都盗版呢,怕你这么点加密? --------------------编程问答-------------------- 公司就是想稍微控制一下DLL,防止在客户知道DLL函数名的情况下,是不是就可以单独把DLL拿出来应用到他们自己程序上去调用呢, --------------------编程问答-------------------- 买个加密狗,用他们的外壳加密工具。
成本就10多块钱。 --------------------编程问答--------------------
如果我需要对10个DLL都进行加密,买一个加密狗能行? --------------------编程问答-------------------- 加密没有破不了的
将类似注册码的东西放在dll资源中 每次使用dll的方法之前 先判断注册码跟机器信息是否匹配(自己选择一套算法) 如果不匹配 需要重新获得注册码 这个dll也要加壳
或者 可以将dll嵌入主程序中 作为一种资源 也就是说 exe目录下见不到单独的dll文件
这个缺点很明显 不能更新单独的dll 要更新 除非一整个程序完整更新
开发时,不要将引用到的dll copy到输出目录中 而是将dll文件作为资源嵌入到exe中 dll文件的Build Action 设置为Embedded Resource;
程序一启动就加载资源中的dll:
--------------------编程问答-------------------- 想法很好.... --------------------编程问答--------------------
static class Program
{
[STAThread]
static void Main()
{
string resource1 = "MyApplication1.mydll1.dll"; //dll文件在项目中的路径
string resource2 = "MyApplication1.mydll2.dll"; //dll文件在项目中的路径
EmbeddedAssembly.Load(resource1, "mydll1.dll");
EmbeddedAssembly.Load(resource2, "mydll2.dll");
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
return EmbeddedAssembly.Get(args.Name);
}
}
可以。 --------------------编程问答-------------------- http://www.codeproject.com/Articles/674455/Anti-Reflector-NET-Code-Protection
补充:.NET技术 , C#