我的項目中某一部分信息比較敏感,但是.Net程式反編譯之後連註釋都看得到。需要把exe保護起來,如:代碼混淆之後再加殼。 Bing到一款.Net混淆工具 ILProtector 作為資深工具黨,先"拿來主義"體驗體驗。本篇主要介紹工具使用 1.加密前的exe,反編譯之後什麼都有 2.用ILProte ...
我的項目中某一部分信息比較敏感,但是.Net程式反編譯之後連註釋都看得到。需要把exe保護起來,如:代碼混淆之後再加殼。
Bing到一款.Net混淆工具 ILProtector 作為資深工具黨,先"拿來主義"體驗體驗。本篇主要介紹工具使用
1.加密前的exe,反編譯之後什麼都有
2.用ILProtector加密,參考官網介紹 http://www.vgrsoft.net/Products/ILProtector
原理是把.Net的中間語言MSIL代碼 轉換成特殊的代碼,只有他自己可以識別,其他工具如 IL DASM, .NET Reflector, ILSpy, dotPeek 不能夠識別出來,因此達到防逆向目的。
支持 .NET Framework 2.0, 3.0, 3.5, 4, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2
支持 Windows x32/x64
使用也比較簡單,直接拖程式到 Assemblies中,
這裡會生成兩個DLL到文件夾中,至於dll的名字無所謂寫什麼,後面可以使用工具合併成一個exe
EnableIntegr 設置為True,啟動的時候回檢測程式是否被人修改,如果別人修改了就不能用了。
EncryptStrings 設置為True,否則你的String類型的常量不會被加密
這裡是IDE安裝的位置,程式自動檢測的。如果有報錯,來這裡看下是否路徑不對
總的來說是傻瓜化操作,托程式進來,填寫輸出路徑,點Process即可
3.看混淆後的結果
方法已經是完全看不懂了,常量也被加密碼了,達到了預期效果。
官網介紹的一些限制條件:
C++/CLI混合編碼的程式集、類構造函數、泛型以及__arglist關鍵字方法 可以考慮編碼中避開這些限制。
4.寫在最後
世界上沒有最鋒利的矛,也沒有最堅固的盾。靠混淆、加殼等也做不到100%防逆向。客戶端只能是通過手段製造逆向的難度。
安全的思路還是:驗證等邏輯放在服務端處理,只返回給客戶端驗證結果。