最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2013年02月17日 14:01:42   作者:  
.net是一種建立在虛擬機上執(zhí)行的語言,它直接生成 MSIL 的中間語言,再由.net編譯器 JIT 解釋映象為本機代碼并交付CPU執(zhí)行。中間語言很容易被反編譯,所以研究下如何有效的保護dll文件

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

我大致的方法為 :強簽名+混淆+加密。

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

為項目添加強名稱方法:
1.右鍵單擊項目,打開屬性窗口;
2.在屬性窗口里選擇《簽名》標(biāo)簽,選中為程序集簽名的選項,在下拉列表里選擇新建,如下圖所示:

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

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

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

3.打開新建簽名窗口,輸入簽名的名稱密碼等內(nèi)容,如下圖所示:
 

 

單擊確定后,簽名添加完成。

 

為沒有源碼的DLL文件添加強名稱

 

如果項目中引用了其他沒有源碼的dll文件,并且此dll文件是沒有強名稱的程序集,則編譯時會出現(xiàn)類似 "Assembly generation failed -- 引用的程序集 'xxxxxxxxxxx' 沒有強名稱" 這樣的錯誤。
我這里引用的是Interop.Scripting.dll程序集,它不是強名稱的,則需要進行以下操作:
1.打開SDK 命令提示窗口;

 


2.創(chuàng)建一個新的隨機密鑰對:
sn -k Interop.Scripting.snk
3.反編譯目標(biāo)程序集
ildasm Interop.Scripting.dll /out=Interop.Scripting.il
3.重新編譯,附帶強命名參數(shù)
ilasm Interop.Scripting.il /dll /resource=Interop.Scripting.res /key=Interop.Scripting.snk /optimize
4.驗證簽名信息
sn -v Interop.Scripting.dll


OK,將生成的dll文件重新引入到項目中然后編譯。

注:未簽名的主程序可以引用已簽名或未簽名的程序集;而已簽名的主程序不能引用未簽名的程序集。(上述文章有相應(yīng)解決辦法)

混淆
混淆就是對編譯生成的MSIL中間代碼進行模糊處理,最簡單的混淆是名稱混淆,即將 命名空間名、類名、方法名、字段名等統(tǒng)統(tǒng)換成特殊符號或其它符號,目的就是讓人看到暈為止,但是并不改變程序執(zhí)行邏輯。
我這里使用的Dotfuscator進行混淆。
Dotfuscator混淆方法
1.創(chuàng)建新工程,如下圖所示:

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

2.選擇要混淆的dll、exe文件,如下圖所示

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

3.在屬性里選擇Library屬性(很重要,因為我這里要混淆的是dll文件,如果不選中,混淆后將不能被正確調(diào)用!),如下圖所示:
如何保護.net中的dll文件(防止破解、反編譯dll)

4.選擇bulid標(biāo)簽,點擊bulid按鈕進行混淆。

我們也可以選擇其它標(biāo)簽進行加密字符串、增加水印等操作,我這里加密工作用另外的方法,所以沒有選擇操作。
OK,混淆完成后,我們可以用Reflector.exe來反編譯下混淆后的dll文件,可以對比源碼看下效果。

加密

接下來我們繼續(xù)對混淆過的dll文件進行加密處理,進一步保護dll文件。
我使用的加密工具是MaxtoCode。
打開軟件后,切換到中文,可以看到非常簡單,添加上dll文件后,直接點擊執(zhí)行加密就可以。其他選項比如:加密字符串、強名稱等都很簡單,大家一試就知道,而且MaxtoCode的幫助做的非常友好,一看就會使用。

加密后的dll文件比先前大了一倍,用Reflector.exe反編譯后,發(fā)現(xiàn)dll文件加密的更徹底,因為主體函數(shù)內(nèi)容都隱藏了。

通過以上三步,使您的dll文件可免于一般人的破解,當(dāng)然,不可能絕對防止被破解。

相關(guān)文章

最新評論

元江| 梓潼县| 瑞金市| 长沙市| 莱州市| 南丰县| 柳河县| 抚宁县| 眉山市| 嘉兴市| 盐山县| 徐闻县| 泽普县| 灌南县| 双桥区| 大城县| 海林市| 绿春县| 泾源县| 东阳市| 泰安市| 定南县| 宁远县| 周口市| 峡江县| 平阴县| 荣成市| 七台河市| 长岛县| 苍溪县| 延长县| 平邑县| 无锡市| 昭通市| 高青县| 通辽市| 永年县| 徐闻县| 平定县| 边坝县| 诸暨市|