Dotfuscator是一個.NET的Obfuscator。它提供企業級的應用程序保護,大大下降了盜版、知識產權盜竊和篡改的風險。Dotfuscator的分層混淆、加密、水印、自動失效、防調試、防篡改、報警和防護技術,爲世界各地成千上萬的應用程序提供保護。算法
Dotfuscator提供了一種應用程序保護的多層方法。這些層中的每一層都提供了一個重要的總體保護策略。若是一層受到損害,其餘層繼續提供有效保護,使攻擊者更難以實現其目標。而且不只有多個層,並且每一個層都具備比其餘混淆產品使用的簡單技術更強大的高級功能。性能
從本文開始咱們一塊兒瞭解Dotfuscator如何對應用程序進行多層保護,層層遞進,大體可分爲:測試
Dotfuscator的工做原理是修改反編譯器用來從新建立源代碼的代碼模式。Dotfuscator引入了錯誤的條件語句和其餘具備誤導性的構造,以混淆和破壞反編譯器。這個過程綜合了分支、條件和迭代構造,這些構造產生有效的正向(可執行)邏輯,可是在嘗試反編譯時產生不肯定的語義結果。設計
除了添加代碼構造以外,Dotfuscator還破壞反編譯器用於從新建立源代碼的代碼模式。最終獲得的代碼在語義上與原始代碼等價,但不包含關於代碼最初是如何編寫的線索。該特性的目標是防止MSIL自動反編譯回高級源代碼。最終用戶仍然能夠查看MSIL自己,但要徹底理解它並對其功能進行較大的更改就比較困難了。調試
例如:cdn
以前blog |
以後教程 |
![]() |
![]() |
▲限制遊戲
在控制流混淆以後測試應用程序性能是很重要的,特別是任何執行了不少次的代碼(例如遊戲循環或計算/算法密集型方法)。
控制流混淆只有在方法包含足夠多的基本塊時纔能有效地擊敗反編譯器。
▲排除
控制流排除與重命名排除以相同的方式工做,包括特定的排除和自定義規則。然而,控制流除外僅適用於方法。若是用戶在測試過程當中發現性能降低,那麼應該將排除應用到執行計算密集型工做的任何方法或類(基本上是CPU是性能限制因素的任何狀況)。
▲選項
High是惟一設計用來擊敗自動反編譯器的關卡。若是高致使性能降低而不能經過排除來解決,則可使用中值或低值,若是控制流被認爲是致使運行時錯誤的緣由,則可使用中值或低值進行調試。
若是你有任何問題或意見,可在下方評論區留言,點擊資源列表查看更多教程資源~