濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 保護(hù).net中的dll文件方法(防止破解、反編譯dll)

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

熱門標(biāo)簽:合肥電銷外呼系統(tǒng)哪家公司做的好 同安公安400電話怎么申請(qǐng)流程 申請(qǐng)400電話手續(xù) 電話機(jī)器人軟件銷售工作 預(yù)測(cè)式外呼系統(tǒng)使用說(shuō)明 蘋果手機(jī)凱立德地圖標(biāo)注 玉林市機(jī)器人外呼系統(tǒng)哪家好 百度ai地圖標(biāo)注 南陽(yáng)外呼系統(tǒng)定制化

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

我大致的方法為 :強(qiáng)簽名+混淆+加密。

強(qiáng)簽名  
強(qiáng)命名程序集,可以確保你的程序集唯一,而不被篡改、冒用等;即使相同名字的程序集如果簽名也會(huì)不同。
強(qiáng)簽名很簡(jiǎn)單

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

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

 

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

 

為沒(méi)有源碼的DLL文件添加強(qiáng)名稱

 

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

 


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


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

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

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

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

  

3.在屬性里選擇Library屬性(很重要,因?yàn)槲疫@里要混淆的是dll文件,如果不選中,混淆后將不能被正確調(diào)用!),如下圖所示:

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

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

加密

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

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

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

標(biāo)簽:海南 臺(tái)州 嘉興 南京 南京 揚(yáng)州 淄博 南昌

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《保護(hù).net中的dll文件方法(防止破解、反編譯dll)》,本文關(guān)鍵詞  保護(hù),.net,中的,dll,文件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《保護(hù).net中的dll文件方法(防止破解、反編譯dll)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于保護(hù).net中的dll文件方法(防止破解、反編譯dll)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    景宁| 浏阳市| 赤壁市| 永登县| 海口市| 霍林郭勒市| 开封市| 界首市| 城步| 巧家县| 金门县| 甘孜| 庆安县| 土默特左旗| 理塘县| 山阴县| 应城市| 靖远县| 海门市| 新昌县| 岳西县| 宜春市| 肇源县| 宁国市| 准格尔旗| 广平县| 谢通门县| 交城县| 正定县| 兴山县| 桐庐县| 略阳县| 安阳县| 鞍山市| 镇康县| 神木县| 北辰区| 商城县| 雅安市| 托里县| 仪陇县|