【转】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中的一致便可以。

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

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为一种保护.NET程序代码的方式,代码混淆在实际开发得到了广泛应用。代码混淆可以使代码变得晦涩难懂,增加反编译的难度,使得黑客无法轻易地获取源代码,从而增强代码的安全性,但是也会增加代码的复杂度和维护难度。 以下是.NET代码混淆实践的一些技巧: 1. 使用命名混淆器:命名混淆器可以将代码的变量、方法、类等名称进行混淆,使得代码难以阅读和理解。常用的命名混淆器有DotfuscatorEazfuscator、SmartAssembly等。 2. 使用控制流混淆器:控制流混淆器可以通过改变代码的控制流程,使得代码难以被理解和分析。常用的控制流混淆器有Crypto Obfuscator、Dotfuscator、SmartAssembly等。 3. 使用加密算法:加密算法可以对代码进行加密,使得黑客无法轻易地获取源代码。常用的加密算法有AES、DES、RSA等。 4. 使用反调试技术:反调试技术可以防止黑客使用调试器来分析代码。常用的反调试技术有检测调试器、阻止调试器附加等。 5. 使用反反编译技术:反反编译技术可以防止黑客使用反编译工具来获取代码。常用的反反编译技术有加壳、加密等。 总之,代码混淆虽然可以增强代码的安全性,但也会增加代码的复杂度和维护难度。在使用代码混淆时,需要在安全性和可维护性之间做出权衡,选择合适的混淆技术和工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值