軟體的安裝過程相當的簡單,筆者這邊就不再贅述了;安裝完畢之後,您會在菜單中看到如下的項目
其中 PDF 的檔案 (Userguide) 是說明檔案,另一個就是我們要使用的主程式了;執行之後第一個畫面會看開啟就項目或是建立新項目的畫面
在這個畫面中,是選擇要建立新的項目或是開啟之前使用過的項目,這是由於在 Dotfuscator 中有相當多的設定可以讓你去做設定以及調整,項目是用來儲存這些相關的設定以及對應的 Visual Studio 項目。
接下來要設定一下使用組件的參考位置,這個設定是位於 Setting 的頁面中,加入的方式可以參考;這邊設定參考組件的位置是讓 Dotfuscator 能夠剖析器代碼中的型別、使用到的組件以及其他相關的資訊
而要加入的組件參考位置依照作業系統會有一些分別,會位於
加入之後,第二個步驟是加入要混淆的項目,這個設定是位於 Input 頁面中,例如
這個地方就可以指定你編譯後產生的 xap 檔案,指定好了之後,接下來便是其他的設定項目了;先回到 Setting 的頁面中,首先先來看看經過混淆器編譯後的檔案會放置在什麼地方呢?這個在 Build Setting 中可以去做設定,例如筆者這邊是設定成 D:\WP7 的目錄,而在這個部分原始的設定是『${configdir}\Dotfuscated』您也可以保留這樣的設定,這個設定的意思是經過混淆器編譯後的檔案會跟您的 xml 設定檔放在相同的位置,這部分可以依照您的喜好下去做設定。
到這邊為止,就已經完成了基本的環境設定了,接下來需要再調整一些設定;這些設定位在 Global Options 這個項目中,在 Global Option 中可以設定 Dotfuscator 各功能是開啟或關閉,而在這邊,我們將重新命名 (Renaming) 以及 Control Flow 的項目給關閉起來 (依照預設的設定,這兩個項目是開啟的),例如這樣
那麼為什麼要關閉 Renaming 項目的功能呢?這是因為在應用程式中,可能會自訂類別來儲存各種資料使用,例如說建立了 Book 的類別,而其中可能會有標題、出版日期等屬性存在,大概像這樣子
public string Title { get { return _title; } set { _title = value; } } public string PubDate { get { return _pubdate; } set { _pubdate = value; } }
而在 XAML 的地方,利用了資料繫結的功能去做顯示,例如
- <TextBlock VerticalAlignment="Center" Grid.Column="1" Margin="5,0,0,0" Grid.Row="1" FontSize="32" TextWrapping="Wrap" Text="{Binding Path=Title}"/>
- <TextBlock VerticalAlignment="Center" Grid.Column="1" Margin="5,0,0,0" Grid.Row="1" FontSize="32" TextWrapping="Wrap" Text="{Binding Path=PubDate}"/>
而混淆器中 Renaming 的功能會將各變數、方法等作重新命名,而之間可能會發生對應不到的情形,因此會造成應用程式的錯誤發生,這部分要特別的留意一下。
而 Control Flow 的部分是會在程式碼中加入一些混淆程式流程以及架構的程式碼,而在現階段我們也不希望 Dotfuscator 這麼做,因此也設定為關閉。
設定完成之後,就可以按下 Build Project 的按鈕來建立項目了,按鈕的位置可以參考
建置之後沒有意外的話會在下方的說明視窗中出現完成的訊息,例如
而之後就會在您指定的位置產生一個新的 xap 檔案了;那麼經過混淆器編譯之後有甚麼不同呢?同樣的來看看先前的按鈕事件有甚麼不同
您可以看出程式碼的部分不會直接的被看出來了,太棒了不是嗎;只要經過簡單的幾個步驟之後,就能夠保護我們的應用程式了。這也是最簡單的設定方式,那如果想要用到一些其他設定的功能呢?筆者再簡單的介紹一下,這邊以字串加密的部分來作為範例;例如說在 Book 類別中宣告了一個字串變數,大概像下面這樣
namespace DotobfuscatorDemo{ public class Book { public string Title { get; set; } public string PubDate { get; set; } public string Author { get; set; } public string temp; public Book() { temp = "12345"; } }}
而在沒有經過混淆器編譯的情形下,反組譯後的結果會像是這樣
字串會直接的顯示出來,而這時候如果不想讓字串以這麼明顯的方式被看出來的話,就可以利用混淆器來做加密,那要怎麼做呢?首先要在設定中把字串加密的部分給啟用
之後設定受影響的範圍,這邊筆者只設定了 Book 類別,例如下面這樣
接下來直接在混淆器中重新編譯一次 xap 檔案就可以了,那麼新產生的 xap 如果經過反組譯會是什麼樣子呢?
您可以看到字串部分不會直接被顯示出來,而且另外套用了一個名為『b』的 function,『b』的內容是
這樣就可以保護您的字串不會那麼輕易的就被看出來了,混淆器會使這個動作變得複雜、以及不容易瞭解,但同時也會犧牲一些效能就是了。您可以參考 Userguide 的使用說明來瞭解其他的設定部分。
測試經過混淆器產生的應用程式
那麼經過混淆器產生的 xap 檔案應該要如何測試呢?我們可以利用部屬工具直接將檔案部屬到模擬器或是裝置上下去做測試,工具的位置可以在菜單中看到像是如下的畫面
執行之後會看到如下的介面
透過這個工具就可以進行部屬的動作,而部屬成功之後,您就可以在裝置上或是模擬器上面測試您的應用程式了
結語
混淆器主要是會讓解讀 (反組譯) 的動作變得困難,進而有效協助我們來保護應用程式,但也並非萬靈丹,不將敏感性的資料直接寫在程式碼中,適當的採用加密的方式來儲存資料也是必須的;而使用混淆器進行編譯之後很重要的一點,一定要再經過一次完整的測試,因為經過混淆器編譯之後,根據設定的不同,是會去改變一些程式的邏輯或是資料,難保是不是會造成某些功能的運作不正常,切記一定要再驗證過程式的正確性才行。