如下是主要的几个混淆设置: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/
安装及使用参考:
参考连接: