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

2023-11-11

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

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

 

[Xamarin.Android]

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

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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • 线程睡眠和Windows服务

    我正在开发一个 Windows 服务 该服务存在一些问题Thread Sleep 所以我想我会尝试使用计时器 因为这个问题建议 在 Windows 服务中使用 Thread Sleep https stackoverflow com que
  • Windows 窗体中的标准 Windows 菜单栏

    我注意到添加了一个MenuStrip 来自工具箱 我的表单设计不会产生像许多本机 Windows 应用程序中那样的菜单栏 相反 我得到了一个像 Visual Studio 自己的菜单栏 没有任何样式设置MenuStrip似乎模仿了更常见的本
  • WPF画布性能-children.add调用多次

    我在长画布上绘制了很多线条 想想条形图 并对其性能进行了相当好的调整 使用低级几何类并冻结它们等 这极大地提高了性能 但仍然需要几秒钟将几千个项目加载到画布中 我对应用程序进行了性能分析 看起来每次调用都花费了很大一部分时间canvas c
  • 如何强制我的 .NET 应用程序以管理员身份运行?

    一旦我的程序安装在客户端计算机上 如何强制我的程序以管理员身份运行Windows 7的 您需要修改嵌入到程序中的清单 这适用于 Visual Studio 2008 及更高版本 项目 添加新项目 选择 应用程序清单文件 改变
  • 在 C# 中的同一套接字上发送+接收数据

    我试图使用套接字 System Net Socket 甚至尝试过 TcpListener Client Etc 来在等待或已经发送数据时侦听数据 我做了以下事情 public byte bytesIn public byte bytesOu
  • Windows DPAPI - 如何处理熵?

    我正在使用 Windows DPAPI 来加密一些敏感数据 密码存储在注册表中 这一切都运行良好 但我想知道是否有人可以澄清我对 NET 中 可选 提供给 ProtectedData Protect 的 熵 字节的理解 熵 字节数组似乎类似
  • LINQ to Entities 区分大小写的比较

    这不是 LINQ to Entities 中区分大小写的比较 Thingies First t gt t Name ThingamaBob 如何使用 LINQ to Entities 实现区分大小写的比较 那是因为你正在使用LINQ 实体最
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 如何在richtextbox中使用多颜色[重复]

    这个问题在这里已经有答案了 我使用 C windows 窗体 并且有 richtextbox 我想将一些文本设置为红色 一些设置为绿色 一些设置为黑色 怎么办呢 附图片 System Windows Forms RichTextBox有一个
  • SqlCommand.Dispose() 在 SqlTransaction.Commit() 之前?

    在提交事务之前处理分配给事务的命令是否有效 我自己测试了以下代码 它似乎工作得很好 但这是一个相当小的例子 所以我正在寻找是否有人确实知道的确认 internal static void TestTransaction try Progra
  • 为什么 dotnet 的 char.IsLower() 是静态方法?

    这似乎违背了每一个设计准则 接受 T 类型的单个参数的静态方法通常应该只是一个成员方法 这太奇怪了我实际上不得不发布一个StackOverflow问题 https stackoverflow com questions 389100 is
  • Foursquare - OAuth 身份验证 - .Net 示例

    是否有关于如何使用 Oauth 向 Foursquare 进行身份验证的示例 这里有一个关于如何将 OAuth 与 Foursquare 结合使用的非常好的工作流程摘要 http developer foursquare com docs
  • 为标签生成成员:我有什么理由应该这样做?

    我在这里读过另一篇文章 因此 如果可能的话 您不应该为标签生成成员 我想知道有什么潜力缺点到这会是 我说的好处是性能提高 对吗 还要别的吗 我有一个带有 100 个标签的 winform 应用程序 不产生成员有什么好处 还是只有在 Web
  • 如何捕获一个 int

    我正在使用 IL 抛出一个 Int32 并捕获它 这只是出于好奇 我并没有试图实现任何目标 所以请不要告诉我抛出异常而不是 int method private hidebysig static void Main string args
  • 如何使用 .NET 以编程方式沙箱进程

    我计划设计一个系统 本质上允许用户在我的机器上运行 PHP Ruby 等脚本代码 我想将它们放入沙箱中 以防止它们访问机器的关键方面 哪些 NET API 可用于此目的 我计划从主流程创建一个子流程 并希望以编程方式从主流程中沙箱该子流程
  • 如何在VS2017中从.net项目引用netstandard项目?

    我有一个 netstandard2 0 项目 用于与第三方 Web 服务交互 我需要在同一解决方案中引用旧的 net 4 6 2 项目中的该项目 但是当我这样做时 我会收到一堆关于需要引用我定义的类型的错误 例如 我将调用 netstand
  • Inno Setup:验证是否已安装 .NET 4.0

    我有一个需要 NET 4 0 才能运行的组件 我的 Inno Setup 安装程序如何验证它是否已安装 如果没有 则提示用户安装它 The InitializeSetup运行 Inno Setup 可执行文件时调用该函数 为自定义脚本插入此
  • 如何判断应用程序是否是Web应用程序

    在 Windows 服务和 Web 应用程序中运行的核心程序集中 我需要存储每个用户会话的信息 该服务将具有单个用户会话 并且 Web 应用程序使用 HttpContext Current 我想配置在核心程序集中使用哪种方法 约定优于配置
  • 如何创建可以像 UserControl 一样编辑的 TabPage 子类?

    我想创建一个包含一些控件的 TabPage 子类 并且我想通过设计器来控制这些控件的布局和属性 但是 如果我在设计器中打开子类 我将无法像在 UserControl 上那样定位它们 我不想创建一个带有 UserControl 实例的 Tab

随机推荐

  • BigDecimal精度丢失,给前端返回String类型,ToStringSerializer。

    bigDecimal长度太长 返回给前端 精度会丢失 即后几位都会变成0 解决办法 给前端返回字符串类型 加注解 JsonSerialize using ToStringSerializer class JsonSerialize usin
  • 蓝桥杯历届-带分数

    蓝桥杯历届 带分数 标题 带分数 100 可以表示为带分数的形式 100 3 69258 714 还可以表示为 100 82 3546 197 注意特征 带分数中 数字1 9分别出现且只出现一次 不包含0 类似这样的带分数 100 有 11
  • 使用Chrome调试JavaScript的断点设置和调试技巧

    使用Chrome调试JavaScript的断点设置和调试技巧 投稿 hebedich 字体 增加 减小 类型 转载 时间 2014 12 16 这篇文章主要介绍了使用Chrome调试JavaScript的断点设置和调试技巧 需要的朋友可以参
  • centos7 开机启动流程

    开机启动流程 开机启动流程的意义 1 掌握让某个软件开机自动运行 2 开机不能正常启动 是什么原因 或者哪个环节出现了问题 3 防止黑客植入木马 去查询黑客会把木马放到哪些地方 POST 上电自检 gt 加载BIOS Basic Input
  • 处理点云数据 点云与生成前视图

    创建点云数据中的前视图 前视图投影 为了将激光雷达传感器的前视图平面化为二维图像 必须将三维空间中的点投影到可以展开的圆柱形表面上 以将其平面化 下面公式见论文Vehicle Detection from 3D Lidar Using Fu
  • 快捷指令_快捷指令怎么用?玩转快捷指令(捷径)全攻略 看完你就是老司机!...

    快捷指令大全下载 快捷指令 捷径 下载 https m zmtc com jiejing 下载安装快捷指令 请复制以上网址 在iOS设备自带的 Safari 浏览器中打开进行下载与安装即可 快捷指令果粉朋友一定不会陌生 不过一直以来 我们主
  • Spring框架概述 --- 常用注解

    Spring框架概述 常用注解 装配注解 SpringMVC注解 Spring配置注解 装配注解 Spring 提供了以下多个注解 这些注解可以直接标注在 Java 类上 将它们定义成 Spring Bean Component 该注解用于
  • tomcat端口被占用解决办法

    tomcat启动时出现Address already in use JVM Bind 的原因是因为端口被占用 有可能是因为多次启动tomcat或者启动了多个tomcat 或者是其他应用程序或者服务占用了 错误日志如下 严重 Standard
  • C++学习之用数组实现顺序表

    开始学习数据结构 路还长 加油 用C 的template实现顺序表SequenceList 第一次上传完整代码 比较菜 SequenceList h ifndef SEQ LIST H define SEQ LIST H include
  • 【100%通过率 】【华为OD机试 c++/java/python】最小调整顺序次数【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 给定一个队列 但是这个队列比较特殊 可以从头部添加数据 也可以从尾部添加数据 但是只能从头部删除数据 输入一个数字n 会依次添加数字1 n 也就
  • JavaScript中sort方法排序不正确解决办法

    假如你想对一个数组排序 在JS中你会想到sort函数 例如 var arr 1 100 20 200 40 50 120 10 arr sort console log arr 控制台中可以看到结果是 1 10 100 120 20 200
  • 气压计MS5611编程操作流程

    文章更新版本 时间 备注 修订人 V0 1 发布于 2019 09 21 11 03 46 初始版本 libo 文章目录 一 开发笔记 二 初始化与工作流程 1 从PROM读取出厂校准值 2 启动温度AD转换 读取AD值 3 启动气压AD转
  • TaskCompletionSource

    概括 TaskCompletionSource
  • 极速加密文件夹: 一个2秒加密文件夹的Windows文件夹加密软件

    大部分朋友的电脑上 经常会有一些重要文件 隐私照片和视频不想让别人轻易可以访问或者打开 尤其你的电脑可能会被别人偶尔使用的时候 加密保护就尤其重要了 不少Windows用户通常使用ZIP等压缩工具 将文件夹压缩成压缩包并加上密码进行文件保护
  • 图像语义分割综述(semantic segmentation) 上篇

    本文对图像语义分割近年来的主要发展做一个综述性的介绍 翻译了以下两篇博文 并进行了整合 https www jeremyjordan me semantic segmentation http blog qure ai notes sema
  • Linux 最全的添加开机启动方法

    添加开启启动的方式一般有如下几种 第一种 把开机命令 写入到os的启动文件之中 伴随着启动文件的读取 顺便帮你把要启动的任务 一起启动了 第二种 把启动任务 放到os的启动目录下 os启动过程之中 会执行所有放在此目录下的任务 第三种 os
  • 利用Arthas+APM监控进行Java性能深度定位

    大家可能都用过APM监控 包括开源的Skywalking 商用的卓豪 ZOHO ManageEngine APM应用性能监控 以及云监控产品如听云 Server监控 这些APM监控产品大大方便了我们实时监控应用性能 并实现性能深度透视监控
  • JavaScript 日期对象Date(声明/Date对象的方法/返回距离1970/01/01毫秒数)

    Date 1 日期对象声明 var date1 new Date 设定制定时间 兼容最强 var date2 new Date 2016 01 27 12 00 00 不常用 var date3 new Date Wed Jan 27 20
  • .NET当中的另一个V8 JS引擎 Wrapper

    前言 之前写过一篇文章 是关于在 NET中 使用v8sharp作为v8Engine的Wraper 从而在 NET中与Javascript互操作 不过v8Sharp有几个很大的问题 第一 在参数中传递中文字符串会产生乱码 第二 无法在 NET
  • 篡改检查是什么?.NET混淆器Dotfuscator如何实现应用程序的保护?

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