如何有效的防止程序被破解

网络上关于防止程序被破解的文章有很多,无外以下几种:

1.高强度的验证

  这里说的高强度就是cdkey加密算法的强度,但再强,都无法解决“暴破”的问题,即绕过验证。

2.给程序加壳

  这个可以有,现在市面上有很多硬壳,采用虚拟机技术,很难被脱掉,但需要你有一定的汇编知识,而且这种处理还有一个弊端,很有可能你的程序加完壳后报毒……

3.设置暗桩

  程序启动时,验证一部份cdkey,通过后,程序正常运行,一般破解的到这个地方就收工了。

  当程序运行到一定的时间,这个时间最好是随机,最好是能几个小时以上,然后验证另一部份cdkey,一旦验证失败,后面的动作你们自己想。

  当然,你也可以多设几个暗桩,比如较验文件的修改日期,比如较验文件的CRC等等,各个暗桩执行的时间随机,尽量让破解者在不断的成功又失败后,放弃破解。

4.核心代码移至网络

  程序验证通过后,将cdkey发送到网络,如果验证cdkey有效后,返回核心代码到程序,这种是我比较推崇的办法,其好处和安全性不言而喻。

 

网上还有一些其它的办法,比方说在程序中添加大量无意义的汇编代码,或者是用try...except...把验证写到except下,这都是用来扰乱破解者的视线,增加破解的难度,但是对于开发者自身来讲,程序可读性变差不说,代码也难以维护,要是面对一个执着的破解高手,被破掉也是早晚的事。毕竟你的防守套路已经写死在程序中,而破解人的进攻套路是五花八门的,以不变应万变,早晚要死在万变手上。

最后,有条件的,我的建议采用第4种,没有条件的,就采用第3种,或者1+2+3,要是不嫌累的话。

 

 

posted @ 2017-02-25 15:23  rockmmm  阅读(6073)  评论(0编辑  收藏  举报