程式碼混淆工具 對比
一、.NET Reactor
C#的程式碼辛苦寫出來之後,一個反射工具,就可以完全顯露出來。
當然,在做專案時,這個功能還不錯。因為我就曾在一個專案上使用C#,沒有進行任何混淆。結果在專案二年多之後,需要做一些調整,自己儲存的原始碼丟失了。當時也嚇了一跳,可是想到反射工具,趕快拿出來用一下。雖然在反射出來會出現一些錯誤,但畢竟大部分程式碼也都弄出來了。
這是在專案上,還有好處的,可是,試想一個產品,被別人給反射了,會是怎麼樣的一個情況,不說他去照搬功能,就是註冊、加密那部分都會被輕易拿到。這可不是什麼一個好主意。
於是,必須要使用程式碼混淆器。
這些混淆器大多是需要注意的,使用效果各不相同。普通的程式碼混淆器只是把私有欄位和變數轉換成隨機碼,如果是小程式,還可以猜一猜,如果是比較大的程式,猜起來可就不會那容易了。高階一點的是混淆成不可閱讀的字元,這樣的混淆後的程式碼乾脆就比機器碼還難懂,基本上是翻譯不出來了。
但這些程式碼混淆器都有一定的風險,即混淆後的程式碼實然無法正常呼叫了。
而我一直用.NET Reactor,這個非常小巧,免安裝,而且不需要註冊。他只是將程式碼換成隨機碼,但是混淆後的程式碼都能正常使用。
但是有一點需要注意:凡是需要序列化成二進位制的程式碼,是不能用混淆器的。混淆後的程式碼將不能正常序列化!
共享一下這個混淆器:
http://files.cnblogs.com/ghost79/DotNETReactor.rar
試用結果:部分程式碼無法正常被呼叫。
二、ILProtector
ILProtector由vgrsoft.com積極開發和維護。ILProtector首先開始作為免費軟體,專注於保護反向工程的.Net程式碼。現在它的最新版本是付費軟體(有關授權的詳細資訊在這裡),顯然還是有更多的保護選項的偉大的軟體。但我們仍然很幸運,因為我們可以自由使用舊版本。這個軟體的另一個好處是它提供了命令列介面(CLI),所以我們可以很容易地將它整合到第三方工具中,就像我們將在Visual Studio中使用它一樣。
以下是我們可以使用ILProtector保護我們的.Net軟體的一些方法
注意:請在繼續之前建立軟體的備份。
通過使用ILProtector的主介面
1.
開啟ILProtector
2.
點選+圖示選擇您的軟體
3.
4.
現在點選屬性圖示開啟屬性。這裡你可以改變設定,如果你想嵌入保護DLL到你的軟體或保持它們與其他設定分開。點選儲存
5.
7 .現在回到主介面,點選Process按鈕保護軟體。這將生成您的軟體,防止知道反編譯器,如IL DASM,.NET反射器,ILSpy,dotPeek等
8.
通過在CMD中使用ILProtector
1. 開始 - >輸入cmd - >開啟cmd
2. 當cmd開啟時,鍵入folloing命令(使用你的命令更改輸出資料夾和exe路徑)
3.
ILProtector.exe -out =“c:\ ouput資料夾”-nogui -embed-dlls“c:\ myprogram.exe”
4.
5.打回車鍵在鍵盤上,這會產生軟體的保護版本。
通過在Visual Studio中使用生成事件
1. 在Visual Studio中開啟您的專案。
2. 開啟專案 - >屬性 - >生成事件
3.在Post Build事件中輸入以下命令。(用你的所有路徑和exe名稱替換)
ILProtector -out =“$(SolutionDir)My Software \ bin \ Release”-nogui -embed-dlls“$(SolutionDir)My Software \ bin \ Release \ My Software.exe”
注意:您應該在Enviromment變數中包含ILProtector的目錄路徑,在我的情況下它是C:\ Program Files(x86)\ VgrSoft \ ILProtector
4. 特點
- 軟體程式碼保護
- 高效能
- 受保護程式集全面反射支援
- 支援.NET Framework 2.0 / 3.0 / 3.5 / 4.0 / 4.5
- 支援Windows x32 / x64
- 不使用未公開的功能
ILProtector自身受到保護!
持續更新中....