软件如何防破解

          有矛就有盾,再好的盾也有茅可以刺破一样,世界上很多nb的软件用了好多nb的防破解技术,结果还是被强大的破解爱好者一一攻破,如微软操作系统,OFFICE系列还不是出一款被破一款么?对于软件开发者,要对自己开发出的软件要做到绝对安全是比较困难的。

         经过多年来从事软件加密及破解,单纯从技术角度很难彻底的防止破解,一心研究那些防破解技术,如软件加壳,软件内部设置调试陷阱,序列号,授权认证,从软件的应用层/内核层去防破解。不管做得多好,你只要软件放在破解者手上都有被破解的时候。下面举几个破解例子思路:

       例子一:有一些数据安全保护软件(还是打广告打得好的大公司软件,也就是透明加密,美其明曰加密用了国际最高强度的AES加密算法,内部员工可以正常打开但无法把文件泄露出去。但凡知道这类软件的原理那么要把一个加密的文件解密出来就很容易的,比如通过注入,读内存等,截获解密API,这些方法压根就不需要知道你软件里加密用的是什么算法,因为破解者最终只需要把数据搞出来即可。

       例子二:有一些金融指标保护软件,通过整体加密的方式(即把指标放在金融软件里面),然后通过引导程序来做授权认证,金融软件界面入口修改为不可操作(如禁止打开)等手段,最后通过某些公开的软件简单打包一下,让人感觉是一套完整的加密保护方案,但简单分析后漏洞百出,不用多长时间就可以完全破了

        例子三:有一些通过卡号来限制使用的软件,如过期后软件就不可用。市场上很多这类软件,只是简单的通过这么个单一条件来做限制。殊不知通过OD这样的破解软件简单跟踪一下就能定位到,可以说是秒破不为过

       看完上面这几个软件保护的例子,好象对我们软件开发者或者数据需要保护者有点绝望,我们辛苦做出来的软件,花大量时间录的视频就被人这么无情的破了,的确对我们是一大打击。

        经过我多年对软件的攻与防,总结如下:软件防破解其实不是单一技术就能解决的问题,而是一个综合的工程学问题

下面从以下几点来思考如何做软件的防破解

1、防破解还是要做的,做为软件开发者,软件防破解肯定是需要的,软件防护目的不是为了完全防止不被破解,而是尽可能的做到增加破解成本。比如一个软件破解需要半小时跟需要一天是完全不同的成本,需要一天跟需要半个月又是完全一样的成本,只要做到了尽可能的增加破解成本,那么至少可以减少70%的破解可能性,因为市面上破解者很多只收取个几百块几千块,如果破解个软件需要10天半个月,那么这类破解者可能就直接放弃了。

2、站在破解者角度去开发软件,期望自个软件做出来后不被破解,那么就要站在破解者的角度去思考自已软件是否存在漏洞,思考整个业务流程是否严谨,防破解流程是否存在漏洞。许多软件开发者开发出一个产品后可能还专门找人去破解,找安全漏洞,许多注重安全的软件公司还专门成立了软件攻防实验室

3、为自己软件产品做烟幕弹,即开发“破解版”,在软件正式版发布后,同时制作一个假的“破解版”,也就是从软件表面上让大家认为这是个破解版,实际上用了一小段时间后,就发现这个破解版是不可用的,或是不好用的,这个时候你的“破解版”再适时弹出“破解失效,请到××处购买正式版”等宣传话语。然后你把这个假的破解版找几个知名的破解网站上传,这个时候真的破解版还没出假的破解版就已经满天飞了,这样的情况下大多数用户都不可能下载到真正的破解版,并且用上了你的破解版后,定会对破解版大失所望,认为网上流传的破解版都不可用,这样就更有可能购买你的正式版软件。

4、把核心的计算放到服务器上,如果把所有数据放在本地计算不管如何做防护都无法保障安全,但是如果把一些核心的计算算法及数据放在服务器上,并且软件的功能运行依赖这些服务器上的算法及数据。并且这些数据及算法是不可伪造的,那么破解者就算把本地的整个软件还原成源代码,也不一定可以正常使用软件。

5、服务为本,尽量让你的软件提供的是一种服务,而不是某项技术本身,如果仅仅是某项技术,软件一被破解,用户拿到破解版的软件就不再需要你了;如果是服务,即使用户得到了可用的破解版,他可能还是需要转而寻求你获得技术支持,通过这种策略也可以避免破解带来的巨大损失。

6、分散校验保护法,很多时候如果只是一种保护验证法,无法有效的保护软件。但是如果在多个业务场景用不同的保护机制,会让破解者崩溃掉:如单一算法都不复杂,估计单个破的话也容易,但所有算法不是全部用于同一时间同一处进行注册码的验证,而是分散到软件的不同功能,不同时间来验证,有的是软件启动,有的是点某个按钮的时候,有的是当时间达到某个条件的时候,破解者往往是把软件启动时候的验证给破掉,但是他在使用过程中又会经常随机的遇到很多验证失败的提示,而且这些过程随机,可能除了作者,没人知道这背后有多少处验证,这些验证又是什么时候触发,所以这种做法能让破解者抓狂的说。另外很多破解者仅仅是为了破解而破解,自己本身又不用被破解的软件,往往是启动阶段的验证一破解掉,就认为大功告成的开始发布“成功”破解版。

7、试用版就是试用版,如果你打算做一个试用版那么就需要做到就算你这个软件被人完全破了,它依然还是试用版。很多做软件产品的程序员,在软件里区别正式版和试用版就仅仅是靠注册码验证而已,这种情况下,只要试用版被破解,那正式版就到手了,而正确的思路应该是,正式版不提供公开下载,只有用户付费后才提供下载地址,公开发布的试用版里彻底不放提供正式版的数据的代码,造成的结果是,很多破解者得到试用版后就破解,令他们高兴的是,软件很容易破解,但令他们沮丧的是,破解成功后,试用版还是试用版,改有的功能还是没有。这个招式适合软件使用量不是特别大的用户,依我的看法,95%的软件使用量都不算大,所以这招其实大家皆可用之。

在我实践的过程中,以上几点对于防破解都是行之有效的,大家可以尝试一下,对软件加密及破解感兴趣的可留言交流

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值