原文 http://www.cnblogs.com/hsapphire/archive/2010/09/21/1832758.html

smartassembly 提供了一种用于优化和混淆你的 .net 程序集,保护你的作品和软件,减小分发包的大小,提高程序性能。visual studio 2003/2005/2008 都集成了一个dotfuscator 社区版的小工具,功能很简单,使用也比较方便,具体操作可参考如下的文章:visual studio 2008 中dotfuscator的使用

这里,演示smartassembly 混淆工具的使用,该工具功能比较强(http://www.smartassembly.com ),已经被redgate收购了,感爱好的朋友可以去下载。下面介绍具体的操作过程。

1. 启动smartassembly 应用程序,进入主界面,点击new project 按钮,创建一个新的项目。

2. 选择需要改进和保护的主程序集,可以为windows forms 应用程序、wpf应用程序、console 控制台程序、dll程序集、asp.net web 应用程序等等。

这里,我具体演示如何对一个asp.net web 应用进行保护。点击 browse assembly 按钮,选择web 应用程序编译完成的程序集。

3. 在选择好主程序集后,然后回到smartassembly程序界面,如下图所示。设置经过smartassembly处理之后的程序集存放的位置。通过点击set destination 按钮,进行设置。

4. 下面逐一设置smartassembly的程序参数。第一个是dependencies merging,设置主程序集依靠的其他相关程序集。

对于本范例而言,选择依靠的biz / dac / entity / common 四个依靠程序集。比较神奇的是,这些依靠的程序集会合并到主程序集中,这样在发布的时候,只需要发布主程序即可,依靠程序集都不需要一起发布了。

另外,建议不要选择第三方的程序集,如下图所示,我们不需要选择 enterprise library 相关的程序集。这样,在发布应用程序时,则需要保护第三方的程序集。

5. pruning 精简代码,这一步将从程序集中删除一些没有用的代码和元数据。smartassembly将检查程序集中的代码,自动判定哪些代码是有用的,哪些代码是从 不会执行到的。同时,也将移除没有用的元数据。并可以分别选择对主程序集和依靠的程序集进行精简代码操作。

这里,我没有选择任何程序集。有爱好的朋友,可以试试。

6. obfuscation 混淆代码

混淆代码是保护你的程序集最重要的方法。它将类和方法的名称更改为不可读的字符,但不会改变代码的功能,达到保护代码的目的。同时,也可以减少元数据,减小程序集的大小。

这里,我选择主程序集和所有依靠的程序集进行混淆,如下图所示。

下面还有types/methods 名称以及fields名称的混淆设置,这里保持默认值。

后面还有很多其他的选项,这里就逐一解释了,有爱好的朋友可以自己看看。上述的这些设置,已经足以对发布的应用程序代码进行保护了。

7. build 输出混淆后的程序集

点击build 按钮,就输出混淆后的程序集了,并且所有依靠的程序集都合并在一起了,这样在发布的时候,只需要发布合并后的一个程序集和第三方的程序集了。另外,你还可以看看混淆/合并后程序集的大小肯定有变小。

csdn 上有smartassembly 最新版的破解版本,可以下载下来试用一下,或者直接到smartassembly官方网站下载一个评估版本试试。

最后,在reflector 中看看反编译的效果。呵呵,这下反编译代码就头大了。

在smartassembly设置中,有个other protections 的选项,你可以选择在添加一些错误的metadata stream,如下图所示,这样在使用reflector 反编译工具根本就无法打开该程序集。

作者:水木    
 

smartassembly 使用指南的更多相关文章

  1. 混淆-SmartAssembly

    SmartAssembly 7 documentation:https://documentation.red-gate.com/sa SmartAssembly7.2版本下载链接: https:// ...

  2. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  3. UE4新手之编程指南

    虚幻引擎4为程序员提供了两套工具集,可共同使用来加速开发的工作流程. 新的游戏类.Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且在使用Visual Studio 或 ...

  4. JavaScript权威指南 - 对象

    JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删. JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等. JavaScript对象除了可以保持自 ...

  5. JavaScript权威指南 - 数组

    JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...

  6. const extern static 终极指南

    const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...

  7. Atitit.研发管理软件公司的软资产列表指南

    Atitit.研发管理软件公司的软资产列表指南 1. Isv模型下的软资产1 2. 实现层面implet1 3. 规范spec层1 4. 法则定律等val层的总结2 1. Isv模型下的软资产 Sof ...

  8. HA 高可用软件系统保养指南

    又过了一年 618,六月是公司一年一度的大促月,一般提前一个月各系统就会减少需求和功能的开发,转而更多去关注系统可用性.稳定性和管控性等方面的非功能需求.大促前的准备工作一般叫作「备战」,可以把线上运 ...

  9. 第六代智能英特尔® 酷睿™ 处理器图形 API 开发人员指南

    欢迎查看第六代智能英特尔® 酷睿™ 处理器图形 API 开发人员指南,该处理器可为开发人员和最终用户提供领先的 CPU 和图形性能增强.各种新特性和功能以及显著提高的性能. 本指南旨在帮助软件开发人员 ...

随机推荐

  1. logstash 处理tomcat access报ArgumentError: comparison of String with 5 failed

    <pre name="code" class="html"> 10.168.102.19 - - [22/Sep/2016:20:35:11 +08 ...

  2. java开发经验分享(一)

    一. 编码 1. 约束自己,规范编码习惯 充足的代码注释.标准缩进的格式.注意命名规范.参考<开发管理规范> "看上去"专业能促进代码质量.越是难看的代码,在它的演化过 ...

  3. Raid1源代码分析--读流程

    这篇博文不足之处较多,重新整理了一下,链接:http://www.cnblogs.com/fangpei/p/3890873.html 我阅读的代码的linux内核版本是2.6.32.61.刚进实验室 ...

  4. 新闻:型牌男装:网上订服装,如何将返修率降到5个点以下 | IT桔子

    新闻:型牌男装:网上订服装,如何将返修率降到5个点以下 | IT桔子 型牌男装:网上订服装,如何将返修率降到5个点以下

  5. Bubble Sort 冒泡排序

    //Bubble Sort ( O(n²)) public class TestBubbleSort { public int[] bubbleSortArray(int[] arr){ ; i &l ...

  6. JAVA中运用数组的四种排序方法

    JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法. 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现. 冒泡法是运用遍历数组进 ...

  7. (转载)iOS Framework: Introducing MKNetworkKit

    This article is available in Serbo-Croatian,  Japanese and German. (Translations in Serbo-Croatian b ...

  8. BNU10806:请在此处签到

    每年圣诞,ZUN都会邀请很多人到幻想乡举行联欢,今年也不例外.在联欢前,所有人需要在自己的昵称旁签到(签全名),以示出席.然后ZUN 会把大家的签到表保存下来作为纪念,以激励来年努力工作.   昵称: ...

  9. Android 自定义UI--指南针

    有了之前的基础,下面开始实现一个简单的指南针.首先来看一下效果图, 我们可以粗略将这个指南针分为三个部分,一是圆形背景,二是刻度,三是文本.那么在写代码的时候,就可以声明三个Paint画笔来画以上三个 ...

  10. (转)关于font-size:100%

    重设浏览器默认字体大小 h1,h2,h3,h4,h5,h6 {font-size:100%;font-weight:normal;} 假如你设置body{font-size:12px;} 但h1是不会 ...