【转】Eazfuscator.NET 3.3中混淆化需要注意的一些问题
对于DLL,Eazfuscator.NET默认不会混淆化任何公共成员,因为类库的公共成员很有可能被外界调用,而对于EXE的程序集,所有类型都可能被混淆化。注意上面这句话有一个“可能”,因为Eazfuscator.NET会智能得判定一个成员是否该被混淆化。比如某些可序列化类型的名称是不被混淆化的,还有WPF程序用到的数据绑定可能会影响某些类型属性名称的混淆化。
当然Eazfuscator.NET会读取.NET中已经定义的一些特性来供开发者自定义一些选项,比如上述的公共成员的混淆化可以通过System.Reflection命名空间中的ObfuscateAssemblyAttribute特性来设置,这个特性在.NET 2.0就有了。构造函数有一个参数:assemblyIsPrivate,为True的话所有成员都(可能)会被混淆化。为False的话公共成员不会被混淆化。
所以如果不想让Eazfuscator.NET混淆化EXE程序集中的公共成员,那么需加入下方代码:
using System.Reflection; [assembly: ObfuscateAssemblyAttribute(false)]
其次,即便是程序集的公共成员会被混淆化,还可以对部分类型进行更细致的混淆化设置。使用System.Reflection命名空间中的ObfuscationAttribute特性。
比如禁止对所有公共枚举值类型和其成员进行混淆化:
using System.Reflection; [assembly: Obfuscation(Feature ="Apply to type * when public and enum: renaming", Exclude =true, ApplyToMembers =true)]
甚至还可以针对某一个类型,比如不对程序集当中的Mgen.MyClass类型进行任何混淆化:
using System.Reflection; [assembly: Obfuscation(Feature ="Apply to type Mgen.MyClass: renaming", Exclude =true, ApplyToMembers =true)]
在实际运用中还有一些需要说明的,尤其是WPF/Silverlight/WinRT这种用到XAML数据绑定或其他依靠反射来定义属性值的方式(如Markup Extension)。此时则需要注意RESX资源类型不应该被混淆化,Visual Studio中创建的RESX资源类型默认都是internal修饰符的,这样Eazfuscator.NET会混淆化RESX资源类型生成的属性名称。你可以声明[assembly: ObfuscateAssemblyAttribute(false)],然后把RESX的修饰符改成Public:
或者使用Obfuscation特性来排除RESX类型的混淆化,当然第一种方法最方便。
另外有些环境可以没有ObfuscateAssemblyAttribute和ObfuscationAttribute类型的定义,那么可以复制Eazfuscator.NET安装目录下的Code Snippets文件夹内相应类型的定义(提供C#和VB.NET版本)。当然用户也完全可以自己定义,只要名称和.NET中的一致便可以。
另外还曾写过一些关于Easfuscator.NET的文章,可以参考:
Eazfuscator.NET 3.3:对WPF ViewModel类型定义的处理
最后更多详细的信息,建议参考Eazfuscator.NET的帮助文档,讲的很详细的!
相关文章
- ASP.NET_氚云开发
- .NET生成MongoDB中的主键ObjectId
- .NET Winform中图像与Base64格式互转
- Win10下安装Sql Server 2014反复提示需安装.NET Framework 3.5 SP1的解决方案
- .NET Core 2.1改进了性能,并提供了新的部署选项详解编程语言
- MySQL与VB.NET的数据库开发实践(mysqlvb.net)
- .net下的数据库连接SQLServer驱动在.NET平台下的数据库连接简明介绍(sqlserver驱动在)
- Oracle NET突破技术界限,精彩开启新纪元(oracle net??)
- asp.net的web服务MSSQL检测ASP.NET的Web服务——利用它构建更棒的站点(mssql检测基于)
- Net访问Oracle数据库的简易方法(.net访问oracle)
- NET 与 Oracle技术结合开启数据库新篇章(.net事物oracle)
- 数据库NET开发者操作Oracle数据库的全攻略(net操作oracle)
- 数据使用NET改变Oracle数据库的奥秘(net修改oracle)
- CMySQL与NET技术融会贯通(c mysql .net)
- 快速搭建 NET 项目,用 MySQL 配置环境(.net 配置mysql)
- NET操作MySQL数据库快速入门(.net读写mysql)
- Net框架如何使用MySQL数据库(.net能用mysql吗)
- Net环境下MySQL数据库驱动的研究与应用(.net的mysql驱动)
- Net结合MySQL实现强劲的数据库运算(.net 用mysql)
- Net和MySQL互相受益的强大组合(.net 与mysql)
- NET与MySQL实现无缝连接(.net mysql连接)
- NET 与 MySQL 结合能实现优雅的数据事务处理(.net MySQL事物)
- REDIS锁技术提升NET应用性能(redis 锁 .net)
- Redis无法安装NET组件(redis装不上net)
- asp.net大文件上传控件
- .Net中导出数据到Excel(asp.net和winform程序中)
- asp.net连接查询SQL数据库并把结果显示在网页上(2种方法)
- asp.net初始化文本框的小例子
- asp.net生成随机密码的具体代码
- 使用.Net实现多线程经验总结