DotFuscator 小记

 最近在做源代码加密保护的任务,第一次接触这方面的东西,主要使用的是Dotfucator和Reflector.有一些心得,和大家交流一下.
      在.net之前,源代码被直接编译为机器码.而在.net环境下,源代码被编译为中间语言(IL),在实际运行的时候,才转换为二进制本地码执行.而中间语言(IL)是很容易被反编译的..NET自己就带着一个查看IL的工具ILDASM. 
      VS2005自带一个保护源代码的工具DotFuscator,是社区版的,只有基本的混淆命名的功能.专业版功能很多,可以混淆流程,加密字符串,加入水印,程序签名等,可惜太贵~..~(好像一个授权要30k),只好找破解版的来学习一下.
      社区版的DotFuscator使用很简单,从VS2005集成开发环境-->工具-->DotFuscator Community Edition,打开后不用注册可以直接使用.在输入选项卡中导入一个dll或者exe文件,在生成选项卡中输入输出目录,直接点击生成即可.想复杂也不成,因为其他的功能基本都是灰的,要专业版才行.
      专业版的可选项多一些,除了可以对名称进行重命名,还可以混淆流,打乱程序原有的结构,但保持逻辑不变.混淆后的代码用Reflector查看,会发现都是一堆goto语句,很难理解.还可以加密字符串,一些敏感信息,例如数据库连接字符串等,如果不加密,很容易被找到并非法利用.也可以在代码中加入水印,如果公司信息,版权标志等.加入水印不会影响程序原有代码的执行.DotFuscator提供一个工具用来查看程序集中的水印premark.exe,可以在DotFuscator的安装目录下找到.也可以对水印进行加密.DotFuscator还可以对程序集进行强名称签名,防止程序集被非法篡改.

      在使用的过程中,有几个疑惑一直没有解决,欢迎大家交流.
      1.如果dll中包含资源文件,那么进行重命名混淆后,用反射的方式无法访问资源,必须在混淆的时候,将资源文件排除在外.
      2.在程序集中加入水印,用premark无法查看该水印.不知道是不是因为破解版的原因?
 
posted @ 2009-12-28 18:14  水木  阅读(684)  评论(0编辑  收藏  举报