Dotfuscator是一个.NET的Obfuscator。它提供企业级的应用程序保护,大大降低了盗版、知识产权盗窃和篡改的风险。Dotfuscator的分层混淆、加密、水印、自动失效、防调试、防篡改、报警和防御技术,为世界各地成千上万的应用程序提供保护。
Dotfuscator提供了一种应用程序保护的多层方法。这些层中的每一层都提供了一个重要的整体保护策略。如果一层受到损害,其他层继续提供有效保护,使攻击者更难以实现其目标。并且不仅有多个层,而且每个层都具有比其他混淆产品使用的简单技术更强大的高级功能。
从本文开始我们一起了解Dotfuscator如何对应用程序进行多层保护,层层递进,大致可分为:
- 第一层保护——Obfuscation转换:它对编译的代码进行操作,使逆向工程变得困难或不可能。
- 第二层保护——保护程序运行时发生的检查:当程序检测到攻击者试图篡改或反向工程时,它可以使用自定义逻辑进行自我防御。
- 其余加强保护——包括切除和水印。
- Dotfuscator提供某些功能帮您构建、部署和调试混淆的程序集。
第二层保护:保护程序运行时发生的检查——保质期检查
保质期检查是用于检测某个日期之后是否正在运行某个应用程序。这使应用程序可以运行的有限时间。
保质期检查对于测试版或评估软件特别有用。如果用户尝试在到期日期之后运行应用程序,则保质期检查可以检测到此情况,并通过发送事件遥测,通知应用程序以及导致应用程序退出来做出反应。换句话说,保质期检查会根据当前日期检测并响应未经授权使用您的应用程序。
配置保质期检查
要让Dotfuscator Professional将保质期检查注入您的应用程序,您必须首先从PreEmptive Solutions 获取保质期激活密钥。获得激活密钥后,启用代码注入。然后,配置在配置编辑器的检查,或通过注释的源代码用ShelfLifeCheckAttribute。这两种方法都允许您指定确定Check操作方式的各种属性。
激活码
一个保质期激活密钥是需要注入保质期检查,必须在每个保质期检查的ActivationKeyFile 属性中指定激活密钥的路径。仅当Dotfuscator处理应用程序时才需要激活密钥。应用程序不需要在运行时访问激活密钥,因此不应将其分发到开发组织之外。
令牌
保质期令牌是含有关于应用程序的保存期限,信息的文件,如到期日期。Dotfuscator不是直接将过期信息嵌入到应用程序中,而是生成包含此信息的令牌。在运行时,保质期检查使用令牌来确定应用程序是否已过期。
在Dotfuscator Professional中,有两种方法可以将标记提供给保质期检查:
- 使用Check在应用程序中嵌入令牌。为此,在配置Check时,请指定Check的ExpirationDate和(可选)WarningDate属性的值。如果要对生成的令牌进行签名,还要为PrivateKeyFile指定值,如果需要,还指定PrivateKeyFilePassword。
- 单独生成令牌,然后在运行时将其提供给Check。要使Check在运行时动态检索令牌,在配置Check时,请指定ShelfLifeTokenSource属性的值。这些值指定应用程序代码中的源,该代码将令牌提供为string。
通知种类
虽然其他支票只提供一个通知,说明支票是否发现未经授权的应用程序状态,但保质期检查可以有两个通知:
- 到期通知:通知应用程序代码应用程序是否已过期(正在其到期日期之后运行)。
- 警告通知:通知应用程序代码应用程序是否处于警告期(正在警告日期之后运行)。
使用字符串接收器
作为bool前一小节中指定的接收器的替代方案,通知可以改为使用Method,Delegate或MethodArgument接收器,其中方法或委托具有签名void(string, string)。在这种情况下,Shelf Life Check使用以下两个参数调用方法或委托:
- 警告日期(或者null如果未指定警告日期)
- 截止日期
不支持的应用程序类型
Dotfuscator可以将Shelf Life Checks注入所有.NET程序集,但以下情况除外:
- 包含本机代码和托管代码的托管C ++程序集
- 多模块组件
- .NET核心程序集
- Silverlight程序集
- Unity程序集
- Windows Phone程序集
- WinRT程序集
- Xamarin组件