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

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

转自:http://www.cnblogs.com/rickie/archive/2009/11/13/1602239.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 反编译工具根本就无法打开该程序集。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.NET代码混淆是一种保护代码的技术,它能够使代码难以被反编译或者逆向工程攻击者分析。本文将介绍.NET代码混淆的实践,包括如何选择混淆器、如何配置混淆选项、如何处理混淆后的代码等。 ## 选择混淆器 .NET代码混淆器有很多种,常见的包括Dotfuscator、Eazfuscator.NET、CodeFort、SmartAssembly等。在选择混淆器时,需要考虑以下因素: - 混淆器的稳定性和可靠性; - 混淆器的安全性,即是否会泄露敏感信息; - 混淆器的性能,即混淆时间和代码运行性能的影响; - 混淆器所提供的混淆选项和功能; - 混淆器的价格和许可证限制等。 一般来说,商业混淆器提供的混淆选项和功能更加丰富,而免费混淆器则相对简单。如果需要使用商业混淆器,可以在官方网站上下载试用版进行测试,以确定是否符合需求。 ## 配置混淆选项 混淆器提供了丰富的混淆选项和配置项,需要根据具体需求进行选择和配置。常见的混淆选项包括: - 重命名:将代码中的类、方法、字段、属性等标识符进行随机重命名,增加反编译和逆向工程攻击者的难度; - 混淆控制流:通过插入无用代码、交换代码块、使用goto语句等方式,使代码的控制流变得难以理解,增加攻击者的难度; - 字符串加密:将代码中的字符串进行加密,避免明文字符串被攻击者直接获取; - 资源加密:将代码中的资源文件进行加密,避免明文资源文件被攻击者直接获取; - 防调试:通过检测调试器状态、修改IL代码等方式,防止被调试和破解; - 异常处理:通过修改异常处理代码,使得反编译和逆向工程攻击者难以理解代码的异常处理逻辑。 需要注意的是,混淆器提供的混淆选项可能会影响代码的运行性能和稳定性,需要进行适当的测试和调整。 ## 处理混淆后的代码 混淆器处理完代码后,会生成一份混淆后的程序文件,需要进行一些处理才能使用。常见的处理方式包括: - 反混淆:如果需要对混淆后的代码进行调试和修改,可以使用混淆工具将代码还原成原始代码; - 引用修复:由于混淆器可能会修改代码中的类型和命名空间,因此在使用混淆后的程序时可能会出现引用丢失的情况,需要使用引用修复工具修复; - 驱动签名:如果使用混淆后的程序进行驱动开发,需要对程序进行数字签名,以避免Windows操作系统拒绝加载未签名的驱动程序。 需要注意的是,在处理混淆后的代码时,需要保证处理的工具和方法与混淆器兼容,否则可能会导致代码无法正常运行。 ## 结论 .NET代码混淆是一种保护代码的技术,可以有效地防止反编译和逆向工程攻击。在实践中,需要选择合适的混淆器、配置适当的混淆选项和处理混淆后的代码,才能达到最佳的保护效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值