对于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. 【Java/Android性能优2】Android性能调优工具TraceView介绍

    本文参考:http://www.trinea.cn/android/android-traceview/ Android自带的TraceView堪比java的性能调优工具visualvm线程视图,可以 ...

  2. 【三板斧】Java定位CPU使用高问题

    [三板斧]Java定位CPU使用高问题 1.TOP命令,查询消耗CPU高的进程号 PID,并记录下来,按下键盘"H"键,记录高消耗线程号,并将改线程号转换为十六进制 2.使用 js ...

  3. 单例模式——Singleton

    模式分类: 从目的来看: 1.创建型(Creational)模式:负责对象创建. 2.结构型(Structural)模式:处理类于对象间的组合. 3.行为型(Behavioral)模式:类与对象交互中 ...

  4. java的线程中的Runnable

                      在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Thread类是在java.lang包中定义的.一个类只要继承了Thr ...

  5. 51nod 约数和(数论)

    题目链接: 约数和 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 有三个下标从1到n的数组a.b.c. a数组初始全为0. b[i]=∑j|ia[j] c[i]=∑j|ib[j] ...

  6. 转: ImageMagick 命令行的图片处理工具(客户端与服务器均可用)

    http://www.imagemagick.com.cn/ 关于ImageMagick ImageMagick (TM) 是一个免费的创建.编辑.合成图片的软件.它可以读取.转换.写入多种格式的图片 ...

  7. JavaWeb 学习的第一阶段总结

    本人从事Asp.net开发三年,结合市场情况,综合考虑后决心转向JavaWeb方向.于是开始了自学Java的历程. 首先,我用马士兵的Java基础教学视频,快速地学习了一遍Java基础.因为有C#基础 ...

  8. [wordpress] determine_current_user 在get_current_user_id() 或者 wp_get_current_user()会调用

    在看了Cookie Authentication In A AngularJS WordPress Theme之后,清楚了当Wordpress在中使用get_current_user_id() 或者w ...

  9. Ubuntu 15.04 配置VPN的方法详解

    源 起 不久前因为要更新AndroidSDK 和查找相关资料, 但有些方式不能墙了, 所以为了节约时间成本, 购买了为期一个月的VPN,  对方发来邮件, 提供了二十几个服务器地址, 以及一套自动生成 ...

  10. android自定义UI模板图文详解

    不知道大家在实际开发中有没有自定义过UI模板?今天花时间研究了一下android中自定义UI模板,与大家分享一下. 每个设计良好的App都是自定义标题栏,在自定义标题栏的过程中大部分人可能都是自定义一 ...