一:Dotfuscator
首先是使用Dotfuscator对.net程序加密码混淆。VS自带了PreEmptive Dotfuscator and Analytic5.22混淆工具,默认的安装路径是C:\Program Files (x86)\Microsoft Visual Studio 14.0\PreEmptive Solutions\Dotfuscator and Analytics Community Edition,不过因为是社区版的,混淆功能远不如专业版的强大。
混淆后的程序只改变了方法名和一些变量名,只能降低可读性,效果不佳,而且使用De4dot脱壳后,大部分代码可以还原。
二:.Net Reactor
.NET Reactor的主要功能:NecroBit IL(转为非托管代码)、反 ILDASM(反编译器)、混淆代码、合并、压缩源码、支持命令行等,支持所有 .NET 框架和几乎所有开发语言。这次使用的是网上下载的.NET Reactor5.000破解版。效果比VS自带的Dotfuscator要好,使用De4dot脱壳后,程序代码的整体结构非常混乱,注入了一些没用的方法和类,并且部分代码被还原了。
三:Xencode Postbuild 2010 for .NET
下载了Xencode postbuild 2010 for .NET好像不支持win10系统,安装之后无法运行。据说加密强度和.NET Reactor 和Dotfuscator专业版差不多。
四:SmartAssembly 6.11
smartassembly 是一.NET代码加密保护软件,里面内置的选项方面是蛮多的,能够往程序里面注入一些没用的方法和类来混淆代码结构。使用该软件加密混淆后效果比.NET Reactor好一些。
五:DNGuard HVM
DNGuard HVM一款运行在windows平台的.Net 内核级的加密保护工具,加密功能很强大,而且在3.7版本后加了虚拟机,混淆后的程序很难被破解。由于没有找到DNGuard的破解版,使用了官网上最新的DNGuard HVM3.82试用版(只能使用30天),经过混淆后还生成了一个dll库文件。De4dot不能对混淆后的程序脱壳,效果好。
可以看到使用DNGuard HVM混淆后的程序没有被破解成功,可以说DNGuard HVM 是一个专业的.net混淆加密工具。不过由于该软件的旗舰版需要收费,也很难找到破解版,网上流传的几乎都是试用版。
六:IL Protect
IL Protect也是一个专业的混淆加密工具,但是还没找到下载的版本。
经过比较,一般的.net程序用SmartAssembly这样的软件混淆加壳,对一般人和新手破解者增加了难度。
其实网上下载的混淆工具对.NET程序保护的效果都不太好,保护效果好的工具通常都收费而且还没有破解版。最靠谱的方法:.NET 可以包含托管堆代码(能够被反编译的)与非托管代码(不能被反编译的),将核心逻辑代码写在非托管堆代码中,由托管代码提供接口供外部调用,调用时将非托管堆代码通过.NET动态编译后返回执行结果。就是将核心代码的实现写在非托管C++里,每次调用都动态编译,在C#中写接口给外部调用。