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不要选,否则的话,几乎所有的公共函数变量,不会被加密和混淆,可以很容易的看到代码

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

其它不用设置,直接点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不进行重名,以保证页面文件可以访问。

对于说在混淆后,容量会变小.我觉得这不是绝对的,我的容量是变大了

最新文章

  1. HTML 表格
  2. java内存知识
  3. Runtime -----那些被忽略的技能
  4. paper 87:行人检测资源(下)代码数据【转载,以后使用】
  5. forward_list例子
  6. iOS上百度输入法引起的问题
  7. C中位域的使用
  8. [LeetCode] 230. Kth Smallest Element in a BST 解题思路
  9. jQuery插件主要有两种扩展方式
  10. C#实现接口xml序列化与反序列化
  11. Unity 3D Framework Designing(1)—— MVVM 模式的设计和实施(Part 2)
  12. ios ALAssetsLibrary简单的使用
  13. Web移动端适配总结
  14. ccf认证 201709-4 通信网络 java实现
  15. java-js知识库之一——canvas绘制9*9乘法表
  16. MVC+EF(CODEFIRST)+EASYUI医药MIS系统
  17. 关于MySQL 8.0的几个重点【转】
  18. 7、JVM--虚拟机类加载机制
  19. Java实现基于桶式排序思想和计数排序思想实现的基数排序
  20. 提高你开发效率的十五个 Visual Studio 使用技巧

热门文章

  1. 标准web架构分层
  2. Update Statistics用法
  3. SQL几个有点偏的语句
  4. 创建Java线程池
  5. java开发规范总结_代码注释规范
  6. ios专题 - 单例模式的实现
  7. 嵌入式web server——Goahead移植要点
  8. 简单的背包问题(入门)HDU2602 HDU2546 HDU1864
  9. NoSql之Redis使用(一)
  10. winform C#屏幕右下角弹出消息框并自动消失