關於軟體的程式碼混淆的產品對比與分析

wrt4453088發表於2018-05-22

程式碼混淆工具 對比

 

一、.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自身受到保護!

 

持續更新中....

相關文章