.NET混淆器Dotfuscator怎樣利用切除和水印保護應用程序?

Dotfuscator是一個.NET的Obfuscator。它提供企業級的應用程序保護,大大下降了盜版、知識產權盜竊和篡改的風險。Dotfuscator的分層混淆、加密、水印、自動失效、防調試、防篡改、報警和防護技術,爲世界各地成千上萬的應用程序提供保護。算法

Dotfuscator(點擊下載)提供了一種應用程序保護的多層方法。這些層中的每一層都提供了一個重要的總體保護策略。若是一層受到損害,其餘層繼續提供有效保護,使攻擊者更難以實現其目標。而且不只有多個層,並且每一個層都具備比其餘混淆產品使用的簡單技術更強大的高級功能。加密

從本文開始咱們一塊兒瞭解Dotfuscator如何對應用程序進行多層保護,層層遞進,大體可分爲:spa

  • 第一層保護——Obfuscation轉換:它對編譯的代碼進行操做,使逆向工程變得困難或不可能。
  • 第二層保護——保護程序運行時發生的檢查:當程序檢測到攻擊者試圖篡改或反向工程時,它可使用自定義邏輯進行自我防護。
  • 其他增強保護——包括切除和水印。
  • Dotfuscator提供某些功能幫您構建、部署和調試混淆的程序集

 


第三層保護:額外的保護

切除

較小的應用程序下載速度更快,安裝更快,加載更快,運行速度更快。Dotfuscator的刪除功能(有時稱爲「修剪」)靜態分析您的代碼以查找未使用的類型,方法和字段,並將其刪除。Dotfuscator還會在處理MSIL文件時從MSIL文件中刪除非必要元數據,從而縮小應用程序並減小攻擊者可用的數據。調試

注意:一樣也能夠經過將Emit Debugging Symbols設置爲Never來讓Dotfuscator刪除調試信息。資源

靜態分析經過遍歷代碼開始工做,從一組稱爲觸發器或入口點的方法開始。一般,您但願外部應用程序調用的任何方法都必須定義爲觸發器。例如,在簡單的獨立應用程序中,該Main方法將被定義爲觸發器。程序集能夠爲其定義多個觸發器。字符串

注意:打開裝配的庫模式會致使Dotfuscator自動將全部可見類型和成員視爲入口點。部署

當Dotfuscator遍歷每一個觸發器方法的代碼時,它會記錄正在使用的字段,方法和類型。而後它以相似的方式分析全部被調用的方法。該過程繼續進行,直到分析了全部被調用的方法。完成後,Dotfuscator可以肯定應用程序運行所需的最小類型及其成員。輸出程序集中僅包含這些類型。get

Dotfuscator以XML格式生成刪除報告,其中列出了全部輸入程序集以及每一個程序集的修剪方式。每一個程序集都有一個類型及其成員列表(方法,字段,屬性等)以及指示項目是否已刪除的屬性。該報告還描述瞭如何修剪附加到每一個程序集的託管資源。產品

存在兩種類型的夾雜物,二者均可以經過特定夾雜物和自定義規則來控制。it

  • 包含觸發器:若是您選擇一個方法做爲包含觸發器,Dotfuscator將確保保持該方法,以及調用圖Dotfuscator中看到的該方法的任何後代(再次跳過像反射這樣的東西)。若是包含觸發設置在方法A(),那麼這兩個A()和B()將被保留。
  • 條件包含:保留任何設置爲條件包含的方法,但不會遍歷其調用樹以保留其餘方法。若是在方法上設置了條件包含A(),A()則將保留,但B()將被刪除(只要它也不被Dotfuscator知道的任何其餘方法調用)。

去除種類有兩種選擇:

  1. 刪除未使用的元數據和代碼:當您但願Dotfuscator主動搜索並刪除未使用的類型和方法時使用。
  2. 僅刪除文字(const定義):這用於加強字符串加密的功能,以便刪除未加密的字符串。若是啓用了字符串加密,則應在選中此選項的狀況下打開刪除。

水印

經過將版權信息或惟一標識號等數據嵌入到.NET應用程序中,水印有助於將未經受權的軟件副本追溯到源,而不會影響其運行時行爲。Dotfuscator的水印算法不會增長應用程序的大小,也不會引入可能破壞應用程序的額外元數據。

相關文章
相關標籤/搜索