smartassembly 使用指南
原文 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 使用指南的更多相关文章
- 混淆-SmartAssembly
SmartAssembly 7 documentation:https://documentation.red-gate.com/sa SmartAssembly7.2版本下载链接: https:// ...
- JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...
- UE4新手之编程指南
虚幻引擎4为程序员提供了两套工具集,可共同使用来加速开发的工作流程. 新的游戏类.Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且在使用Visual Studio 或 ...
- JavaScript权威指南 - 对象
JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删. JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等. JavaScript对象除了可以保持自 ...
- JavaScript权威指南 - 数组
JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...
- const extern static 终极指南
const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...
- Atitit.研发管理软件公司的软资产列表指南
Atitit.研发管理软件公司的软资产列表指南 1. Isv模型下的软资产1 2. 实现层面implet1 3. 规范spec层1 4. 法则定律等val层的总结2 1. Isv模型下的软资产 Sof ...
- HA 高可用软件系统保养指南
又过了一年 618,六月是公司一年一度的大促月,一般提前一个月各系统就会减少需求和功能的开发,转而更多去关注系统可用性.稳定性和管控性等方面的非功能需求.大促前的准备工作一般叫作「备战」,可以把线上运 ...
- 第六代智能英特尔® 酷睿™ 处理器图形 API 开发人员指南
欢迎查看第六代智能英特尔® 酷睿™ 处理器图形 API 开发人员指南,该处理器可为开发人员和最终用户提供领先的 CPU 和图形性能增强.各种新特性和功能以及显著提高的性能. 本指南旨在帮助软件开发人员 ...
随机推荐
- iptables 添加,删除,查看,修改
iptables是linux系统自带的防火墙,功能强大,学习起来需要一段时间,下面是一些习iptables的时候的记录.如果iptables不熟悉的话可以用apf,是一款基于iptables的防火 ...
- linux 命令后台执行
我想把updatedb命令(用于重新建立整盘索引的命令)放在后台运行.因为我不想眼睁睁的看着机器建立索引,我还想编会儿程序呢: # updatedb & [1] 23336 注释:在所要执行的 ...
- TranslateAnimation详解
TranslateAnimation详解 Android JDK为我们提供了4种动画效果,分别是: AlphaAnimation,RotateAnimation, ScaleAnimation, Tr ...
- 【转】win7与ubuntu双系统,删除ubuntu后,启动错误error:no such partition grub rescue的修复--不错
原文网址:http://blog.sina.com.cn/s/blog_541900d50101eu9r.html win7于ubuntu双系统,进入windows后直接格式化硬盘分区将ubuntu删 ...
- android ListView用法介绍
ListView在Android开发中是比较常用的组件,它是以列表的形式展示内容,并且还可以处理用户的选择与点击等操作: LIstView显示数据一般需要三方面: (1)ListView组件:用来展示 ...
- vbox下centos安装增加功能失败
一般都是:unable to find the sources of your current Linux kernel. 先尝试这个吧:yum install kernel kernel-heade ...
- 文件夹65ad47d7-2e27-4a5c-b238-26643fdaeb98
这几天发现电脑中毒了,本地开的服务预览页面时,页面会被插入Html代码.我用360扫描之后发现有木马病毒(c:\programData有个65ad47d7-2e27-4a5c-b238-26643fd ...
- Vue + vue-router
搞了一天的element-ui,vue-router,把侧栏的导航菜单搞了出来后,试着在菜单上加入链接,研究了下官方提供的文档,发现要使用vue-route. 在项目中安装好vue-route, 对照 ...
- android设备之间屏幕共享
近期公司在开发一款android的设备把屏幕投射到手机上.同一时候手机还能够触控.键盘操作.这样.就达到了屏幕共享的目的. 思考了一下.主要思路: 1.将截图所获取的位图用ffmpeg编码成视频流. ...
- 杭电 HDU ACM Milk
Milk Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...