.net是一种建立在虚拟机上并被执行的语言。它直接生成MSIL的中间语言,由解释并映射到本机代码。net编译器JIT并交付给CPU执行。中间语言容易反编译,要研究如何有效保护dll文件。
我一般的方法是:强签名+混淆+加密。
强签名
强名称程序集可以确保您的程序集* * *不会被篡改或欺诈性使用;如果签名,即使是同名的程序集也会不同。
强签名非常简单。这个网站上的另一篇文章已经详细解释了它。请参考:http://www . cn-web . com/shtml/article/net/fxsj/2009/06/16/913 . shtml。
注意:未签名的主程序可以引用已签名或未签名的程序集;已签名的主程序不能引用未签名的程序集。(以上文章有相应的解决方案)
不著名的
混淆是编译的MSIL中间代码的模糊处理。最简单的混淆就是名字混淆,即命名空间名、类名、方法名、字段名等。都用特殊符号或其他符号代替。目的是让人头晕,但不改变程序执行逻辑。
我在这里使用Dotfuscator是为了避免混淆。
Dotfuscator混淆方法:
1.创建新项目;
2.选择要混淆的dll和exe文件;
3.在属性中选择库属性(非常重要,因为我这里要混淆的是dll文件。如果不选,混淆后就不能正确调用了!),如下图所示:
4.选择bulid选项卡,然后单击bulid按钮进行混淆。
我们还可以选择其他标签来加密字符串,添加水印等。我这里的加密工作用的是另一种方法,所以没有选择运算。
好了,混淆完成后,我们可以用Reflector.exe反编译混淆的dll文件,对比源代码看看效果。
加密
接下来,我们继续对混淆的dll文件进行加密,以进一步保护dll文件。我用的加密工具是MaxtoCode。打开软件后,切换到中文,可以看到非常简单。添加dll文件后,只需点击执行加密。其他选项,如:加密字符串、强名称等。,都很简单,一试就知道了。而且MaxtoCode的帮助非常友好,一看就能用。
加密的dll文件是以前的两倍大。用Reflector.exe反编译后,发现dll文件加密的更彻底,因为主要函数的内容都被隐藏了。通过以上三个步骤,可以防止你的dll文件被普通人破解。当然,也不可能绝对防止被破解。