我的專案中某一部分資訊比較敏感,但是.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%防逆向,客戶端只能是通過手段制造逆向的難度,
安全的思路還是:驗證等邏輯放在服務端處理,只回傳給客戶端驗證結果,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/81871.html
標籤:C#
上一篇:C#開發OPC客戶端
下一篇:C# Excel匯出超出65536行報錯 Invalid row number (65536) outside allowable range (0..65535)
