对于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中属性的特性问题

Eazfuscator.NET 3.3中枚举的处理

Eazfuscator.NET 3.3:对WPF ViewModel类型定义的处理

最后更多详细的信息,建议参考Eazfuscator.NET的帮助文档,讲的很详细的!

【转】Eazfuscator.NET 3.3中混淆化需要注意的一些问题的更多相关文章

  1. [转]''\\=DevExpress 中 汉化包 汉化方法

    [DevExpress]DevExpress 中 汉化包 汉化方法 2016-02-17 21:13 1781人阅读 评论(0) 收藏 举报  分类: DevExpress(24)  版权声明:本文为 ...

  2. C++ 中超类化和子类化常用API

    在windows平台上,使用C++实现子类化和超类化常用的API并不多,由于这些API函数的详解和使用方法,网上一大把.本文仅作为笔记,简单的记录一下. 子类化:SetWindowLong,GetWi ...

  3. javascript中数组化的一般见解

    javascript中数组化的一般见解,数组化浏览器中存在许多类数组对象,往往对类数组操作比较麻烦,没有数组那些非常方便的方法,在这种情况下,就有了数组化方法. 数组化的一般方法 1.第一种也是我们最 ...

  4. MSCRM 2011中过滤化查询的实现方法和禁用选择视图

    MS CRM 2011中过滤化查询的实现方法 使用过滤化查询,可以实现根据表单上的其他信息作为搜索条件,限制Lookup查找框中的搜索结果数量的目的. 在讲解具体的实现方法之前,先设定一个应用场景: ...

  5. Vue中组件化编码使用(实战练习一)

    Vue中组件化编码的大致流程(初接触).组件之间的参数传递(最基础的形式).组件之间的配合完成一个需求 1.在Vue中进行组件化编码 1.1.组件化编码流程: (1).拆分静态组件:组件要按照功能点拆 ...

  6. C++ 中超类化和子类化

    超类化和子类化没有具体的代码,其实是一种编程技巧,在MFC和WTL中可以有不同的实现方法. 窗口子类化: 原理就是改变一个已创建窗口类的窗口过程函数.通过截获已创建窗口的消息,从而实现监视或修改已创建 ...

  7. 详解Google-ProtoBuf中结构化数据的编码

    本文的主要内容是google protobuf中序列化数据时用到的编码规则,但是,介绍具体的编码规则之前,我觉得有必要先简单介绍一下google protobuf.因此,本文首先会介绍一些google ...

  8. Quartus中例化工程

    一般的例化工程,需要将要例化的对象的硬件语言放入到当前工程中,比如A要例化B,需要将B的编程文件加入当前工程进来. 还有一种方法不用这么麻烦,A工程用要例化B时,在library添加B的工程路径,就可 ...

  9. centos 虚拟机中最小化安装,无法上网的解决方法

    无法上网原因:因为最小化安装以后,centos 默认未开启网卡 解决方法进入 /etc/sysconfig/network-scripts/ifcfg-enp0s3 文件中 进入编辑模式,将 ONBO ...

随机推荐

  1. HDU 4441 Queue Sequence

    http://acm.hdu.edu.cn/showproblem.php?pid=4441 题意:对于一个序列,每次有三种操作   insert pos  表示在pos插入一个数,这个数是最小的正数 ...

  2. 隐藏自定义的tabbar之后,push到B视图,B视图的键盘工具条无法响应点击事件

    我的情况如下: 在TabbarViewController中隐藏了系统的tabbar,然后自定义tabbar,A B C D 4个视图都有UINavigationController,A视图 使用的是 ...

  3. Xcode6编译SDWebImage报错解决方法(SDWebImageDownloaderOperation.m错误)

    报错:Use of undeclared identifier '_executing' / '_finished': 解决方法: 在SDWebImageDownloaderOperation类的实现 ...

  4. Oracle学习笔记1:win7 x64下安装Oracle10g

    oracle 10g在win7x64下的安装: 第一次直接双击setup,出错了…… 可能是兼容性的问题,所以试着 右击setup-->属性-->兼容性-->勾上"以兼容模 ...

  5. iOS UIView简单缩放动画

    @interface ViewController () { UIView *animationView; UIButton *button; CGPoint animationPoint; } @e ...

  6. Python Opearte SQLAlchemy Do Something

    近段时间在看SQLAlchemy,总之万事开头难,但是么办法. Database Urls The create_engine() function produces an Engine object ...

  7. mysql一对多关联查询的时候筛选条件

    mysql实现users 表和 logoin_log表是一对多, 现在是把user的信息找出来 关联上一些 logoin_log表的数据, 因为a表是多的一方,要多他的数据进行一些条件匹配,这个sql ...

  8. ASP.NET发布WebService

    1. 创建一个空的Web应用程序 2. 再添加一个Web服务 3. 在所创建Web服务内,编写一算法 4. 写完可直接运行查看结果 5. 项目->右键,发布此WebService 6.  发布至 ...

  9. Swift字典

    字典初始化 基本语法: [key 1: value 1, key 2: value 2, key 3: value 3] var   airports:    Dictionary<String ...

  10. webSphere提示SSL证书过期,解决方法

    1.点击Security ------SSL certificate and key management2.点击Related Items下的key stores and certificates3 ...