【转】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的帮助文档,讲的很详细的!
【转】Eazfuscator.NET 3.3中混淆化需要注意的一些问题的更多相关文章
- [转]''\\=DevExpress 中 汉化包 汉化方法
[DevExpress]DevExpress 中 汉化包 汉化方法 2016-02-17 21:13 1781人阅读 评论(0) 收藏 举报 分类: DevExpress(24) 版权声明:本文为 ...
- C++ 中超类化和子类化常用API
在windows平台上,使用C++实现子类化和超类化常用的API并不多,由于这些API函数的详解和使用方法,网上一大把.本文仅作为笔记,简单的记录一下. 子类化:SetWindowLong,GetWi ...
- javascript中数组化的一般见解
javascript中数组化的一般见解,数组化浏览器中存在许多类数组对象,往往对类数组操作比较麻烦,没有数组那些非常方便的方法,在这种情况下,就有了数组化方法. 数组化的一般方法 1.第一种也是我们最 ...
- MSCRM 2011中过滤化查询的实现方法和禁用选择视图
MS CRM 2011中过滤化查询的实现方法 使用过滤化查询,可以实现根据表单上的其他信息作为搜索条件,限制Lookup查找框中的搜索结果数量的目的. 在讲解具体的实现方法之前,先设定一个应用场景: ...
- Vue中组件化编码使用(实战练习一)
Vue中组件化编码的大致流程(初接触).组件之间的参数传递(最基础的形式).组件之间的配合完成一个需求 1.在Vue中进行组件化编码 1.1.组件化编码流程: (1).拆分静态组件:组件要按照功能点拆 ...
- C++ 中超类化和子类化
超类化和子类化没有具体的代码,其实是一种编程技巧,在MFC和WTL中可以有不同的实现方法. 窗口子类化: 原理就是改变一个已创建窗口类的窗口过程函数.通过截获已创建窗口的消息,从而实现监视或修改已创建 ...
- 详解Google-ProtoBuf中结构化数据的编码
本文的主要内容是google protobuf中序列化数据时用到的编码规则,但是,介绍具体的编码规则之前,我觉得有必要先简单介绍一下google protobuf.因此,本文首先会介绍一些google ...
- Quartus中例化工程
一般的例化工程,需要将要例化的对象的硬件语言放入到当前工程中,比如A要例化B,需要将B的编程文件加入当前工程进来. 还有一种方法不用这么麻烦,A工程用要例化B时,在library添加B的工程路径,就可 ...
- centos 虚拟机中最小化安装,无法上网的解决方法
无法上网原因:因为最小化安装以后,centos 默认未开启网卡 解决方法进入 /etc/sysconfig/network-scripts/ifcfg-enp0s3 文件中 进入编辑模式,将 ONBO ...
随机推荐
- 补充:tableView优化总结
tableView优化方式总结 (说明:一下只是我自己的小总结,会有不足,望大神指正,多谢大家了) 1 缓存 cell 的行高.目的方便第二遍访问 cell. 2 减少图片的blend 操作.包括:设 ...
- java执行程序
执行jar java -jar x.jar 执行jar里边指定class java -cp x.jar x.x.x
- webapp新体验Rem实现移动端网页适配详解资源
本来想写一篇,webapp使用Rem的问题,查了一下相关rem的介绍之后,发现很多平台已经解释的很清楚了,图文并茂,于是我便想将其解释资源整理一些,方便以后自己查阅. 腾讯ISUX:web app变革 ...
- hdu 4719 动态规划
思路:dp[i]表示到第i个点为结尾能获得的最大值,那么dp[i]=h[i]*h[i]+dp[i-x]-h[i-x];(i-l<=x<=i);那么我们可以转换下,以dp[i]-h[i]为新 ...
- Part 82 to 85 Talking about Generic queue, stack collection class
Part 82 Generic queue collection class Part 83 Generic stack collection class Part 84 Real tim ...
- CSS里的引用@import、link
引入CSS的方法有两种,一种是@import,一种是link @import url('地址');<link href="地址" rel="stylesheet&q ...
- 实例介绍Cocos2d-x开关菜单
开关菜单是MenuItemToggle类实现的,它是一种可以进行两种状态切换的菜单.它可以通过下面的函数创建: static MenuItemToggle*createWithCallback ( ...
- iOS中—触摸事件详解及使用
iOS中--触摸事件详解及使用 (一)初识 要想学好触摸事件,这第一部分的基础理论是必须要学会的,希望大家可以耐心看完. 1.基本概念: 触摸事件 是iOS事件中的一种事件类型,在iOS中按照事件划分 ...
- UI3_UIView自动布局
// // ViewController.m // UI3_UIView自动布局 // // Created by zhangxueming on 15/7/1. // Copyright (c) 2 ...
- js中字符和数组一些基本算法题
最近在刷 fcc的题,跟升级打怪一样,一关一关的过,还挺吸引我的.今天抽时间把 Basic Algorithm Scritping 这部分题做了,根据一些提示,还是比较简单的.有些题的处理方式 方法 ...