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

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

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

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

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

>>下载Dotfuscator最新试用版

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

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

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

例如:

之前

之后

▲限制

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

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

▲排除

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

▲选项

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

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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

到底什么才是人生最大的投资

不是房子,不是股票, 是人,跟什么人交往,跟随什么人, 交什么样的朋友,其实就是你投资什么人, 而这,是对人生影响最大的。 钱不会给人机会,房子也不会, 只有人会…

tcpdump抓包命令

目录: 命令格式选项expression表达式示例【命令格式】 man手册显示如下 1 tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]2 [ -c count ]3 [ -C file_size ] [ -G rotate_seconds ] [ -F file ]4 [ -i …

百度Ueditor编辑器wordimage踩坑

背景 改造公司老项目后台编辑器,使用百度的Ueditor做替换。 发现问题 1、ue编辑器初始化后部分参数无法覆盖ueditor.config.js中的选项。2、wordimage(word图片转存)始终是灰色,无法使用。解决办法 1、将ueditor.config.js中的inp…

IntelliJ IDEA 配置JDK

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 IDEA配置JDK 1、点击File -->Project Structure; 2、点击左侧标签页SDKs选项,再点击左上角“”,…

get和post 两种基本请求方式的区别

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出…

无论是工作还是生活都要记住这些话

1.如果你不喜欢现在的工作,要么辞职不干,要么就闭嘴不言。初出茅庐,往往眼高手低,心高气傲,大事做不了,小事不愿做。不要养成挑三拣四的习惯。不要雨天烦打伞,不带伞又怕淋雨,处处表…

苏嵌第一天,shell中一些基础知识

一、常用环境变量 1、HOME变量 Linux系统中的每个用户都有一个相关的称作HOME的目录。 2、PATH变量 包含一列用冒号定界的目录的路径名字,便于可执行程序的搜索。 3、PS1变量 PS1变量包含了shell提示符,$符号 4、LOGNAME变量 包含用户的注册名字…

Java异常处理001:Maven clean package时Failed to clean project: Failed to delete

Java异常处理001:Maven打包时Failed to clean project: Failed to delete 异常日志: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.6.1:clean (default-clean) on project fmk-web: Failed to clean project: Failed …

Weekly Contest 141

做了第一道后,看了下中间两道题目,没怎么看懂就先放着,做完最后一道,然后就没时间了。 1089. Duplicate Zeros Given a fixed length array arr of integers, duplicate each occurrence of zero, shifting the remaining element…

IntelliJ IDEA 中配置、使用 SVN

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1.配置svn 如下图: file -- setting -- version control -- subversion -- 选择 SVN安装路径 -- apply -- OK 2.直接检出…

切记!职场邮件需注意的细节

电子邮件是如今工作场所重要的通信工具之一,但不是每个人都知道如何很好地使用这个工具。工作邮件也是人际沟通的一种方式,和打电话、面谈一样,有很多学问讲究,所以在发送邮件之前一定要深思熟虑。 【发送,抄送&…

李洋疯狂C语言之初

1.sizeof 是看数据类型所占空间大小,这个大小是以 字节(B)为单位 char 是C语言的字符数据类型 %d 用在printf 中表示往屏幕打印一个数字 printf ("char: %d\n", sizeof(char)); 数据类型之间的关系,shor…

时时流量查看工具-ifsta,nload,iftop

为什么80%的码农都做不了架构师?>>> 1、ifstat 是一个网络流量监测程序。能查看网卡的流出和流入的字节. 概要:ifstat就像iostat/vmstat描述其它的系统状况一样,是一个统计网络接口活动状态的工具。 参数: -l 监测环路…

10大清宿便排毒方法及简单排毒瘦小腹运动

早上空腹喝水法:每日起床后空腹喝下500C.C.加盐的冷开水。只要是冷的饮料或水分,在肠胃空腹时都有刺激肠胃蠕动的效果,而且越冰刺激效果越好,建议不需加盐,以免高血压患者因盐分中的金属离子造成肾的负担。 优酪乳加绿…

破解 IntelliJ IDEA 、免费注册方法、注册码

1. 找到hosts文件,在此路径下 C:\Windows\System32\drivers\etc 2. 修改hosts 文件,在最后 加一行配置: (此操作需要电脑管理员权限) 0.0.0.0 account.jetbrains.com 3. 从idea 注册码生成网站生成一组注册码。网…

李洋疯狂C语言之冒泡排序法

今天的课后任务是2种排序方式(冒泡排序和选择排序) 冒泡排序法1 原理:从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换他们,一直比较到a[n]。同理对a[1], a[2], ……a[n-1]处理&a…

MySQL水平分区代理Spock Proxy(一)

为什么80%的码农都做不了架构师?>>> MySQL水平分区代理Spock Proxy 水平分区(sharding)将同一数据表中的数据通过特定的算法进行分离,分别保存在不同的数据表中,从而部署到不同的数据库服务器上。 水平分区后,数据拆分…

OO第四单元作业

1.作业的架构设计 (1)对于第一次作业中,要求我们实现关于类图的查询指令。 在这次作业中,主要采用的储存方法是哈希表。 在查询方法上,大多数要求诸如共有多少类等,利用哈希表进行查询即可。 比较困难的一些…

伤钱伤感情 10件不能和亲戚一起干的事儿

关于亲戚和理财,网友小盒总结了下十大别和亲戚干的事儿,干了之后保管既伤钱又伤感情: 1、别帮亲戚炒股 赚了觉得你赚得不如以前吹的那么多,赔了就剩翻脸了,搭时间搭功夫还不落好。 2、别和亲戚一起做生意 道理同…

李洋疯狂C语言之选择排序

选择排序法 原理: 选择法循环过程与冒泡法一致,它还定义了记号mini,然后依次把a[min]同后面的元素比较,若a[min]>a[j],则使kj. 最后看看ki是否还成立,不成立则交换a[k], a[i],这样就比冒泡法省下许多无用的交换&a…