使用Dotfuscator混淆你的.net程序
简介
众所周知C#等net框架的程序是无法防止反编译的,但可以通过混淆,让反编译出来的代码非常难看.
Dotfuscator是微软推荐使用的第三方混淆器,用来保护你的net程序.可以在安装VS的时候顺带安装它,也可以从官网下载到独立安装包.
官网
本文将简单的测试它的效果,并记录测试过程
首先写段代码用来测试
新建个winform工程,添加个定时器,设为100毫秒触发一次:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
//一段注释
private void timer1_Tick(object sender, EventArgs e)
{
var datetime = DateTime.Now;
var strprogress = "";
var second = DateTime.Now.Second;
for (var i = 0; i < second; i++)
{
strprogress += "■";
}
Text = $"当前时间为:{datetime.ToString("HH:mm")} {strprogress}";
}
}//End Class
}
编译出EXE
用ILSpy打开
可以看到,代码除了注释,都是可以反编译出来的.
安装Dotfuscator
在VS安装工具中找到它
如果你用的版本和我一样是VS2017的话,你应该能在安装工具里找到这个:
安装它!
在VS的菜单中找到它
上一步完成后,你将发现这里多了这个:
打开它!
注册试用版
第一次运行Dotfuscator会收集你的信息用来注册试用版,你可以在这填写信息,并获取一个注册码(会发到你的邮箱)
你也可以不填写,也能正常试用Dotfuscator
混淆过程
将编译出来的程序添加进去
左边菜单,点击"输入",将切换到这个界面,点绿色加号,添加文件:
如果添加文件时,界面显示很奇怪,比如添加的文件不显示,可以试试先保存配置,再读取配置.
生成
点击这里,可开始混淆:
输出目录
可以看到输入exe所在的目录多了个文件夹
里面是混淆过的EXE:
查看效果
测试混淆的程序是否可正常运行
尝试反编译
可以看到 已编译的 .NET 应用内的类型、字段、属性、方法和参数名称 被改成了无法从名字认出作用的符号.
由于该软件是收费软件,我使用的只是试用版,如果购买正式版,能开放更强的混淆功能,如"字符串加密"等功能.如果有需要,建议使用正式版.
找一个大点的程序试试
由于上面使用的程序测试代码比较短,看不出多好的效果,我这找了个相对比较大的net程序,来试试:
混淆前的代码:
混淆后的代码
可以看到很多地方简直面目全非,认不出啥是啥了.给修改带来了很大的困难
使用Dotfuscator混淆你的.net程序的更多相关文章
- 转:C#使用Dotfuscator混淆代码的加密方法
Author:flymorn Source:flymornCategories:C#编程 PostTime:2011-9-16 1:04:49 正 文: C#编写的代码如果不进行一定程度的混淆和加 ...
- C#使用Dotfuscator混淆代码以及加密
http://www.cnblogs.com/tianguook/archive/2012/10/06/2713105.html C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进 ...
- 批处理 进行svn代码拉取,vs编译,dotfuscator混淆
Dotfuscator的使用:https://www.cnblogs.com/aitong/p/10684004.html 从拉取代码,编译到最后的混淆步骤很多.这时就可以使用批处理来进行自动化. 用 ...
- 利用VS自带的dotfuscator混淆代码的学习
对于一些原创的敏感代码,我们可以通过简单的重命名混淆使得别人难以真正理解执行原理.这一点,使用VS自带的dotfuscator即可实现. 如上图所示,你可以自定义选择哪些类被排除重命名,内置的规则中, ...
- c# dotfuscator 混淆后无法使用
在实体类中忘记给字段加上 get ;set ;导致编译后程序无法使用. 下面这个(A代码)是可以正常混淆的. public class PhoneUsedStatus { ...
- Dotfuscator混淆加密
混淆加密 1. 需要安装Dotfuscator软件 2. 安装好后打开软件,找到编译好的DLL文件 3. 打开[setting]设置属性,如下图: 把 Disable String Encryptio ...
- C#使用Dotfuscator混淆代码的加密方法
C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进行破解的,特别是对于一些商业用途的C#软件来说,因为盯着的人多,更是极易被攻破.使用VS自带的Dotfuscator可以实现混淆代 ...
- java混淆工具 字符串加密 程序加密 代码逻辑混淆 防止反编译
混淆工具使用文档 ht-confusion-project1.0.0 目 录 1.功能介绍... 1 2.安装说明... 3 2.1Window查询jdk版本(点击开始菜单,输入cmd, 输入java ...
- Dotfuscator可以实现混淆代码、变量名修改、字符串加密
C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进行破解的,特别是对于一些商业用途的C#软件来说,因为盯着的人多,更是极易被攻破.使用VS自带的Dotfuscator可以实现混淆代 ...
随机推荐
- LoadRunner参数化&关联
我们用 HTTP 协议做脚本,要注意的是,不同协议的函数是不一样的,假如换 websocket 协议,关联函数就要用其他的 参数化 原理 1.什么叫参数化 把脚本内一个写死的值,去一个数组内取值,进行 ...
- day 27 网络通信协议 tup udp 下的socket
1.osi七层模型 通信流程 socket(抽象层): 结合上图来看,socket在哪一层呢,我们继续看下图 socket在内的五层通讯流程: 2.TCP/UDP的区别: TCP是以数据流的形式传输, ...
- Java基础语法 第2节 Java语言基本语法
一.标识符和关键字 1.标识符 1)java中标识符用来为程序的白能量.常量.方法.类.接口和包名命名,标识符由字母.数字.下划线.美元符号组成,且第一个字符不能是数字: 2)标志符命名规则:见名知意 ...
- Vue学习入门
1.安装WebStorm: 2.激活WebStorm:https://blog.csdn.net/qq_40147863/article/details/81317709 3.安装全局脚手架:npm ...
- Linux系统如何模拟Http的get或post请求?
一.get请求: 1.使用curl命令: curl “http://www.baidu.com” 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地 curl -i “http://www ...
- 代码问题: 【MatConvNet库编译】
问题1: 老版本的MatConvNet在编译对cuDNN支持的时候,cuDNN的版本是2或者4比较好,官网有明确的描述. 比如我编译用了cuDNN 6.0的版本,在编译 nnconv_cudnn.cu ...
- jmeter ---处理Cookie与Session
有些网站保存信息是使用Cookie,有些则是使用Session.对于这两种方式,JMeter都给予一定的支持. 1.Cookie 添加方式:线程组-配置元件-HTTP Cookie 管理器,如下图: ...
- 使用Docker Compose部署基于Sentinel的高可用Redis集群
使用Docker Compose部署基于Sentinel的高可用Redis集群 https://yq.aliyun.com/articles/57953 Docker系列之(五):使用Docker C ...
- SpringBoot Laravel(artisan serve) MIXPHP简单性能测试
测试条件: CPU: 2C 4T 2.8GHZ MEM: 8G DISK: 512GB SSD OS: OS X 10.11.6 测试指令 ab -n 2000 -c 10 测试表现 MIXPHP R ...
- 【转】python文件和目录操作方法大全(含实例)
python文件和目录操作方法大全(含实例) 这篇文章主要介绍了python文件和目录的操作方法,简明总结了文件和目录操作中常用的模块.方法,并列举了一个综合实例,需要的朋友可以参考下一.python ...