.NET混淆器Dotfuscator怎样利用切除和水印保护应用程序?
作者:互联网
Dotfuscator是一个.NET的Obfuscator。它提供企业级的应用程序保护,大大降低了盗版、知识产权盗窃和篡改的风险。Dotfuscator的分层混淆、加密、水印、自动失效、防调试、防篡改、报警和防御技术,为世界各地成千上万的应用程序提供保护。
Dotfuscator(点击下载)提供了一种应用程序保护的多层方法。这些层中的每一层都提供了一个重要的整体保护策略。如果一层受到损害,其他层继续提供有效保护,使攻击者更难以实现其目标。并且不仅有多个层,而且每个层都具有比其他混淆产品使用的简单技术更强大的高级功能。
从本文开始我们一起了解Dotfuscator如何对应用程序进行多层保护,层层递进,大致可分为:
- 第一层保护——Obfuscation转换:它对编译的代码进行操作,使逆向工程变得困难或不可能。
- 第二层保护——保护程序运行时发生的检查:当程序检测到攻击者试图篡改或反向工程时,它可以使用自定义逻辑进行自我防御。
- 其余加强保护——包括切除和水印。
- Dotfuscator提供某些功能帮您构建、部署和调试混淆的程序集。
第三层保护:额外的保护
切除
较小的应用程序下载速度更快,安装更快,加载更快,运行速度更快。Dotfuscator的删除功能(有时称为“修剪”)静态分析您的代码以查找未使用的类型,方法和字段,并将其删除。Dotfuscator还会在处理MSIL文件时从MSIL文件中删除非必要元数据,从而缩小应用程序并减少攻击者可用的数据。
注意:同样也可以通过将Emit Debugging Symbols设置为Never来让Dotfuscator删除调试信息。
静态分析通过遍历代码开始工作,从一组称为触发器或入口点的方法开始。通常,您希望外部应用程序调用的任何方法都必须定义为触发器。例如,在简单的独立应用程序中,该Main方法将被定义为触发器。程序集可以为其定义多个触发器。
注意:打开装配的库模式会导致Dotfuscator自动将所有可见类型和成员视为入口点。
当Dotfuscator遍历每个触发器方法的代码时,它会记录正在使用的字段,方法和类型。然后它以类似的方式分析所有被调用的方法。该过程继续进行,直到分析了所有被调用的方法。完成后,Dotfuscator能够确定应用程序运行所需的最小类型及其成员。输出程序集中仅包含这些类型。
Dotfuscator以XML格式生成删除报告,其中列出了所有输入程序集以及每个程序集的修剪方式。每个程序集都有一个类型及其成员列表(方法,字段,属性等)以及指示项目是否已删除的属性。该报告还描述了如何修剪附加到每个程序集的托管资源。
存在两种类型的夹杂物,两者都可以通过特定夹杂物和自定义规则来控制。
- 包含触发器:如果您选择一个方法作为包含触发器,Dotfuscator将确保保持该方法,以及调用图Dotfuscator中看到的该方法的任何后代(再次跳过像反射这样的东西)。如果包含触发设置在方法A(),那么这两个A()和B()将被保留。
- 条件包含:保留任何设置为条件包含的方法,但不会遍历其调用树以保留其他方法。如果在方法上设置了条件包含A(),A()则将保留,但B()将被删除(只要它也不被Dotfuscator知道的任何其他方法调用)。
去除种类有两种选择:
- 删除未使用的元数据和代码:当您希望Dotfuscator主动搜索并删除未使用的类型和方法时使用。
- 仅删除文字(const定义):这用于增强字符串加密的功能,以便删除未加密的字符串。如果启用了字符串加密,则应在选中此选项的情况下打开删除。
水印
通过将版权信息或唯一标识号等数据嵌入到.NET应用程序中,水印有助于将未经授权的软件副本追溯到源,而不会影响其运行时行为。Dotfuscator的水印算法不会增加应用程序的大小,也不会引入可能破坏应用程序的额外元数据。
标签:触发器,删除,Dotfuscator,应用程序,保护,水印,NET,方法 来源: https://blog.csdn.net/mnrssj/article/details/100559651