篡改检查是什么?.NET混淆器Dotfuscator如何实现应用程序保护?

.NET
389
0
0
2022-04-12

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

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

从本文开始我们一起了解Dotfuscator如何对应用程序进行多层保护,层层递进,大致可分为:

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

第二层保护:保护程序运行时发生的检查

篡改检查

篡改检查是一种用于检测应用程序自Dotfuscator处理后是否已更改的检查。

例如,如果攻击者修改应用程序二进制文件以规避限制或删除许可信息,则篡改检查可以检测修改并通过发送事件遥测,通知应用程序和阻止攻击者做出反应。换句话说,篡改检查会检测并对未经授权篡改您的应用程序做出反应。

配置篡改检查

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

不支持的应用程序类型

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

  • 面向.NET 1.0的程序集
  • 包含本机代码和托管代码的托管C ++程序集
  • 多模块组件
  • .NET Compact Framework程序集
  • .NET核心程序集
  • Silverlight程序集
  • Unity程序集
  • UWP组件
  • Windows Phone程序集
  • WinRT程序集
  • Xamarin iOS程序集

测试

[.NET Framework]

为了测试注入到应用程序中的篡改检查如何对装配篡改作出反应,Dotfuscator包括TamperTester.exe一个命令行实用程序,通过修改程序集的元数据来模拟篡改。要测试受保护的应用程序对篡改的反应,需要以下步骤:

  1. 打开命令提示符
  2. 如果尚未存在,请更改为受保护程序集的目录。例如:
  3. cd C:\YourApp\Dotfuscated
  4. 输入TamperTester.exe AssemblyName.exe,AssemblyName.exe要为其创建篡改版本的程序集的名称。还可以指定实用程序的第二个参数,即放置篡改程序集的目录。如果未指定,则将篡改的程序集放在程序集目录的子目录中tampered。
  5. 该实用程序会创建一个篡改版本的程序集。
  6. 将其他输出程序集复制到篡改版本的目录中。例如:
  7. xcopy *.* tampered /d
  8. 运行篡改组件并运行篡改检查的位置,以观察应用程序对被篡改的反应。

[Xamarin.Android]

要测试注入应用程序的篡改检查将如何对篡改作出反应:

①如果在生成存档后签署应用程序:

  1. 取消选中项目属性中的“使用以下密钥库详细信息签署.APK文件”。
  2. 在Visual Studio中创建新的应用程序存档。
  3. 选择新创建的存档,然后选择“分发...”
  4. 选择您首选的分销渠道。
  5. 使用包含与指定的指纹不同的SHA-1指纹的密钥对新包进行签名DotfuscatorAndroidSigningCertFingerprint
  6. 正常部署应用程序。

②如果您在项目的属性中签署了应用程序:

  1. 在Visual Studio中打开项目的属性。
  2. 导航到“Android项目属性”选项卡。
  3. 取消选中“使用以下密钥库详细信息签署.APK文件”旁边的框。
  4. 正常构建和部署应用程序。

这将导致已部署的应用程序使用该debug.keystore文件进行签名,从根本上模拟已被篡改并重新打包的应用程序。

点击下方“了解更多”免费下载Dotfuscator最新版

↓↓↓