Dotfuscator是一個.NET的Obfuscator。它提供企業級的應用程序保護,大大下降了盜版、知識產權盜竊和篡改的風險。Dotfuscator的分層混淆、加密、水印、自動失效、防調試、防篡改、報警和防護技術,爲世界各地成千上萬的應用程序提供保護。算法
Dotfuscator(點擊下載)提供了一種應用程序保護的多層方法。這些層中的每一層都提供了一個重要的總體保護策略。若是一層受到損害,其餘層繼續提供有效保護,使攻擊者更難以實現其目標。而且不只有多個層,並且每一個層都具備比其餘混淆產品使用的簡單技術更強大的高級功能。加密
從本文開始咱們一塊兒瞭解Dotfuscator如何對應用程序進行多層保護,層層遞進,大體可分爲:spa
較小的應用程序下載速度更快,安裝更快,加載更快,運行速度更快。Dotfuscator的刪除功能(有時稱爲「修剪」)靜態分析您的代碼以查找未使用的類型,方法和字段,並將其刪除。Dotfuscator還會在處理MSIL文件時從MSIL文件中刪除非必要元數據,從而縮小應用程序並減小攻擊者可用的數據。調試
注意:一樣也能夠經過將Emit Debugging Symbols設置爲Never來讓Dotfuscator刪除調試信息。資源
靜態分析經過遍歷代碼開始工做,從一組稱爲觸發器或入口點的方法開始。一般,您但願外部應用程序調用的任何方法都必須定義爲觸發器。例如,在簡單的獨立應用程序中,該Main方法將被定義爲觸發器。程序集能夠爲其定義多個觸發器。字符串
注意:打開裝配的庫模式會致使Dotfuscator自動將全部可見類型和成員視爲入口點。部署
當Dotfuscator遍歷每一個觸發器方法的代碼時,它會記錄正在使用的字段,方法和類型。而後它以相似的方式分析全部被調用的方法。該過程繼續進行,直到分析了全部被調用的方法。完成後,Dotfuscator可以肯定應用程序運行所需的最小類型及其成員。輸出程序集中僅包含這些類型。get
Dotfuscator以XML格式生成刪除報告,其中列出了全部輸入程序集以及每一個程序集的修剪方式。每一個程序集都有一個類型及其成員列表(方法,字段,屬性等)以及指示項目是否已刪除的屬性。該報告還描述瞭如何修剪附加到每一個程序集的託管資源。產品
存在兩種類型的夾雜物,二者均可以經過特定夾雜物和自定義規則來控制。it
去除種類有兩種選擇:
經過將版權信息或惟一標識號等數據嵌入到.NET應用程序中,水印有助於將未經受權的軟件副本追溯到源,而不會影響其運行時行爲。Dotfuscator的水印算法不會增長應用程序的大小,也不會引入可能破壞應用程序的額外元數據。