技术开发 频道

.NET核心代码保护策略:隐藏核心程序集

  【IT168 技术】这次写点有实际意义的,说说我是怎么保护我的代码的,个人心得,如有不妥的地方请见谅。

  我们都知道.NET的代码容易被反编译出来,站在破解者的角度来看,破解一个软件情况可分为几种:

  1.修改注册验证的代码,达到绕过注册的效果;

  2.破解出注册核心算法,写出注册机;

  3.完全复制代码,做成一个可编译修改的项目;

  从危害是上来看,第三种是最严重的,如果你的软件被实力更强的竞争对手复制了,那简直是毁灭性的打击,理论上.NET没有什么软件是不能破解复制的,只要有高手死了心要破你的软件,保护再好也是无意义的,那时只能认命,当然一般高手也不屑于破解一些没意义的东西。我们虽然做不到完全保护代码,但是我们可以增加他们的破解难度,防不了高手,至少我们要防住像我这种普通的程序员,不能随便什么阿猫阿狗都能染指我们的代码,这简直是对程序员智商的侮辱嘛。

  一般我们保护软件的几个重要过程:

  1.设计机器码;

  2.根据机器码生成注册码;

  3.验证注册码(本地+远程验证);

  4.给程序集加强命名;

  5.对程序集进行代码混淆;

  当然这么多步骤一次性也说不完,当前我主要就说说怎么隐藏自己的核心程序集,也就是.DLL动态库。我们平时写项目的时候,里面肯定会有各种各样的动态库出现,当我们编译的时候都会有一个*.DLL的动态库出现,DLL里包含了许多元数据,这就很容易被人用反编译软件完全看到里面的代码,所以隐藏程序集就很重要了,思路是:把程序集存入内存中,到该用的时候才会去用它,这样反编译软件就不能轻易的看到我们的代码了,但是一个比较大的项目,把全部程序集存入内存是不现实的,我们只能把几个比较核心的程序集,如注册验证过程,登陆过程,核心算法过程等隐藏,由于你隐藏了一些重要的程序集,一些人就算得到了你的其他代码,想要软件正确运行还是需要很大的工夫的。

  花了一点时间写了一个隐藏程序集的的小DEMO,如下图:

.NET核心代码保护策略:隐藏核心程序集

.NET核心代码保护策略:隐藏核心程序集

0
相关文章