原始碼部分混淆加密方案
背景:專案業務原始碼需要開放給甲方,但其中有部分核心程式碼需要加密處理。
目的:實現對核心程式碼DLL的加密,但不能影響其他模組對該DLL的引用。
加密工具:DotfuscatorPro_4.9.6
反編譯工具:.Net Reflector (用於對加密效果進行驗證)
加密步驟:
1.安裝Dotfuscator 加密工具。
比較簡單,點下一步到底。
2.開啟Dotfuscator,會彈出“select project Type”對話方塊,選擇“create new project”新建一個專案:
3.點選Input頁卡,將要加密的核心DLL拖入到input Files框中:
4.去掉“Library”勾選,其他幾項要勾選,如下圖所示:
5.點選“Settings”—“Global Options” ,修改”disable Renaming”為Yes,修改”disable String Encryption”為No。意思是關掉重新命名,因為此DLL需要在外部引用,如果公開類和方法名被改了,外部引用會報錯。
6.點選“String Encryption”選項卡,將要加密的dll勾選上:
7.選擇加密檔案輸出路徑,加密後的DLL將放到此處:
8.設定完成,點“Build Project”按鈕執行加密,會先彈出是否儲存專案的提示,按需要儲存即可,儲存後方便下次直接修改加密選項。
加密效果驗證:
用.Net Reflector工具開啟加密後的DLL,可看到公開方法和類名並沒有改變,但核心實現被隱藏。
以下是加密後的DLL,反編譯出來的結果:
以下是未加密的DLL,反編譯出來的結果: