Rickie Lee's blog

我是Rickie,毕业于上海交大,一直从事.NET平台上相关技术的开发、研究,多年服务于B2C 电子商务领域,包括前台、后台及仓库管理系统的业务流程分析、开发设计与实施。
现在正式加盟 - http://www.entlib.com 协力创建基于.NET的开源电子商务系统。 MSN:rickiechina@hotmail.com -- 欢迎交流!

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  394 随笔 :: 3 文章 :: 1421 评论 :: 129 引用
 

{SmartAssembly} – 混淆你的程序集代码使用向导

  

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 反编译工具根本就无法打开该程序集。

 

4
0
(请您对文章做出评价)
« 上一篇:创业心得和体会(第一篇)-- 献给有创业骚动的朋友
» 下一篇:创业第二个月小结
posted on 2009-11-13 08:53 Rickie 阅读(2350) 评论(25)  编辑 收藏 网摘 所属分类: V.ASP.NET, Y.五花八门

评论

#1楼 2009-11-13 08:59 生鱼片      
不错,收藏了
  回复  引用  查看    

#2楼 2009-11-13 09:03 张少峰      
谢谢楼主分享~
反编译过几个混淆过的程序集,名称没有任何意义,流程无谓的跳来跳去,有的甚至无法还原为c#代码。相当头疼,给我造成了很大困扰。不过怎么说呢,只要愿意花时间去看,最终还是能看明白的。只是原来2个小时能看懂的东西现在要花两天时间去琢磨了。所以我感觉,混淆有点用,但意义不是很大。

  回复  引用  查看    

#3楼 2009-11-13 09:04 游侠_1      
混淆后在某些地方运行不了
  回复  引用  查看    

#4楼 2009-11-13 09:05 青羽      
不错,不错!
  回复  引用  查看    

#5楼 2009-11-13 09:18 wangxm      
字符串不能混淆吗?
  回复  引用  查看    

#6楼 2009-11-13 09:34 Sonven      
记得在哪本书上有说怎么样混淆,但不是用工具,,
  回复  引用  查看    

#7楼 2009-11-13 09:35 三桂      
不错,达到保护程序集的目的即可...
  回复  引用  查看    

#8楼 2009-11-13 09:50 peace      
顶下
  回复  引用  查看    

#9楼[楼主] 2009-11-13 09:55 Rickie      
引用游侠_1:混淆后在某些地方运行不了


还没有遇到这种情况。

我觉得应该不会发生这种情况,否则混淆就失去意义了。

  回复  引用  查看    

#10楼[楼主] 2009-11-13 09:56 Rickie      
引用wangxm:字符串不能混淆吗?


字符串也能混淆。

  回复  引用  查看    

#11楼 2009-11-13 10:24 代码乱了      
Redgate真是强大,居然收购了这个混淆器,还有Reflactor这个鼎鼎有名的反编译器
  回复  引用  查看    

#12楼 2009-11-13 10:42 路人F[未注册用户]
IL也混淆了么??
要不还是可以看到的喔...

  回复  引用    

#13楼[楼主] 2009-11-13 10:53 Rickie      
引用路人F:
IL也混淆了么??
要不还是可以看到的喔...


SmartAssembly 有个选项 --- 看文章中最后一个截图,可以设置Reflector 和 MS IL Disassembler 都无法打开混淆后的程序集。

  回复  引用  查看    

#14楼 2009-11-13 11:12 Anders Liu      
能防止我自己写个程序,逐字节读取exe文件进行分析么。。。。
  回复  引用  查看    

#15楼 2009-11-13 11:23 张亚      
留个脚印。以备后用!
  回复  引用  查看    

#16楼 2009-11-13 11:51 长河落日      
。。。
  回复  引用  查看    

#17楼[楼主] 2009-11-13 12:51 Rickie      
引用Anders Liu:能防止我自己写个程序,逐字节读取exe文件进行分析么。。。。


...... 除了 DELETE,还有其他办法么?

  回复  引用  查看    

#18楼 2009-11-13 13:03 斯克迪亚      
这个没用过,以前都用专业版的Dotfuscator,破坏性混淆之后能阅读但极度吃力,且还原为源代码后无法通过编译。
  回复  引用  查看    

会影响性能吗??
  回复  引用    

雨痕博客上有两篇相关的文章

http://www.rainsts.net/article.asp?id=733
http://www.rainsts.net/article.asp?id=732

  回复  引用    

#21楼 2009-11-13 15:26 阿龍      
如果你写的程序有人盗版,你就偷着乐吧。
  回复  引用  查看    

#22楼[楼主] 2009-11-13 16:11 Rickie      
引用过路瞧一瞧:会影响性能吗??


没有进行分析比较 ---

  回复  引用  查看    

#23楼 2009-11-13 19:00 鹤冲天      
不错,收藏了。
  回复  引用  查看    

#24楼 2009-11-13 22:11 南桥一梦      
收了,谢谢
  回复  引用  查看    

#25楼 2009-11-14 02:09 大石头      
我现在也正在用sa,相当不错!~

BTW,贡献一个下载地址 http://blog.csdn.net/danny_su

  回复  引用  查看