如何进行调试检查?.NET混淆器Dotfuscator保护途径有哪些?

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

  Dotfuscator提供了一种应用程序保护的多层方法。这些层中的每一层都提供了一个重要的整体保护策略。如果一层受到损害,其他层继续提供有效保护,使攻击者更难以实现其目标。并且不仅有多个层,而且每个层都具有比其他混淆产品使用的简单技术更强大的高级功能。

  接下来我们一起了解Dotfuscator如何对应用程序进行多层保护,层层递进,大致可分为:

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

  调试检查是检测调试器是否附加到应用程序。例如,如果攻击者在调试器中启动应用程序以对应用程序进行反向工程或提取或操作敏感数据,则调试检查可以检测调试器并通过发送事件遥测,通知应用程序和阻止攻击者做出反应。换句话说,调试检查会检测并响应未经授权的应用程序调试。

  配置调试检查

  要让Dotfuscator将调试检查注入您的应用程序,首先启用代码注入。然后,配置在配置编辑器的检查,或通过注释的源代码用DebuggingCheckAttribute。这两种方法都允许您指定确定Check操作方式的各种属性。

  要求:

  要让Dotfuscator识别此属性的使用并注入调试检查,以下所有条件都必须为true:必须启用启用注入选项必须启用包含此属性的输入程序集的Honor Injection Attributes输入选项,默认情况下是这样。对于注入的调试检查以发送遥测,必须满足以下所有条件:当Dotfuscator构建配置时,必须启用“ 发送调试检查消息”选项在运行时,当Check运行时,必须设置检测(通过调用其他注释的方法SetupAttribute)。要使Dotfuscator从受保护的程序集中删除此属性的使用,必须启用包含此属性的输入程序集的“ 条带注入属性”输入选项,默认情况下为该属性。

  属性:

  操作:如果检测到连接到应用程序的调试器,则检查将执行检查操作。ActionProbability:指定检测到调试器时检查操作发生的概率,表示为0.00和之间的范围1.00,默认为1.00(检测到调试时始终发生检查操作)。ApplicationNotificationSinkElement:指定Check将用于通知应用程序Check的结果的代码元素的类型。此代码元素称为应用程序通知接收器。默认为None,这意味着应用程序不会收到Check的结果通知。如果是Method,MethodArgument或Delegate,则Check会使用签名调用方法,委托方法参数或委托字段void(bool)。如果是Field或Property,则Check设置bool字段或属性。不支持DefaultAction。如果使用此设置,Dotfuscator将出错。ApplicationNotificationSinkName:指定应用程序通知接收器的名称。ApplicationNotificationSinkOwner:指定声明应用程序通知接收器的类型的名称,默认为定义带注释的方法的类型。

  不支持的应用程序类型

  Dotfuscator可以将调试检查注入所有.NET程序集,但以下情况除外:

  .NET核心程序集使用“退出”操作时,不针对Windows Phone 8或8.1的Silverlight程序集Unity程序集Xamarin组件

  测试

  要测试注入应用程序的调试检查如何响应调试器的存在,请运行受保护的应用程序并使用调试器(如Visual Studio,MDbg或WinDbg)连接到该应用程序。练习调试检查的位置,观察应用程序对在调试器中运行的反应。

posted @ 2022-02-08 21:01  ebuybay  阅读(63)  评论(0编辑  收藏  举报