接手了个项目,其内置的1.0混淆器需要更新至2.0版本,顺手将收集到的信息跟大家分享。本站其他几个高赞的混淆器介绍除了介绍怎么用这个界面其实帮助不怎么大....

What -> Why -> How -> Never

一、问题及需求

1. 问题:

  • Confuser EX1.0的可靠性是否可靠?请更新至Confuser EX 2.0并比较两代混淆器的差异。
  • 现行混淆器参数配置对代码的保护作用是否足够强?

两代混淆器的参数设置对比:左2.0 右1.0

Confuser EX 2.0在加密配置上多了anti dump、watermark、typescramble、harden四个选项,且对前面的设置做了一定程度的修改和加强。

2. 需求

  • 改进现有的Confuser EX使用方法

3. 产品预期

  • 在不同的模式下采用不同的混淆器配置。

混淆器预设保护强度等级 (决定代码的保护复杂度,同时决定设置的项目多寡)

none->minimum->normal->aggresive->maximum

除none以外的所有preset默认包含anti debug

二、实际执行

  • 更新Confuser EX1.02.0

更新文件已归档至/Alexsong/Confuser_bin 路径下,可以直接复制后覆盖原文档更新。

  • 修改Obfuscation property,确保添加的特性被include

三、问题的解决

Confuser Ex2.0 新特性 及配置介绍

  1. AntiTamper: This protection is actually just what is says it is. It's a protection that ensures that the assembly is not altered. The side effect of this protection is that all the method bodies become invisible. How ever when debugging into the protected code with for example dnspy, you'll get the method bodies pretty easily. There are two modes to this protection. The mode "normal" and the mode "JIT". The latter is a broken mess and I strongly suggest to not use it. The protection is (in "normal" mode) sometimes detected as a false positive malicious application. It provides a weak protection from people wanting to look at your code.

1. 防篡改:这种保护实际上就是它所说的那样。这是一种保护,确保组合不被改变。这种保护的副作用是,所有的方法体都变得不可见。无论如何,当使用dnspy调试到受保护的代码时,您将非常容易地获得方法主体。这种保护有两种模式。模式为“normal”和“JIT”。后者是一个破碎的混乱,我强烈建议不要使用它。这种保护(正常模式下)有时被检测为误报恶意应用程序。它提供了一个薄弱的保护,防止人们想要查看您的代码。

  1. Constants: This protection hides away constant values. It can protect strings (default), numbers, primitives and initializers (default). It basically encodes the value that is used for the initialization. Be aware that it can't protect const values, as those can't be populated by a function. All others are populated. The protected values can be uncovered by debugging, how ever analyzing the assembly get's much harder, because you can't search for specific strings for example. This protection has the modes "normal" (default), "dynamic" and "x86". I recommend setting it to "x86", because this implements the actual decoder with native code. If you can't use native code, use the "dynamic" mode. The "normal" mode is very easily reversed by some applications that are out there. I'm not aware of any case where this protection was detected by a anti-virus application.

2. 常量:该保护隐藏常量值。它可以保护字符串(默认值)、数字、原语和初始化式(默认值)。它对用于初始化的值进行编码。请注意,它不能保护const值,因为这些值不能用函数填充。其他的都有人口。受保护的值可以通过调试来揭示,但是分析程序集变得更加困难,因为你不能搜索特定的字符串。这个保护有“正常”(默认),“动态”和“x86”模式。我建议将其设置为“x86”,因为这将使用本地代码实现实际的解码器。如果不能使用本机代码,请使用“动态”模式。“正常”模式很容易被一些应用程序逆转。我不知道任何情况下,该保护被反病毒应用程序检测。

  1. Control Flow: The control flow obfuscation basically splits the code in pieces, rearranges it in the function and implements a very large switch block or a lot of jump statements to restore the actual flow of the application. This works best on large functions that can be split many times. The part of the obfuscation that takes care of "selecting the next block" in a obfuscated function, can be implemented in different ways. There is the "normal", the "expression" and the "x86" method. Again I suggest using "x86" if possible. If not either of the others is fine. This protection can be undone if the attacker follows the control flow the application with the debugger or in case the predicate method is decoded and the attacker is able to calculate the next block. I'm not aware of any case where this protection was detected by a anti-virus application. That is unless you got yourself a method that calls a lot of native functions (using Marshalling). Such methods are at times detected. I recommend disabling this protection for functions contains a lot of native calls.

3.控制流:控制流混淆基本上是将代码分割成片段,在函数中重新排列,并实现一个非常大的开关块或许多跳转语句,以恢复应用程序的实际流。这对于可以多次拆分的大型函数最有效。在模糊化函数中,负责“选择下一个块”的模糊化部分可以以不同的方式实现。有“正常”、“表达式”和“x86”方法。我再次建议如果可能的话使用“x86”。如果没有,其他任何一个都可以。如果攻击者使用调试器跟踪应用程序的控制流,或者在谓词方法被解码并且攻击者能够计算下一个块的情况下,这个保护可以撤消。我不知道任何情况下,该保护被反病毒应用程序检测。除非您有一个调用大量本机函数(使用编组)的方法。这种方法有时会被检测到。对于包含大量本机调用的函数,我建议禁用此保护。

  1. Reference Proxy: This protection basically hides all calls to functions inside another function. The "normal" mode doesn't help much, but makes it much more strenuous to read the code. This mode is never detected by a anti virus application. The "strong" mode is much more interesting. It hides the method code and some additional memory block and uses a decoder function to read it and create a dynamic method that contains the original code. This is very hard to follow, because you will not see the code in the debugger (at least I don't know how). This mode how ever is sometimes detected as malicious.

4. 引用代理:这种保护基本上隐藏了对另一个函数内部的函数的所有调用。“正常”模式没有多大帮助,但会使读取代码变得更加吃力。此模式不会被防病毒应用程序检测到。“强”模式更有趣。它隐藏方法代码和一些额外的内存块,并使用一个解码器函数来读取它,并创建一个包含原始代码的动态方法。这是非常困难的,因为您将看不到调试器中的代码(至少我不知道如何)。这种模式有时会被检测出是恶意的。

  1. Resources: This protection encodes the embedded resource files (mostly the ones created by *.resx files. This only works fine in case the resource is accessed using the generated code that accompanies the *.resx file. In case you got a assembly where you directly work with the resource file or in case you need to use the resource file across assemblies, I suggest disabling this protection.

5. 资源:这个保护对嵌入的资源文件进行编码(大部分是由*创建的。resx文件。这只适用于使用伴随*生成的代码访问资源的情况。resx文件。如果您有一个程序集,您可以直接使用资源文件,或者如果您需要跨程序集使用资源文件,我建议禁用此保护。

  1. AntiIDasm: Can be enabled without and worry. It simply sets a flag that says "please don't deobfuscated me". I think ILSpy honored this flag (once).

6. AntiIDasm:可以启用,不用担心。它只是设置了一个标志,说“请不要清除我的混淆”。我想ILSpy(曾经)尊重过这面旗帜。

  1. AntiDebug: Depending on the mode this protection adds some codes to the assembly that makes it impossible to attach the debugger. This should only be added to the main executables. The code does nothing in normal operation, but it turns any attached debugger either inoperable or very glitchy. It works well together with other protections that can be reversed with the debugger, to make things harder. But it's fairly easy using a msil editor to get rid of the code that break the Debuggers.

7. AntiDebug:根据模式,此保护会向程序集添加一些代码,使其无法附加调试器。这应该只添加到主可执行文件中。该代码在正常操作中什么也不做,但它会导致任何附加的调试器不可操作或非常故障。它与其他可以用调试器逆转的保护一起工作得很好,使事情变得更困难。但是,使用msil编辑器清除破坏调试器的代码是相当容易的。

  1. AntiDump: Works similar to AntiDebug, it tries to block memory dumping of the application memory. I usually don't use this, because it prevents minidumps to be created on the customer system.

8. AntiDump:类似于AntiDebug,试图阻止应用内存的内存转储。我通常不使用它,因为它可以防止在客户系统上创建最小转储。

  1. Invalid Metadata: Adds some buggy metadata to the classes and methods that cause some decompilers to break. This also causes massive issues in case you are trying to compile an application referencing an assembly protected with this.

9. 无效元数据:在类和方法中添加了一些有bug的元数据,导致一些反编译器崩溃。这也会导致大量的问题,如果您试图编译一个应用程序引用一个受此保护的程序集。

  1. TypeScambler: Some versions of ConfuserEx contain this. Don't use it. It's broken.

10. 某些版本的ConfuserEx包含这个。不要使用它。它坏了。

  1. Rename: The renamer is the big bad among the protections. This protection is the only truly irreversible one and also the one that requires the most fine tuning. ConfuserEx tries to set it up right for you, but in some cases it needs to be disabled for parts of an application. Mostly in case the application accesses specific classes a lot with reflections by name.

11. 重命名:在保护措施中,重命名是最大的缺点。这种保护是唯一真正不可逆的保护,也是最需要微调的保护。ConfuserEx尝试为您正确设置它,但在某些情况下,它需要为应用程序的某些部分禁用。大多数情况下,应用程序通过名称反射访问特定的类。

  1. Compress packer: The compress packer is the part that combines multiple assemblies into one. This is detected as malicious code very often.

12. 压缩封隔器:压缩封隔器是将多个组件组合成一个组件的部件。这通常被检测为恶意代码。

四、混淆器预设preset内包含保护项详情

Protection / Preset

Minimum

Normal

Aggressive

Maximum

Anti Debug

Anti Dump

Anti IL Dasm

Anti Tamper

Constants

Control Flow

Invalid Metadata

Name

Hardening

Reference Proxy

Resources

Type Scramble

Watermark

以上内容均选自github社区内作者回复

附上大佬的github链接https://github.com/mkaring/ConfuserEx

经典.net混淆器 Confuser EX 2.0 使用介绍及配置 2022相关推荐

  1. jocky1.0.3 (原joc) java混淆器 去除jdk版本限制

    昨晚下班回去,研究了下jocky1.0.3的使用,发现编译时提示引用类库版本不对,捣弄了半个小时后终于理解,原来是我的jdk1.7版本过高,这货是06年的版本,到现在都没更新过,支持(限制)的最高版本 ...

  2. java jocky 下载,jocky1.0.3 (原joc) java混淆器 去除jdk版本限制

    这是jocky1.0.3 (原joc) java混淆器 去除jdk版本限制下载,不支持现在的1.6.1.7等更高版本,现在我把某部分限制代码从class文件里面去除了,测试过可以用,更详细的说明在压缩 ...

  3. Powerbuilder混淆与加密器(powerbuilder防止反编译,pb混淆器,支持5-12) obfuscator for PowerBuilder...

    正式版购买请参考:http://www.mis2erp.com http://www.pb-obfuscator.com http://www.pbd-obfuscator.com 下载地址:http ...

  4. C/C++代码混淆器

    原文地址:https://foxzzz.com/c-cpp-disorder 试图通过混淆 C/C++源代码以达到保护知识产权的目的的做法其实就是自欺欺人,因为不论如何混淆代码,到了编译阶段代码终究是 ...

  5. AST反混淆实战-经典ob混淆

    Ast实战:反混淆解析经典ob混淆 一.混淆demo获取 ob混淆源码 来自猿人学14题 https://match.yuanrenxue.com/api/match/14/m demo.js //为 ...

  6. java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器

    java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器 下载地址:http://yunpan.cn/QXhEcGNYLgwTD 运行方式:java -jar Encryp ...

  7. JAVA软件逆向之去除Java混淆器Zelix KlassMaster的试用时间限制

    声明:本文内容仅供学习交流,请勿用于非法用途 Zelix KlassMaster是一款优秀的Java混淆器,但试用版有时间限制,偶然间从一个群里获得了ilanyu上传的ZMK9.0.8试用版,尝试运行 ...

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

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

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

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

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

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

最新文章

  1. MATLAB算法(函数)编译为C++动态库遇到的问题
  2. (Matrix3D)坑爹的flash帮助文档
  3. codeforces B. Friends and Presents(二分+容斥)
  4. 【MySQL】MySQL自带的数据库
  5. poj2393 其它贪心 挑战程序设计竞赛
  6. 面向兑现编程(四):多态
  7. R语言与数据挖掘学习笔记(常用的包)
  8. Python学习笔记[5]---else语句和with语句
  9. wireless中添加country code的方法(wireless-regdb crda)
  10. 直播开篇——直播场景和技术分析
  11. 图解机器学习笔记-1
  12. html父子页面关系,html元素的父子关系的使用
  13. 最新解决谷歌浏览器崩溃的方法
  14. 苹果IOS企业开发者账号怎么申请——苹果账号申请记录(未完待续)
  15. 服务器UDIMM、LRDIMM、RDIMM的区别
  16. Nest.js模块机制的概念和实现原理
  17. Lync Server 2010 安装指南
  18. 域服务器统一修改ie首页,通过AD域策略对IE做统一设定
  19. ERNIE: Enhanced Representation through Knowledge Integration(百度)论文翻译
  20. 孩子这样学编程会上瘾:探究式学习、对话和批判性思维

热门文章

  1. cocos2dx3.0关于实现椭圆运动
  2. PHP从入门到能用(十)创建新闻网站数据库
  3. kali系统添加开机启动项
  4. 混频器的噪声来源与抑制方法
  5. TP-Link 886nV6 刷第三方系统回忆
  6. EXCEL图表 横坐标日期格式无法修改问题
  7. FAT文件系统与文件恢复
  8. git使用时报错:fatal: unable to access ‘xxx‘ : Failed to connect to github.com port 443 after: 【Time out】
  9. virtualbox win7虚拟机启动exe提示“DX11 could not switch resolution”解决方案
  10. “谷姐一下”、“寂寞全消除”