孰不知再好的盾也有茅可以刺破一样,世界上很多nb的软件用了好多nb的防破解技术,结果还是被强大的黑客一一攻破,那对于我们这样的小程序员或小公司来说,既然nb的技术没有用,我们也没有那nb的防破解技术,何不如化有形为无形,不去用技术问题解决软件的防破解。
个人总结:软件防破解其实不是技术问题,而是一个社会工程学问题。
现在就给大家几条在开发软件的过程中几招百试不爽的软件防破解技巧,这些非技术的技巧实现起来很容易,但是防破解的效果是大大的。以我的软件为例
1、试用版就是试用版
我前几年开发过一款叫做网络信息采集专家的软件,分为正式版和试用版,这个软件最主要的目的就是采集数据,试用版和正式版的区别就在于试用版不能保存采集下来的数据。在这种情况下,很多做软件产品的程序员,在软件里区别正式版和试用版就仅仅是靠注册码验证而已,这种情况下,只要试用版被破解,那正式版就到手了,而我做的时候思路就是,正式版不提供公开下载,只有用户付费后才提供下载地址,公开发布的试用版里彻底不放提供保存数据的代码,造成的结果是,很多破解者得到试用版后就破解,令他们高兴的是,软件很容易破解(我的加密算法本身就不想写得太复杂),但令他们沮丧的是,破解成功后,试用版还是试用版,改有的功能还是没有。这个招式适合软件使用量不是特别大的用户,依我的看法,95%的软件使用量都不算大,所以这招其实大家皆可用之。
2、开发“破解版”
呵呵,大家是不是不理解这一点,以为我打错了呢,对,没错,就是自己制作自己软件的破解版,在软件正式版发布后,你可以同时制作一个假的“破解版”,也就是从软件表面上让大家认为这是个破解版,实际上用了一小段时间后,就发现这个破解版是不可用的,或不好用的,这个时候你的“破解版”再适时弹出“破解失效,请到××处购买正式版”等宣传话语。然后你把这个假的破解版找几个有明的破解站上传,这个时候真的破解版还没出假的破解版就已经满天飞了,这样的情况下大多数用户都不可能下载到真的破解版,并且上了你的当用了假的破解版后,定会对破解版大失所望,认为网上流传的破解版都不可用,这样就更有可能购买你的正式版软件。
3、让简单的算法不简单
你可能用来以防止破解的算法比较简单,但这并意味着你就不能有效的阻止破解,我们照样可以用简单的算法把破解者弄奔溃掉,我的软件用了5种破解算法,每种算法都不是很复杂,估计单个破的话也就10来分钟的事情,但我的做法是没有将所有算法全部用于同一时间同一处进行注册码的验证,而是分散到软件的不同功能,不同时间来验证,有的是软件启动,有的是点某个按钮的时候,有的是当时间达到某个条件的时候,破解者往往是把软件启动时候的验证给破掉,但是他在使用过程中又会经常随机的遇到很多验证失败的提示,而且这些过程随机,可能除了作者,没人知道这背后有多少处验证,这些验证又是什么时候触发,所以这种做法能让破解者抓狂的说。另外很多破解者仅仅是为了破解而破解,自己本身又不用被破解的软件,往往是启动阶段的验证一破解掉,就认为大功告成的开始发布“成功”破解版。
4、联网验证
如果你的软件是基于互联网提供服务的,你可以在软件中写一段代码到你的网络数据库中取信息,取到这些信息软件才可正常使用,当然这些数据必须是软件必须的,而且是不可伪造的,否则破解者把你联网验证的这段代码给爆破掉照样可以正确破解。
5、服务为本
尽量让你的软件提供的是一种服务,而不是某项技术本身,如果仅仅是某项技术,软件一被破解,用户拿到破解版的软件就不再需要你了;如果是服务,即使用户得到了可用的破解版,他可能还是需要转而寻求你获得技术支持,通过这种策略也可以避免破解带来的巨大损失。
好,就写这么多,这些办法一用上破解者就很难破解你的软件了,而且你完成这些工作也不需要太多时间,更不需要money,以我的网络信息采集专家为例,从2003年发布至今,我还没有遇到过真正的破解版,倒是经常看到一些破解论坛上对于我软件的破解感到非常困惑,无技可施。