Dotfuscator是一个.NET的Obfuscator。它提供企业级的应用程序保护,大大下降了盗版、知识产权盗窃和篡改的风险。Dotfuscator的分层混淆、加密、水印、自动失效、防调试、防篡改、报警和防护技术,为世界各地成千上万的应用程序提供保护。算法
Dotfuscator(点击下载)提供了一种应用程序保护的多层方法。这些层中的每一层都提供了一个重要的总体保护策略。若是一层受到损害,其余层继续提供有效保护,使攻击者更难以实现其目标。而且不只有多个层,并且每一个层都具备比其余混淆产品使用的简单技术更强大的高级功能。加密
从本文开始咱们一块儿了解Dotfuscator如何对应用程序进行多层保护,层层递进,大体可分为:spa
较小的应用程序下载速度更快,安装更快,加载更快,运行速度更快。Dotfuscator的删除功能(有时称为“修剪”)静态分析您的代码以查找未使用的类型,方法和字段,并将其删除。Dotfuscator还会在处理MSIL文件时从MSIL文件中删除非必要元数据,从而缩小应用程序并减小攻击者可用的数据。调试
注意:一样也能够经过将Emit Debugging Symbols设置为Never来让Dotfuscator删除调试信息。资源
静态分析经过遍历代码开始工做,从一组称为触发器或入口点的方法开始。一般,您但愿外部应用程序调用的任何方法都必须定义为触发器。例如,在简单的独立应用程序中,该Main方法将被定义为触发器。程序集能够为其定义多个触发器。字符串
注意:打开装配的库模式会致使Dotfuscator自动将全部可见类型和成员视为入口点。部署
当Dotfuscator遍历每一个触发器方法的代码时,它会记录正在使用的字段,方法和类型。而后它以相似的方式分析全部被调用的方法。该过程继续进行,直到分析了全部被调用的方法。完成后,Dotfuscator可以肯定应用程序运行所需的最小类型及其成员。输出程序集中仅包含这些类型。get
Dotfuscator以XML格式生成删除报告,其中列出了全部输入程序集以及每一个程序集的修剪方式。每一个程序集都有一个类型及其成员列表(方法,字段,属性等)以及指示项目是否已删除的属性。该报告还描述了如何修剪附加到每一个程序集的托管资源。产品
存在两种类型的夹杂物,二者均可以经过特定夹杂物和自定义规则来控制。it
去除种类有两种选择:
经过将版权信息或惟一标识号等数据嵌入到.NET应用程序中,水印有助于将未经受权的软件副本追溯到源,而不会影响其运行时行为。Dotfuscator的水印算法不会增长应用程序的大小,也不会引入可能破坏应用程序的额外元数据。