【转载】C#使用Dotfuscator混淆代码以及加密
C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进行破解的,特别是对于一些商业用途的C#软件来说,因为盯着的人多,更是极易被攻破。使用Dotfuscator可以实现混淆代码、变量名修改、字符串加密等功能。
这里介绍的是DotfuscatorPro_4.9.7750_2.0 版本,有需要的可以到网上搜索下载https://skydrive.live.com/?cid=d2b11227abf128d8&id=D2B11227ABF128D8%21104。安装 Dotfuscator 好 打开界面,有几个需要配置的地方: Options、Input、Rename、String Encryption、Build,其他的默认即可,下面一一讲解。

Settings->Global Options 这是全局配置选项:
把 Disable String Encryption 设为 NO,即启用字符串加密;检查 Disable Control flow、Dsiable Renaming 也为 NO,即保证控制流和混淆功能打开,其他默认。如下图:

Input 选项里 选择你需要混淆加密的 dll、exe文件,其中Library不要勾选,否则有些类、变量等等不会混淆;

Rename 选项 勾选“use enhanced overload induction”(使用增强模式),注意:不要勾选下方的“ Do not suppress on serializable types”,即序列化类型的变量不加密,否则编译后可能异常; “Renaming Scheme” 选择“Unprintable”(不可打印字符,即乱码),也可以选择其他如小写字母、大写字符、数字的方式。如下图:

String Encryption 选项 include里勾选需要字符串加密的工程文件exe、dll等。

Settings->Build Settings 选项 设置输出目标文件夹,点击上方的
按钮即可重新生成新的 exe、dll文件了。

好了,我们来看一下加密混淆后的效果:
原来的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static readonly int A = B * 10;
static readonly int B = 10;
//const int A = B * 10;
//const int B = 10;
public static void Main(string[] args)
{
Person p = new Person();
Console.WriteLine("A is {0},B is {1} ", A, B);
}
}
public class Person
{
static int age;
}
}
经过Dotfuscator混淆加密后,我们使用著名的反编译软件 Reflector 来查看,可以发现函数体内的代码已经看不到了,字符串也变成了乱码,函数名称也不可见了,效果图如下:

【使用Dotfuscator混淆的几个注意点】:
1、如果你加密的dll、exe里有public类,需要被外部引用的话,那么引用这个public的相关dll、exe也要一起放到Dotfuscator Input 里,同时进行混淆加密,不然外部调用出错。
2、如果有public类,但是你不想照着第1点的方式做的话,可以勾选 Library 模式(input 里 展开项目,见下图),或者不选择 rename 选项,仅仅用 control flow 混淆(该种方式下会看见类名、函数名,但是看不到函数体)。

3、如果有public类,但是你也不想按照我的第一点、第二点的方法做的话,可以在rename选项里排除这些public的类名、方法名、属性名即可:使用 rename exclude 里左侧排除项目,或 右侧 正则排除方法,见下图:
当然,软件世界没有不能破解的,但是利用Dotfuscator混淆加密后 至少可以挡住不少新手们!
作者:flymorn
来源:flymorn
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
【转载】C#使用Dotfuscator混淆代码以及加密的更多相关文章
- C#使用Dotfuscator混淆代码以及加密
http://www.cnblogs.com/tianguook/archive/2012/10/06/2713105.html C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进 ...
- 转:C#使用Dotfuscator混淆代码的加密方法
Author:flymorn Source:flymornCategories:C#编程 PostTime:2011-9-16 1:04:49 正 文: C#编写的代码如果不进行一定程度的混淆和加 ...
- C#使用Dotfuscator混淆代码的加密方法
C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进行破解的,特别是对于一些商业用途的C#软件来说,因为盯着的人多,更是极易被攻破.使用VS自带的Dotfuscator可以实现混淆代 ...
- 利用VS自带的dotfuscator混淆代码的学习
对于一些原创的敏感代码,我们可以通过简单的重命名混淆使得别人难以真正理解执行原理.这一点,使用VS自带的dotfuscator即可实现. 如上图所示,你可以自定义选择哪些类被排除重命名,内置的规则中, ...
- Dotfuscator可以实现混淆代码、变量名修改、字符串加密
C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进行破解的,特别是对于一些商业用途的C#软件来说,因为盯着的人多,更是极易被攻破.使用VS自带的Dotfuscator可以实现混淆代 ...
- 使用Dotfuscator 进行.Net代码混淆 代码加密的方法
混淆代码能在一定程度上放置代码被盗用,保护我们的知识产权 1.打开vs2012,选择工具-〉Dotfuscator Software Services 2.选择你需要混淆的DLL 文件,可以多选择 3 ...
- Dotfuscator Professional Edition获取代码发布和混淆代码
1 Dotfuscator Professional Edition 4.9 破解版 下载地址:http://www.pc0359.cn/downinfo/39815.html 备份地址:C:\D\9 ...
- 使用Dotfuscator混淆你的.net程序
简介 众所周知C#等net框架的程序是无法防止反编译的,但可以通过混淆,让反编译出来的代码非常难看. Dotfuscator是微软推荐使用的第三方混淆器,用来保护你的net程序.可以在安装VS的时候顺 ...
- [自动化-脚本]002.cocos2dx-lua lua代码windows加密批处理
在开发软件的时候,我们都会在项目上线时候对代码进行加密,用来防止被不法分子盗走牟利.不同的语言有不同的加密方式,比较出名的有加壳,代码混淆等.在Lua开发cocos2dx的时候,框架会有提供加密的脚本 ...
- 利用android proguard混淆代码
利用android proguard混淆代码 2014-02-05 17:50 1207人阅读 评论(1) 收藏 举报 网上虽然有很多相关博客,不过貌似都不是最新版的..于是百度+谷歌+github上 ...
随机推荐
- Springboot集成阿里云短信
目录 1 前言 2 准备工作 2.1 了解流程 2.2 配置信息 2.3 短信签名和模板 2.3.1 签名 2.3.2 模板 2.3.3 存入数据库 3 SDK 4 集成Springboot 4.1 ...
- Sentinel安装教程【Linux+windows】
一.Sentinel的简介 Sentinel是阿里巴巴出品的一款流控组件,它以流量为切入点,在流量控制.断路.负载保护等多个领域开展工作,保障服务可靠性. 如果你学过netflix公司旗下的Hystr ...
- Git、TortoiseGit中文安装教程,如何注册Gitee账号进行代码提交,上传代码后主页贡献度没显示绿点(详解)
今天给大家分享的是 Git 软件和 TortoiseGit 图形化软件的详细安装教程以及如何在 gitee 上进行代码提交. 首先我也是个刚接触 gitee 的一个小白用户,这些都是自己一边学一边记录 ...
- SDOI2017树点染色
题目链接 发现1操作很像lct中的access,然后它每次染的又是一个新颜色,因此同一个颜色就在同一颗splay里了,且一个点到根的权值val[i]也就是到根路径上虚边的个数,然后看access时会对 ...
- 构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
1.构建SpringBoot项目 大致流程 1.新建工程 2.选择环境配置.jdk版本 3.选择 依赖(可省略.后续要手动在pom文件写) 4.项目名 1.1 图解建立过程 1.2 项目结构 友情提示 ...
- F118校准(一)-- 安装CA310驱动程序及SDK
1. 准备工作 下载Ca310_drv.zip文件并解压,备用. http://www.xk-image.com/download/blog/0001_F118校准/Ca310_drv.zip 准备好 ...
- 6.jmespath表达式
jmespath是json的查询语言 可以从json文档中提取和转换元素,类似于jsonpath的另外一个库 字典取值 # 一层嵌套取值 {a:1,b:2,c:3} ""&qu ...
- NAS数据存储之NFS搭建和使用
NFS是主流异构平台的共享文件系统之一,能够支持在不同类型的系统之间通过网络进行文件共享,允许一个系统在网络上与他人共享目录和文件.NFS传输协议用于服务器和客户机之间的文件访问和共享通信,从而使客户 ...
- 分享几个关于Camera的坑
最近忙于开发一款基于Camera2 API的相机应用,部分功能涉及到广角镜头,因此踩了不少坑,在此与大家分享下以作记录交流... 经过查阅资料发现在安卓上所谓的广角镜头切换其实是用一个逻辑摄像头包含多 ...
- Mysql InnoDB Redo log
一丶什么是redo innodb是以也为单位来管理存储空间的,增删改查的本质都是在访问页面,在innodb真正访问页面之前,需要将其加载到内存中的buffer pool中之后才可以访问,但是在聊事务的 ...