如何保護.net中的dll文件(防破解、反編譯)

.net是一種建立在虛擬機上執行的語言,它直接生成 MSIL 的中間語言,再由.net編譯器 JIT 解釋映象爲本機代碼並交付CPU執行。中間語言很容易被反編譯,所以研究下如何有效的保護dll文件。

  保護DLL方法爲 :強簽名+混淆+加密。 

   強簽名

           強命名程序集,可以確保你的程序集唯一,而不被篡改、冒用等;即使相同名字的程序集如果簽名也會不同。 

                注:未簽名的主程序可以引用已簽名或未簽名的程序集;而已簽名的主程序不能引用未簽名的程序集。

  混淆 

                 混淆就是對編譯生成的MSIL中間代碼進行模糊處理,最簡單的混淆是名稱混淆,即將 命名空間名、類名、方法名、字段名等統統換成特殊符號或其它符號,目的就是讓人看到暈爲止,但是並不改變程序執行邏輯。 我這裏使用的Dotfuscator(這個工具是.net自帶的 ,可以在VS中工具-》外部工具中看到路徑)進行混淆。

                  Dotfuscator混淆方法: 1.創建新工程;   2.選擇要混淆的dll、exe文件; 3.在屬性裏選擇Library屬性(很重要,因爲我這裏要混淆的是dll文件,如果不選中,混淆後將不能被正確調用!), 4.選擇工具欄bulid標籤,點擊bulid按鈕進行混淆。 我們也可以選擇其它標籤進行加密字符串、增加水印等操作,我這裏加密工作用另外的方法,所以沒有選擇操作。 混淆完成後,我們可以用Reflector.exe來反編譯下混淆後的dll文件,可以對比源碼看下效果。 

加密

           接下來我們繼續對混淆過的dll文件進行加密處理,進一步保護dll文件。 我使用的加密工具是MaxtoCode。 打開軟件後,切換到中文,可以看到非常簡單,添加上dll文件後,直接點擊執行加密就可以。其他選項比如:加密字符串、強名稱等都很簡單,大家一試就知道,而且MaxtoCode的幫助做的非常友好,一看就會使用。 加密後的dll文件比先前大了一倍,用Reflector.exe反編譯後,發現dll文件加密的更徹底,因爲主體函數內容都隱藏了。 通過以上三步,使您的dll文件可免於一般人的破解,當然,不可能絕對防止被破解。


MaxToCode下載地址 

發佈了211 篇原創文章 · 獲贊 29 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章