dotfuscator使用方法

转载自:http://hi.baidu.com/free3people/item/0fba87d34091df15d80e4400
web


转载自:http://hi.baidu.com/free3people/item/0fba87d34091df15d80e4400安全

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).aspxui

用法一 使用默认混淆加密

打开软件点击input选项卡,把dll或exe添加,Libray不要选,不然的话,几乎全部的公共函数变量,不会被加密和混淆,能够很容易的看到代码spa

 

点击build选项卡,在目标目录(destination directory)选取你想把dll生成到的位置,如F盘:/混淆目录.net

其它不用设置,直接点build,会有提示是否要保存项目。点击否

 

生成的dll,再用.net Reflector 进行反编译,看一下。

 

看到的结果是,类名重命名,方法名重命名 全都变成a,b,c

这种方法有个缺点,对于三层架构来讲,他的dal层语句仍是有在。比较容易看懂。

用法二 自定义混淆,类名,方法名不变。

可是方法里面的内容变成只有一句 // This item is obfuscated and can not be translated.

打开软件点击input选项卡,把dll或exe添加

 

在options的选项中,这是全局配置选项:
把 Disable String Encryption 设为 NO,即启用字符串加密;检查 Disable Control flow、Dsiable Renaming为NO,即保证控制流和混淆功能打开,其余默认 

 

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

 

点击build选项卡,在目标目录(destination directory)选取你想把dll生成到的位置,如F盘:/混淆目录

其它不用设置,直接点build,会有提示是否要保存项目。点击否

生成的dll再用.net Reflector 进行反编译,看一下。

 

能够发现函数体内的代码已经看不到了,提示:“  This item is obfuscated and can not be translated.”;字符串也变成了乱码,函数名称也不可见了

 

看起来是比较强大。可是有个缺点。由于dll是须要被web程序调用的,web的程序调用的方法,以前是使用类名,及方法名的。因此推荐不要作rename这步骤。

也就是在Options选项时,Dsiable Renaming设置为NO.而Rename里面就不要去设置了

 

DotFuscator其特色是混淆,一个很重要的方面是重命名。然而重命名又致使没法引用的问题。

这要求须要对几个DLL 同时混淆,对于WEB 来讲,页面cs能够发布成一个DLL,将全部层的DLL一块儿混淆,能够解决不少问题。这里对WEB DLL不进行重名,以保证页面文件能够访问。

对于说在混淆后,容量会变小.我以为这不是绝对的,个人容量是变大了


如下属于本做者:

经测以后,我以为仍是能起到必定的防止菜鸟级别,可是真的要认真看起来,那也是很容易看懂的。

还有一点就是一些本身写的类,已经对象名,方法是没法更换名字,因此仍是不安全,特别是最重要的都没有作到。

相关文章
相关标签/搜索