色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

WPF與混淆器

時(shí)至今日,混淆依然是.NET程序的一道重要保護(hù)手段,而混淆器對(duì)WPF應(yīng)用程序的支持是怎樣的呢?我們今天就通過實(shí)例講解一下。

首先建立如下圖所示的簡(jiǎn)單的用戶界面:

在界面代碼中設(shè)置一些綁定屬性:

在后臺(tái)代碼中首先定義一個(gè)種族枚舉,以便于在列表中使用:

下面在窗體Window1類中定義以下屬性:

紅圈處的代碼功能是將種族枚舉的全部值載入到種族列表屬性中,這樣就可以在前后臺(tái)一直以統(tǒng)一、優(yōu)雅的方式使用枚舉,這是個(gè)不錯(cuò)的小技巧。

接下來在構(gòu)造函數(shù)中直接硬編碼一些屬性的值,然后將自己作為自己的DataContext

玩魔獸的朋友們請(qǐng)勿喧嘩….

現(xiàn)在編譯并運(yùn)行程序,可以看到數(shù)據(jù)被很好地反映到了界面上:

OK,接下來就是主角了,我們將以Dotfuscator Professional Edition 4.3 Evaluation為例來進(jìn)行介紹。

打開Dotfuscator后直接新建項(xiàng)目,載入我們編譯好的程序,然后直接進(jìn)行混淆和輸出,運(yùn)行輸出后的程序:

嗯,什么數(shù)據(jù)都沒顯示出來,為什么呢?

據(jù)我的理解就是,混淆器目前還沒法解析及修改XAML文件,致使混淆后的后臺(tái)代碼與前臺(tái)XAML界面描述不匹配,比如“{Binding 種族}”之類的語句根本無法與混淆后的代碼關(guān)聯(lián),所以就全部都無法顯示。

以下顯示了部分混淆的映射結(jié)果:

其中灰色底色的項(xiàng)代表已被從程序中移除,其他的都有對(duì)應(yīng)的混淆后的名稱。

現(xiàn)在,要使混淆后的程序正常工作,我們就必須向XAML妥協(xié)。

你可能首先想到的是恢復(fù)上面被刪除的那幾個(gè)與界面相關(guān)的屬性,但是我嘗試過,那并不起作用。

而只要禁止對(duì)Window1類的混淆,問題就基本上解決了:

看看混淆的結(jié)果,大概能猜想出Dotfuscator是自動(dòng)將禁止混淆的類的公共屬性也加入到排除混淆行列的,那幾個(gè)屬性這次沒有被移除:

但我仍無法解釋為什么當(dāng)只禁止混淆屬性、不禁止混淆類時(shí)程序仍舊無法正常工作。

現(xiàn)在還有個(gè)問題,就是列表上顯示的是混淆后的枚舉名稱,這很好處理,只要禁止混淆枚舉的所有字段就好了:

現(xiàn)在程序已完全恢復(fù)正常了,但是這與未經(jīng)混淆的程序也沒有太大分別了,看看通過Reflector解析的混淆后的程序:

總結(jié):混淆技術(shù)原本已經(jīng)算是比較完善了,而現(xiàn)在,WPF又為之帶來了新的挑戰(zhàn),我們只能期待各廠商能夠盡快跟進(jìn),讓WPF程序也能受到全面的保護(hù),為其未來的廣泛應(yīng)用奠定基石。

本文的PDF版本下載:http://www.box.NET/shared/abeeolbk72

源代碼下載:http://www.box.NET/shared/uqadhnhsua

NET技術(shù)WPF與混淆器,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 滕州市| 沁阳市| 和平区| 七台河市| 兴安盟| 海南省| 克拉玛依市| 青海省| 平陆县| 元江| 同仁县| 常熟市| 唐海县| 西乡县| 马鞍山市| 广平县| 柘荣县| 墨玉县| 凤山市| 通许县| 巴塘县| 雷山县| 宕昌县| 探索| 务川| 东源县| 秦安县| 普兰店市| 黄浦区| 抚宁县| 汝州市| 海伦市| 侯马市| 从江县| 宝坻区| 龙江县| 额敏县| 车致| 周宁县| 新化县| 九寨沟县|