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

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

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

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

>>下载Dotfuscator最新试用版

第一层保护:Obfuscation转换——控制流

Dotfuscator的工作原理是修改反编译器用来重新创建源代码的代码模式。Dotfuscator引入了错误的条件语句和其他具有误导性的构造,以混淆和破坏反编译器。这个过程综合了分支、条件和迭代构造,这些构造产生有效的正向(可执行)逻辑,但是在尝试反编译时产生不确定的语义结果。

除了添加代码构造之外,Dotfuscator还破坏反编译器用于重新创建源代码的代码模式。最终得到的代码在语义上与原始代码等价,但不包含关于代码最初是如何编写的线索。该特性的目标是防止MSIL自动反编译回高级源代码。最终用户仍然可以查看MSIL本身,但要完全理解它并对其功能进行较大的更改就比较困难了。

例如:

之前

之后

▲限制

在控制流混淆之后测试应用程序性能是很重要的,特别是任何执行了很多次的代码(例如游戏循环或计算/算法密集型方法)。

控制流混淆只有在方法包含足够多的基本块时才能有效地击败反编译器。

▲排除

控制流排除与重命名排除以相同的方式工作,包括特定的排除和自定义规则。然而,控制流除外仅适用于方法。如果用户在测试过程中发现性能下降,那么应该将排除应用到执行计算密集型工作的任何方法或类(基本上是CPU是性能限制因素的任何情况)。

▲选项

High是唯一设计用来击败自动反编译器的关卡。如果高导致性能下降而不能通过排除来解决,则可以使用中值或低值,如果控制流被认为是导致运行时错误的原因,则可以使用中值或低值进行调试。

如果你有任何问题或意见,可在下方评论区留言,点击资源列表查看更多教程资源~

转载于:https://juejin.im/post/5d00a3e5f265da1b6e659b8b

.NET混淆器 Dotfuscator如何保护应用程序?控制流了解一下!相关推荐

  1. .NET混淆器 Dotfuscator使用教程七:加强保护之改进重命名混淆

    本篇文章将继续上一篇文章<.NET混淆器 Dotfuscator使用教程六:加强保护之添加Checks>,为大家介绍加强保护之改进重命名混淆和改进控制流混淆. 下载Dotfuscator最 ...

  2. .NET混淆器 Dotfuscator使用教程六:加强保护之添加Checks

    本篇文章将继续上一篇文章<.NET混淆器 Dotfuscator使用教程五:加强保护之自定义保护设置>,为大家介绍加强保护之添加Checks. 添加Checks Dotfuscator可以 ...

  3. .NET混淆器 Dotfuscator使用教程三:保护你的应用之检查受保护的程序集

    Dotfuscator是一款.NET混淆器和压缩器,防止你的应用程序被反编译. 本篇文章将继续上一篇文章与大家分享保护应用程序的第二个部分 - 检查受保护的程序集. 将Dotfuscator集成到项目 ...

  4. vc 将已有项目打包成dll 并应用于其他项目_.NET混淆器 Dotfuscator使用教程:保护你的应用之存档报告文件...

    Dotfuscator是一款.NET混淆器和压缩器,防止你的应用程序被反编译. 本篇文章将继续上一篇文章与大家分享保护应用程序的后续三个部分:存档报告文件.加强保护和替代方法. 存档报告文件 作为构建 ...

  5. 5个常用Java代码混淆器 助你保护你的代码

    [IT168 技术文档] 从事Java编程的人都知道,可以通过逆向工程反编译得到Java程序的源代码,这种反编译工具之一就是JAD.因此,为保护我们的劳动成果,尽可能给反编译人员制造障碍,我们可以使用 ...

  6. vs 中自带的代码混淆器 Dotfuscator (图)

    研究了一下,确实可以起到一定的混淆代码作用.但是有几点需要注意一下: 1.未注册版本使用时不能混淆公共类库.公共方法等,所以使用时一些敏感的信息以及程序逻辑尽可能的现在 private 方法中. 2. ...

  7. 使用VS自带的混淆器防止你的程序被反编译

    这里就介绍大家使用VS自带的混淆器dotfuscator.exe来阻止这种行为. 首先要做的找到dotfuscator.exe: D:/Microsoft Visual Studio .NET 200 ...

  8. ​如何保护Java程序

    Java是一种跨平台的.解释型语言.Java 源代码编译中间"字节码"存储于class文件中.Class文件是一种字节码形式的中间代码,该字节码中包括了很多源代码的信息,例如变量名 ...

  9. 如何保护Java程序 防止Java反编译

    常用的保护技术 由于Java字节码的抽象级别较高,因此它们较容易被反编译.本节介绍了几种常用的方法,用于保护Java字节码不被反编译.通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已 ...

最新文章

  1. 隔空投送所有人安全吗_Find X2将采用2K+120Hz屏幕,支持65W;安卓将拥有“隔空投送”;“杀毒霸主”Avast被曝偷卖4.35亿用户数据;...
  2. Apache Options Indexes FollowSymLinks详解
  3. java浮点整型数组_如何将C风格的二进制浮点数组读入Java?
  4. Java SE 6 新特性: HTTP 增强--转
  5. 51单片机 简易光电循迹小车
  6. directly test Gateway frontend service in AG3 SICF
  7. 作家百态之二:山南海北
  8. JimuReport积木报表 — API数据源报表带参制作
  9. Java高并发BlockingQueue重要的实现类
  10. python marshal 对象序列化和反序列化
  11. 解决百度地图使用出现的has leaked ServiceConnection com.baidu.location.b@4aa5a810 that was originally bound here
  12. 统计学理论—方差分析
  13. TX-LCN和Seata
  14. android之设置app背景图片
  15. 创意竖版产品发布会快闪PPT,等你来拿!
  16. 面向对象的正式与非正式解释!
  17. 怎么批量给图片加纯色边框?
  18. app.json: 未找到 [“pages“][2] 对应的 pages/goods_list/index.wxml 文件的问题解决办法
  19. 香港之行——大学·精神·交通
  20. 微软Windows8“消失”了的宣传壁纸

热门文章

  1. oracle中那个日期怎么相减_oracle数据库中日期加减函数
  2. mysql和mdy_Liunx下安装MySql
  3. leetcode三道shell题
  4. leetcode132. 分割回文串 II
  5. leetcode253. 会议室 II
  6. 如何有效申请TI的免费样片
  7. 做好7步 迅速成为行业专家
  8. 在动态网络下实现分布式共享存储
  9. 长寿的人会有的8个健康理念
  10. 我对应聘者的面试原则