dotfuscator使用方法
2016-03-25 14:09
323 查看
dotfuscator如何对.net程序进行混淆保护对于程序代码的保护,网上有很多资料,有的说混淆,有的说加密,我比较支持混淆的方法,这样可以让反编译劳工,头晕一阵子,哈哈开玩笑。对于加密如果不是不得已,我想没有必要。加密性能消耗比较大。
dotfuscator相信做程序的人很多都知道,dotfuscator与XenoCode都是代码混淆工具,做为保护代码安全的一个工具。既然说到.net的程序,那当然要扯扯dotfuscator,都同属微软的产品,兼容性绝对是天生一对。
闲话不多说,说最直接的东西,最实用东西。
下面来说说dotfuscator的用法,我用的是Dotfuscator Professional Edition 4.2版,Dotfuscator的版本有多好,具体请看微软官方说明
http://msdn.microsoft.com/zh-cn/library/ms227255(v=VS.80).aspx
用法一 使用默认混淆
打开软件点击input选项卡,把dll或exe添加,Libray不要选,否则的话,几乎所有的公共函数变量,不会被加密和混淆,可以很容易的看到代码
![](http://images.cnitblog.com/i/343919/201406/231411130644316.jpg)
点击build选项卡,在目标目录(destination directory)选取你想把dll生成到的位置,如F盘:/混淆目录
其它不用设置,直接点build,会有提示是否要保存项目。点击否
![](http://images.cnitblog.com/i/343919/201406/231411257679996.jpg)
生成的dll,再用.net Reflector 进行反编译,看一下。
![](http://images.cnitblog.com/i/343919/201406/231411359081761.jpg)
看到的结果是,类名重命名,方法名重命名 全都变成a,b,c
这种方法有个缺点,对于三层架构来说,他的dal层语句还是有在。比较容易看懂。
用法二 自定义混淆,类名,方法名不变。
但是方法里面的内容变成只有一句 // This item is obfuscated and can not be translated.
打开软件点击input选项卡,把dll或exe添加
![](http://images.cnitblog.com/i/343919/201406/231411440808423.jpg)
在options的选项中,这是全局配置选项:
把 Disable String Encryption 设为 NO,即启用字符串加密;检查 Disable Control flow、Dsiable Renaming为NO,即保证控制流和混淆功能打开,其他默认
![](http://images.cnitblog.com/i/343919/201406/231411507527530.jpg)
Rename 选项勾选“use enhanced overload induction”(使用增强模式),注意:不要勾选下方的“ Do not suppress on serializable types”,即序列化类型的变量不加密,否则编译后可能异常; “Renaming Scheme” 选择“Unprintable”(不可打印字符,即乱码),也可以选择其他如小写字母、大写字符、数字的方式。
![](http://images.cnitblog.com/i/343919/201406/231411587054192.jpg)
点击build选项卡,在目标目录(destination directory)选取你想把dll生成到的位置,如F盘:/混淆目录
其它不用设置,直接点build,会有提示是否要保存项目。点击否
![](http://images.cnitblog.com/i/343919/201406/231412127998332.jpg)
生成的dll再用.net Reflector 进行反编译,看一下。
![](http://images.cnitblog.com/i/343919/201406/231412189714651.jpg)
可以发现函数体内的代码已经看不到了,提示:“ This item is obfuscated and can not be translated.”;字符串也变成了乱码,函数名称也不可见了
看起来是比较强大。但是有个缺点。因为dll是需要被web程序调用的,web的程序调用的方法,之前是使用类名,及方法名的。所以推荐不要做rename这步骤。
也就是在Options选项时,Dsiable Renaming设置为NO.而Rename里面就不要去设置了
![](http://images.cnitblog.com/i/343919/201406/231412259249841.jpg)
DotFuscator其特点是混淆,一个很重要的方面是重命名。然而重命名又导致无法引用的问题。
这要求需要对几个DLL 同时混淆,对于WEB 来说,页面cs可以发布成一个DLL,将所有层的DLL一起混淆,可以解决很多问题。这里对WEB DLL不进行重名,以保证页面文件可以访问。
对于说在[b]混淆后,容量会变小.我觉得这不是绝对的,我的容量是变大了[/b]
dotfuscator相信做程序的人很多都知道,dotfuscator与XenoCode都是代码混淆工具,做为保护代码安全的一个工具。既然说到.net的程序,那当然要扯扯dotfuscator,都同属微软的产品,兼容性绝对是天生一对。
闲话不多说,说最直接的东西,最实用东西。
下面来说说dotfuscator的用法,我用的是Dotfuscator Professional Edition 4.2版,Dotfuscator的版本有多好,具体请看微软官方说明
http://msdn.microsoft.com/zh-cn/library/ms227255(v=VS.80).aspx
用法一 使用默认混淆
打开软件点击input选项卡,把dll或exe添加,Libray不要选,否则的话,几乎所有的公共函数变量,不会被加密和混淆,可以很容易的看到代码
![](http://images.cnitblog.com/i/343919/201406/231411130644316.jpg)
点击build选项卡,在目标目录(destination directory)选取你想把dll生成到的位置,如F盘:/混淆目录
其它不用设置,直接点build,会有提示是否要保存项目。点击否
![](http://images.cnitblog.com/i/343919/201406/231411257679996.jpg)
生成的dll,再用.net Reflector 进行反编译,看一下。
![](http://images.cnitblog.com/i/343919/201406/231411359081761.jpg)
看到的结果是,类名重命名,方法名重命名 全都变成a,b,c
这种方法有个缺点,对于三层架构来说,他的dal层语句还是有在。比较容易看懂。
用法二 自定义混淆,类名,方法名不变。
但是方法里面的内容变成只有一句 // This item is obfuscated and can not be translated.
打开软件点击input选项卡,把dll或exe添加
![](http://images.cnitblog.com/i/343919/201406/231411440808423.jpg)
在options的选项中,这是全局配置选项:
把 Disable String Encryption 设为 NO,即启用字符串加密;检查 Disable Control flow、Dsiable Renaming为NO,即保证控制流和混淆功能打开,其他默认
![](http://images.cnitblog.com/i/343919/201406/231411507527530.jpg)
Rename 选项勾选“use enhanced overload induction”(使用增强模式),注意:不要勾选下方的“ Do not suppress on serializable types”,即序列化类型的变量不加密,否则编译后可能异常; “Renaming Scheme” 选择“Unprintable”(不可打印字符,即乱码),也可以选择其他如小写字母、大写字符、数字的方式。
![](http://images.cnitblog.com/i/343919/201406/231411587054192.jpg)
点击build选项卡,在目标目录(destination directory)选取你想把dll生成到的位置,如F盘:/混淆目录
其它不用设置,直接点build,会有提示是否要保存项目。点击否
![](http://images.cnitblog.com/i/343919/201406/231412127998332.jpg)
生成的dll再用.net Reflector 进行反编译,看一下。
![](http://images.cnitblog.com/i/343919/201406/231412189714651.jpg)
可以发现函数体内的代码已经看不到了,提示:“ This item is obfuscated and can not be translated.”;字符串也变成了乱码,函数名称也不可见了
看起来是比较强大。但是有个缺点。因为dll是需要被web程序调用的,web的程序调用的方法,之前是使用类名,及方法名的。所以推荐不要做rename这步骤。
也就是在Options选项时,Dsiable Renaming设置为NO.而Rename里面就不要去设置了
![](http://images.cnitblog.com/i/343919/201406/231412259249841.jpg)
DotFuscator其特点是混淆,一个很重要的方面是重命名。然而重命名又导致无法引用的问题。
这要求需要对几个DLL 同时混淆,对于WEB 来说,页面cs可以发布成一个DLL,将所有层的DLL一起混淆,可以解决很多问题。这里对WEB DLL不进行重名,以保证页面文件可以访问。
对于说在[b]混淆后,容量会变小.我觉得这不是绝对的,我的容量是变大了[/b]
相关文章推荐
- 防火墙查看与设置
- 改序列号最大值
- rem布局--移动端页面自适应解决方案
- 搞了一上午的websocket,最后启动的时候发现websocket无法连接到服务器
- html中的块元素(Block)和内联元素(Inline)(转)
- 两种语言之间如何衔接 web开发之php mysql
- Linux CentOS6.5下编译安装MySQL 5.6.16【给力详细教程】
- 实验一 命令解释程序的编写
- 10大H5前端框架,让你开发不愁
- 40个Java多线程问题总结
- Python中如何把程序放到后台执行
- android studio的第一行代码
- Java关键字final、static使用总结
- ASP.NET 按规定尺寸缩放图片
- 改序列号增幅
- iOS UILabel 使用姿势大全(标红关键字)
- 搭建Windows Network Load Balance环境无法 Add Host To Cluster的解决方案
- C++ 实现对计算机服务的一系列操作
- Android内存优化图片二次采样
- 设置图片的背景色