一: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#中寫接口給外部調用。