保护.net中的dll文件方法(防止破解、反编译dll) |
本文标签:防止破解,反编译dll) .net是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间语言,再由.net编译器 JIT 解释映象为本机代码并交付CPU执行 。中间语言很容易被反编译,所以研究下如何有效的保护dll文件 。 我大致的方法为 :强签名+混淆+加密 。 为项目添加强名称方法: 3.打开新建签名窗口,输入签名的名称密码等内容,如下图所示:
单击确定后,签名添加完成 。
为没有源码的DLL文件添加强名称
如果项目中引用了其他没有源码的dll文件,并且此dll文件是没有强名称的程序集,则编译时会出现类似 "Assembly generation failed -- 引用的程序集 xxxxxxxxxxx 没有强名称" 这样的错误 。
OK,将生成的dll文件重新引入到项目中然后编译 。 注:未签名的主程序可以引用已签名或未签名的程序集;而已签名的主程序不能引用未签名的程序集 。(上述文章有相应解决办法) 混淆 2.选择要混淆的dll、exe文件,如下图所示 3.在属性里选择Library属性(很重要,因为我这里要混淆的是dll文件,如果不选中,混淆后将不能被正确调用!),如下图所示: 4.选择bulid标签,点击bulid按钮进行混淆 。 加密 接下来我们继续对混淆过的dll文件进行加密处理,进一步保护dll文件 。 加密后的dll文件比先前大了一倍,用Reflector.exe反编译后,发现dll文件加密的更彻底,因为主体函数内容都隐藏了 。 通过以上三步,使您的dll文件可免于一般人的破解,当然,不可能绝对防止被破解 。 |