歡迎您光臨本站 註冊首頁

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

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
如何保護.net中的dll文件(防止破解、反編譯dll)
net是一種建立在虛擬機上執行的語言,它直接生成 MSIL 的中間語言,再由.net編譯器 JIT 解釋映象為本機代碼並交付CPU執行.中間語言很容易被反編譯,所以研究下如何有效的保護dll文件.
我大致的方法為 :強簽名 混淆 加密. 強簽名
強命名程序集,可以確保你的程序集唯一,而不被篡改、冒用等;即使相同名字的程序集如果簽名也會不同.
強簽名很簡單,本站另一文章已經詳細進行了講解,請參考:http://www.cn-web.com/shtml/article/net/fxsj/2009/06/16/913.shtml
註:未簽名的主程序可以引用已簽名或未簽名的程序集;而已簽名的主程序不能引用未簽名的程序集.(上述文章有相應解決辦法)
混淆
混淆就是對編譯生成的MSIL中間代碼進行模糊處理,最簡單的混淆是名稱混淆,即將 命名空間名、類名、方法名、欄位名等統統換成特殊符號或其它符號,目的就是讓人看到暈為止,但是並不改變程序執行邏輯.
我這裡使用的Dotfuscator進行混淆.
Dotfuscator混淆方法:
1.創建新工程;
2.選擇要混淆的dll、exe文件;
3.在屬性里選擇Library屬性(很重要,我這裡要混淆的是dll文件,如果不選中,混淆后將不能被正確調用!),如下圖所示: 4.選擇bulid標籤,點擊bulid按鈕進行混淆. 我們也可以選擇其它標籤進行加密字元串、增加水印等操作,我這裡加密工作用另外的方法,所以沒有選擇操作.
OK,混淆完成後,我們可以用Reflector.exe來反編譯下混淆后的dll文件,可以對比源碼看下效果.
加密
接下來我們繼續對混淆過的dll文件進行加密處理,進一步保護dll文件.
我使用的加密工具是MaxtoCode.
打開軟體后,切換到中文,可以看到非常簡單,添加上dll文件后,直接點擊執行加密就可以.其他選項比如:加密字元串、強名稱等都很簡單,大家一試就知道,MaxtoCode的幫助做的非常友好,一看就會使用.


加密后的dll文件比先前大了一倍,用Reflector.exe反編譯后,發現dll文件加密的更徹底,主體函數內容都隱藏了.
通過以上三步,使您的dll文件可免於一般人的破解,當然,不可能絕對防止被破解.


[火星人 ] 如何保護.net中的dll文件(防止破解、反編譯dll)已經有627次圍觀

http://coctec.com/docs/security/show-post-58937.html