混淆-SmartAssembly

SmartAssembly 7 documentation: https://documentation.red-gate.com/sa

混淆設置

如下是主要的幾個混淆設置:html

混淆名稱 Obfuscating code with name manglingapp

設置後會修改類名、方法名、字段名
注:不會混淆DLL中的公開訪問成員,由於會使得DLL不可以使用

混淆流程 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.如程序中有對類名/屬性名進行相應的邏輯處理,或者有相關的反射機制,混淆後程序運行會異常。

混淆 - dotfuscator

混淆VS2008以前也有自帶一個dotfuscator工具,vs2019等版本是沒有的,可使用官方連接下載

https://www.preemptive.com/products/dotfuscator/overview/

安裝及使用參考:

 

參考連接:

相關文章
相關標籤/搜索