Dotfuscator 简介

作为一种高级语言,c# 类库很容易被 .NET Reflector 这样的工具反编译。攻击者很容易从代码中找到数据库连接方式,加解密方法等重要信息。使用 dnspy 这样的工具甚至可以随意修改类库,下断点进行调试。

所以我们需要用 Dotfuscator 等工具对代码进行混淆。

Dotfuscator 使用方法:https://www.preemptive.com/dotfuscator/pro/userguide/en/index.html

Dotfuscator 使用流程

1 在 Input 中选择需要输入的类库(这些类库的依赖项必须在文件所在目录)

2 在 Settings 中设置临时目录和输出目录。

3 合理设置混淆参数(见下文)。

4 保存工程文件,方便下次使用。

5 开始混淆,在输出目录获取混淆后的类库,在反编译软件中验证混淆结果。

Dotfuscator 的保护措施

第一层保护:模糊转换 ,在反编译后增加阅读难度。(包括:Renaming, Control Flow, String Encryption)

第二层保护:运行时检测,防止他人篡改程序(包括:Tamper Check , Debug Check , Root Check , Shelf Life Check)(本文不作介绍)

其他保护:Removal , Watermarking(本文不作介绍)

Renaming

对命名空间,类,方法,字段进行重命名以增加阅读难度。

对于卖控件的公司来说,需要勾选 Library 选项,以防止 public 的类被重命名。如果类被重命名了那么其他人将无法调用这个类库。

对于卖软件的公司来说,需要取消勾选 Library 选项,这样所有的类都会被重命名。

Dotfuscator 利用了 c# 的重载特效,将完全不同的方法重命名为同一个方法,被称为 Overload Induction。

勾选 Use Enhanced Overload Induction 。

右侧的 Renaming Scheme 建议选择 Unprintable ,会将把类名重命名为一些不可打印的字符。这些字符无法再显示器上显示出来。

Overload Induction 这项技术不适用于 xaml 代码,使用反射和指定入口点的配置文件的情况。(wpf 控件大量使用 xaml ,不能进行 overload induction)

如果勾选了  Use Enhanced Overload Induction 选项时,需要将不需要进行重命名的类库在 Exclude 界面中勾选以排除重命名列表。

Control Flow

Control Flow 会打乱方法的执行顺序,增加大量无用的分支,以增加阅读难度。但有时会影响到性能。如果对性能有要求的话可以将类库排除出列表。

String Encryption

场景:在软件的某个位置弹窗:“您的软件是盗版的!”。

对软件反编译后寻找这个字符串后可以很方便的定位到程序的关键位置,通过篡改程序可以很方便的绕过核心的授权机制。

如果对字符串进行加密,反编译后将找不到这段话。

需要强调的是,对于 const string 常量,字符串加密功能将不起作用。所以建议在编写代码时将重要的常量改为 static string   !!!!!!!!!!!!!!!!!!!!!

首先需要将 Disable String Encryption 改为 No (默认为 Yes)

然后将需要混淆字符串的类库勾选

部分勾选

Dotfuscator 所有的勾选都可以精确到类,方法和字段。

可以使用筛选器筛选出符合要求的匹配对象。这样在编写代码时可以对特定的类采用相似的命名规则以满足筛选器。(筛选器支持正则表达式)

具体使用方法见官方文档:https://www.preemptive.com/dotfuscator/pro/userguide/en/index.html

使用批处理进行混淆

https://www.cnblogs.com/aitong/p/10627930.html

使用 Dotfuscator 对代码进行混淆的更多相关文章

  1. Intellij idea 和android studio 代码给混淆

    Intellij idea 和android studio 代码给混淆 一.指令说明-optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassna ...

  2. Flutter 发布APK时进行代码/资源混淆的坑

    Flutter 发布APK时进行代码/资源混淆的坑 @author ixenos 1. 关键点 proguard是Java的代码混淆工具,但是当用第三方库的时候,必须要告诉proguard不要检查,因 ...

  3. vue项目配置 `webpack-obfuscator` 进行代码加密混淆

    背景 公司代码提供给第三方使用,为了不完全泄露源码,需要对给出的代码进行加密混淆,前端代码虽然无法做到完全加密混淆,但是通过使用 webpack-obfuscator 通过增加随机废代码段.字符编码转 ...

  4. 详解计算miou的代码以及混淆矩阵的意义

    详解计算miou的代码以及混淆矩阵的意义 miou的定义 ''' Mean Intersection over Union(MIoU,均交并比):为语义分割的标准度量.其计算两个集合的交集和并集之比. ...

  5. 使用VS2013自带的PreEmptive Dotfuscator and Analytis来混淆C#代码

    1. 使用VS2013编译你要打包的程序,会在文件夹中的 ..\bin\Release中 2. 点击VS2013中的TOOLS -> PreEmptive Dotfuscator and Ana ...

  6. 详细讲解Android对自己的应用代码进行混淆加密防止反编译

    1.查看项目中有没有proguard.cfg. 2.如果没有那就看看这个文件中写的什么吧,看完后将他复制到你的项目中. -optimizationpasses 5 -dontusemixedcasec ...

  7. java混淆工具 字符串加密 程序加密 代码逻辑混淆 防止反编译

    混淆工具使用文档 ht-confusion-project1.0.0 目 录 1.功能介绍... 1 2.安装说明... 3 2.1Window查询jdk版本(点击开始菜单,输入cmd, 输入java ...

  8. 混淆-SmartAssembly

    SmartAssembly 7 documentation:https://documentation.red-gate.com/sa SmartAssembly7.2版本下载链接: https:// ...

  9. 批处理 进行svn代码拉取,vs编译,dotfuscator混淆

    Dotfuscator的使用:https://www.cnblogs.com/aitong/p/10684004.html 从拉取代码,编译到最后的混淆步骤很多.这时就可以使用批处理来进行自动化. 用 ...

随机推荐

  1. Android 修改 TextView 的全局默认颜色。

    如果你的应用中大多数TextView的颜色是红色, 或者其他颜色, 你是为每一个TextView都设置一次颜色, 还是有其他更好的办法, 这里教你怎么修改TextView的默认颜色. 当然我们Text ...

  2. 解读DbContext中的三种【EagerLoad,LazyLoad,ExplicitLoading】加载模式

    一:立即加载,延迟加载,显式加载 1. 立即加载 Student Domain{ Teacher theacher} using (SchoolDBEntities db = new SchoolDB ...

  3. 【转载】UML类图几种关系的总结

    因为有的时候很久不弄UML图,老是忘记几个常见的连接线的意思,这篇完全说转载:UML类图几种关系的总结 在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Real ...

  4. [LeetCode 题解]: Two Sum

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 Given an a ...

  5. HttpWebRequest(System.Net)模拟HTTP发送POST

    相关参考网上很多,但需要理解并转成自己的情况 public static string HttpWebRequestPost(string url, string param) { HttpWebRe ...

  6. 201621123012 《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集 ...

  7. [转]什么是VUE?为什么用VUE?

    Vue.js新手入门指南 最近在逛各大网站,论坛,以及像SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容也很多,楼主自己也趁着这个大前端的热潮,着手学习了一段时间的 ...

  8. vm虚拟机Kali无法拖拽文件解决办法

    vm虚拟机Kali无法拖拽文件解决办法 apt-get updateapt-get install open-vm-tools-desktop fusereboot

  9. code::blocks学习(2)

    转自: http://blog.csdn.net/sinat_27088253/article/details/52137855 http://jingyan.baidu.com/article/0b ...

  10. [arc076F]Exhausted? 贪心+堆

    Description ​ 有m个椅子,第i个在位置i,每个椅子只能坐一个人.  有n个人,第i个人能坐的椅子的位置j需满足j≤Li或j≥Ri.  现在你可以添加若干个椅子,可以放在任意实数位置.问最 ...