1.名字碾压
更改方法和字段的名称,使其难以理解其用途。
2.控制流混淆
将方法内部的代码转换为“意大利面条代码”,使查看应用程序如何工作变得困难。
3.引用动态代理
为对程序集外部方法的调用创建代理,使外部调用难以查找。
4.字符串编码
编码软件中用于隐藏密码和SQL查询等信息的字符串。
5.资源压缩和加密
压缩和加密托管资源,使其难以理解,并减小程序集的大小。
6.修剪
删除无用的元数据,使代码更难进行反向工程,减少程序集的大小,并提高加载时间。
7.依赖项合并
获取所有DLL并将依赖项合并到主程序集中,这样就不必加载大量dll文件,而且还可以混淆它们。
8.依赖项压缩和嵌入
将依赖项压缩并嵌入主程序集中,从而简化了软件的部署并减小了程序的大小。
9.方法家长困惑
通过更改方法所在的类来移动代码中的方法,从而使方法和类之间的关系更难理解。
10.强名称签名与篡改保护
为程序集签名,并帮助保护程序集免受修改(标准版本中没有提供额外的篡改保护)。
11.声明性困惑
在代码中直接使用自定义属性将成员排除在混淆之外。