前一阵子给朋友写了一个程序,朋友交代需要必要的加密,防止代码外泄。查阅了.NET的相关资料,似乎对程序集文件的保护比较成熟,比如密钥机制。但是我只是想保护我的源代码不被泄露,如何做到呢?这在Java中也是同样的头疼。
       据我个人了解,可以有如下几种方式做到:
1.手工混淆代码
   用超烂的可读性使偷窃者头晕,用各种分拆的方法使阅读者找不到头绪。但是这样的方法毕竟是源码级加密,现在用工具都可以分析并自动整理出可读性好的代码。
2.隐藏自己
也就是常说的加壳,这在各种外挂程序中比较常见。关于加壳,网上材料很多,也有很多非常强大的加壳程序,给破解造成很大难度。
3.加密混淆
这种比较常用,也是一些第三方开发商的出发点。如果你要做自己的加密混淆器,需要了解中间语言和编译运行机制。
4.编译成非托管代码
这招最绝,有几个人能破解非托管代码呢?但这对开发者有比较高的技术要求。
 
当然了,我们总是希望用最简单的方式达到我们的目的,那就选用针对.net的混淆或者加密工具软件好了。有兴趣的朋友可以自己找找吧,我就不给他们打广告了。
 
但是,我还是希望微软自己能解决这个问题。vs开发工具自带一个混淆器,但是感觉混淆功能比较弱,仅仅对命名混淆,代码几乎都是暴露的。不知道微软为什么把中间代码暴露出来,学开源也要讲究方式嘛~~~