如下是主要的幾個混淆設置:html
混淆名稱 Obfuscating code with name manglingapp
混淆流程 Obfuscating your application's control flow工具
開啓後,會更改方法內的代碼邏輯,使反編譯後閱讀更加困難post
動態代理方法調用 Creating a proxy for external calls性能
會將方法的調用轉到動態代理,隱藏程序集外部調用。反編譯以後,方法調用實現都不可見,理解代碼更難了加密
壓縮加密資源 Compressing and encrypting managed resourcesurl
壓縮代碼中使用的資源使代碼更有效率,加密代碼中使用的資源使代碼更難理解。.net
注:當首先須要每一個資源時,資源會在運行時自動解壓和解密。ssr
通常來講,有混淆名稱、混淆流程就已經夠了。動態代理方法調用、壓縮加密資源有輕微的性能影響,代理
反編譯能夠用Dnspy或者.Net Reflector
.NET Reflector 下載
.NET Reflector 官方文檔
1. 若是使用了Costura.Fody,SmartAssembly是不支持exe混淆的。由於Costura.Fody將程序打包到一個exe,SmartAssembly對相關的依賴項沒法找到~
好比下方的JiraUserQuestion.Bussiness.Dll
2.如程序中有對類名/屬性名進行相應的邏輯處理,或者有相關的反射機制,混淆後程序運行會異常。
混淆VS2008以前也有自帶一個dotfuscator工具,vs2019等版本是沒有的,可使用官方連接下載
https://www.preemptive.com/products/dotfuscator/overview/
安裝及使用參考:
參考連接: