成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

如何防止.net中的dll文件被反編譯?

2010-08-28 10:56:31來源:西部e網(wǎng)作者:

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

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

強(qiáng)簽名

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

強(qiáng)簽名很簡單,本站另一文章已經(jīng)詳細(xì)進(jìn)行了講解,請參考:http://www.cn-web.com/shtml/article/net /fxsj/2009/06/16/913.shtml

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

混淆

混淆就是對編譯生成的MSIL中間代碼進(jìn)行模糊處理,最簡單的混淆是名稱混淆,即將 命名空間名、類名、方法名、字段名等統(tǒng)統(tǒng)換成特殊符號或其它符號,目的就是讓人看到暈為止,但是并不改變程序執(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)行加密字符串、增加水印等操作,我這里加密工作用另外的方法,所以沒有選擇操作。

OK,混淆完成后,我們可以用Reflector.exe來反編譯下混淆后的dll文件,可以對比源碼看下效果。

加密

接下來我們繼續(xù)對混淆過的dll文件進(jìn)行加密處理,進(jìn)一步保護(hù)dll文件。

我使用的加密工具是MaxtoCode。

打開軟件后,切換到中文,可以看到非常簡單,添加上dll文件后,直接點(diǎn)擊執(zhí)行加密就可以。其他選項(xiàng)比如:加密字符串、強(qiáng)名稱等都很簡單,大家一試就知道,而且MaxtoCode的幫助做的非常友好,一看就會使用。

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

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

關(guān)鍵詞:VS.net

贊助商鏈接:

主站蜘蛛池模板: 贵溪市| 克山县| 南溪县| 灵宝市| 济阳县| 宕昌县| 兰溪市| 潼关县| 肥乡县| 汕尾市| 东莞市| 铜山县| 山东| 望城县| 正定县| 湾仔区| 博野县| 阿合奇县| 大足县| 宁城县| 梨树县| 措美县| 定结县| 赞皇县| 灌阳县| 马龙县| 滕州市| 绵竹市| 惠水县| 雅江县| 姚安县| 石城县| 鞍山市| 三亚市| 青岛市| 苍溪县| 巴彦淖尔市| 资溪县| 阳新县| 汉源县| 论坛|