.NET混淆器Dotfuscator怎样利用切除和水印保护应用程序?

Dotfuscator是一个.NET的Obfuscator。它提供企业级的应用程序保护,大大下降了盗版、知识产权盗窃和篡改的风险。Dotfuscator的分层混淆、加密、水印、自动失效、防调试、防篡改、报警和防护技术,为世界各地成千上万的应用程序提供保护。算法

Dotfuscator(点击下载)提供了一种应用程序保护的多层方法。这些层中的每一层都提供了一个重要的总体保护策略。若是一层受到损害,其余层继续提供有效保护,使攻击者更难以实现其目标。而且不只有多个层,并且每一个层都具备比其余混淆产品使用的简单技术更强大的高级功能。加密

从本文开始咱们一块儿了解Dotfuscator如何对应用程序进行多层保护,层层递进,大体可分为:spa

  • 第一层保护——Obfuscation转换:它对编译的代码进行操做,使逆向工程变得困难或不可能。
  • 第二层保护——保护程序运行时发生的检查:当程序检测到攻击者试图篡改或反向工程时,它可使用自定义逻辑进行自我防护。
  • 其他增强保护——包括切除和水印。
  • Dotfuscator提供某些功能帮您构建、部署和调试混淆的程序集

 


第三层保护:额外的保护

切除

较小的应用程序下载速度更快,安装更快,加载更快,运行速度更快。Dotfuscator的删除功能(有时称为“修剪”)静态分析您的代码以查找未使用的类型,方法和字段,并将其删除。Dotfuscator还会在处理MSIL文件时从MSIL文件中删除非必要元数据,从而缩小应用程序并减小攻击者可用的数据。调试

注意:一样也能够经过将Emit Debugging Symbols设置为Never来让Dotfuscator删除调试信息。资源

静态分析经过遍历代码开始工做,从一组称为触发器或入口点的方法开始。一般,您但愿外部应用程序调用的任何方法都必须定义为触发器。例如,在简单的独立应用程序中,该Main方法将被定义为触发器。程序集能够为其定义多个触发器。字符串

注意:打开装配的库模式会致使Dotfuscator自动将全部可见类型和成员视为入口点。部署

当Dotfuscator遍历每一个触发器方法的代码时,它会记录正在使用的字段,方法和类型。而后它以相似的方式分析全部被调用的方法。该过程继续进行,直到分析了全部被调用的方法。完成后,Dotfuscator可以肯定应用程序运行所需的最小类型及其成员。输出程序集中仅包含这些类型。get

Dotfuscator以XML格式生成删除报告,其中列出了全部输入程序集以及每一个程序集的修剪方式。每一个程序集都有一个类型及其成员列表(方法,字段,属性等)以及指示项目是否已删除的属性。该报告还描述了如何修剪附加到每一个程序集的托管资源。产品

存在两种类型的夹杂物,二者均可以经过特定夹杂物和自定义规则来控制。it

  • 包含触发器:若是您选择一个方法做为包含触发器,Dotfuscator将确保保持该方法,以及调用图Dotfuscator中看到的该方法的任何后代(再次跳过像反射这样的东西)。若是包含触发设置在方法A(),那么这两个A()和B()将被保留。
  • 条件包含:保留任何设置为条件包含的方法,但不会遍历其调用树以保留其余方法。若是在方法上设置了条件包含A(),A()则将保留,但B()将被删除(只要它也不被Dotfuscator知道的任何其余方法调用)。

去除种类有两种选择:

  1. 删除未使用的元数据和代码:当您但愿Dotfuscator主动搜索并删除未使用的类型和方法时使用。
  2. 仅删除文字(const定义):这用于加强字符串加密的功能,以便删除未加密的字符串。若是启用了字符串加密,则应在选中此选项的状况下打开删除。

水印

经过将版权信息或惟一标识号等数据嵌入到.NET应用程序中,水印有助于将未经受权的软件副本追溯到源,而不会影响其运行时行为。Dotfuscator的水印算法不会增长应用程序的大小,也不会引入可能破坏应用程序的额外元数据。

相关文章
相关标签/搜索