.net 混淆器,網上搜尋了很多款,比如Dotfuscator、xeoncode、foxit等等。但大部分收費,當然也有破解版的,github上找到一個ConfuserEx,開源地址:https://github.com/yck1509/ConfuserEx
混淆加殼以及脫殼,反編譯工具常用如下:ConfuserEx、UnConfuserEx、Fixer、ConfuserExStringDecryptor、ConfuserExSwitchKiller、de4dot、ILSpy
1、新建一個C#類庫,ConfuserTest_Library,以及一個控制台程序ConfuserTest_HelloWorld
//控制台程序 using ConfuserTest_Library; using System; namespace ConfuserTest_HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine(new HelloWorld("ConfuserEx")); Console.ReadKey(); } } } //測試用類庫 using System; namespace ConfuserTest_Library { public class HelloWorld { private string _i_am_Who = string.Empty; public HelloWorld(string i_am_Who) { _i_am_Who = i_am_Who; } public override string ToString() { return $"Hello World! I'm {_i_am_Who}"; } } }
編譯后,用Reflector打開ConfuserTest_HelloWorld.exe,毋庸置疑,可以看到源碼,如下圖:

2,現在我們用ConfuserEx混淆一下試試:
下載ConfuserEx后解壓,打開ConfuserEx.exe,把ConfuserTest_HelloWorld.exe(此處注意,拖進來的文件的路徑應該是普通用戶有訪問權限的路徑)拖進來,如下圖:

點擊Settings
(1)選擇Packer,(個人理解輸出可執行包,不准確,因為單獨打包類庫,選擇這個則報錯)
(2)Modules->選擇ConfuserTest_HelloWorld.exe
(3) Rules 點擊+號,true
如下圖:

擊Protest!->Protect! ,提示導出成功(Confused目錄下),

在用ILspy打開ConfuserTest_HelloWorld.exe查看
3、如果只是混淆exe文件,這樣就可以了,如果混淆整個項目,則把ConfuserTest_HelloWorld.exe,ConfuserTest_Library.dll都拖進來

這時,混淆后就只有一個ConfuserTest_HelloWorld.exe文件了,但是,點擊運行時正常運行的,confuserEx是把兩個文件給合並了,可以看出ConfuserTest_HelloWorld.exe由原來的5k增加到了18k
4.如果我們只需要混淆某一個dll,這時如果在Settings上選中Packer則報“No executable module!”沒有執行模塊錯誤,所以單獨選擇dll混淆時,不要選擇Packer。
另外,在設置規則Rules時,還可以編輯選項,如下:


