我们在使用C#编程的过程中,经常会用Reflector这款软件去看看底层实现的一些代码,也可以用这款软件去反编译别人写的一些C#程序。如果是我们自己写了一个小程序,又不想让别人反编译看到里面的实现,那我们该怎么做呢?
visual studio里面集成了一个dotfuscator社区版的小工具,通常能实现简单的混淆功能。
今天我介绍另一款强大的混淆软件 - Smartassembly,这款软件同属于Reflector的开发商Redgate(http://www.smartassembly.com) ,功能超级强大。
1. 启动 Smartassembly,进入主界面,点击Create a new project 按钮,创建一个新的项目。
2. 点击Browse Assembly,选择需要混淆的主程序集,可以为Windows Forms application、WPF application、Console application、Silverlight application、Class library、.NET web service、Windows service、Asp.NET web application(包括asp.net MVC)。其实就是支持所有跑在.net framework上面的程序集
3.设置混淆后存储路径
4.注意这里提示我的程序集使用了强名
5.我们通过这一项对我们的程序集进行签名,选择程序中签名用的Key,然后输入密码。如果成功会发现第四步的黄色提示消失,下面的单选框是添加篡改保护,防止别人篡改。
6.自动化错误报告
7.功能使用情况报告
8.将选中的类库合并到主程序集中,这样在发布的时候,只需要发布主程序即可
9.嵌入依赖关系,但不进行混淆,在第一次执行時解压还原,能減少部署檔案數目。好处是简化部署和维护,
10.精简代码,将从程序集中删除一些没有用的元数据,例如属性、事件、方法等
11. 混淆代码,将类、方法名、属性、字段混淆。因为我用到Code First,不能混淆数据库实体类。点击Exclusions…把不需要混淆的类取消就可以了
13.使用动态代理
14.字符串编码
15.反编译保护
16.其他配置,
17.生成调试信息
18.保存当前工程,并执行编译
最后打开Reflector看下最终混淆的效果,
你会了吗?
作者:Jesse Yang