互联网软件如何防破解

     国内推广软件,你要面对的最大问题莫过于软件被破解了。不少软件做者反映说,原来软件在被破解前交费注册的人还很多,但被破解后收入就直线降低,连成本都收不回来。您想,有了免费的东西人们还交那个钱干什么?
    
在这里,我借鉴了一个软件做者的防破解经验:发行1.0版时2.0版已经写的差很少的。发行1.0版时要把1.0版的防破解或者注册算法写的简单些等着别人去破解。一但出现1.0的破解,等待几周,这几周的时间足以使网上1.0的破解版遍天下。

而后,分析破解过程更改2.0版算法(层层加密,复杂再复杂),虽没法根除破解但能够浪费破解者的时间和耐力!通常状况下,在网上一搜你的软件已经有破解版了(1.0的)新的破解者不多会再去破解,况且2.0版本更复杂些。个人一个软件用了此法,

推出一月后被破解组织破解,公开破解过程及注册算法,并作成破解教程。其实破解从某种意义上说是帮我宣传了软件。我在一个月后推出早已经写好的新版本,还注册成了“特别版”以迷惑想要破解版的人。使用上述方法后至少在我更新了几回软件后的今天仍没出现破解。
但在网上搜破解版、特别版、注册版处处都是,可没一个是真的。其实一些破解高手只是想试探本身的能力,破解一个软件后,通常会把目标定在下一个软件上。不过若是你的软件成为人手必备的工具,此法怕是不灵了。
另外,从技术上讲也有一些防破解的方法。
假设你的注册部分有300行,你能够分红30个inline函数调用(必定要inline),func1(),func2()... func30(). 将他们随意放到程序的各个部分,必定不能放在一块儿。
不要用Memcpy等经常使用系统调用拷贝注册码,尽量本身写,像Memcpy很好写,性能差点无所谓。通过编译后inline函数展开,注册部分和其余代码混在一块儿,他要写出注册机就很困难,由于要向在几十万甚至上百万汇编代码里找出有用的注册部分那简直就像是在大海里捞针。

另外注册码也不要放在一块儿,假设你的注册码是12位,千万不要用一个12位的数组放注册码,你能够在程序的不一样位置定义12个全局字符变量,每一个放一位,这样注册码在内存就不连续了。最好再加密处理一下(简单的字符异或就能够),验证时再解密。
只要破解者找不到你验证结束的地方,暴力和Loader破解也没有可能。很重要的一点是不要用连续内存保存验证用到的变量,尽可能将用到的验证临时变量分散定义在程序的不一样处,再在验证中,不断转移一些值到其余变量中,对付暴力和Loader会比较有效。

没有必要用复杂的加密算法,更容易成为追踪的目标。只要你将注册部分隐藏的足够好,也没有漏洞,你花1天写的加密算法,破解者可能会花100-1000倍的时间破解。大部分人都会放弃。你将注册作在一块儿,就像将你的财宝放在现代保险箱里,虽然很是坚固难以解密,对于开锁高手两分钟就打开了。
对于一些比较专业的破解者采用上面的方法也是颇有效的可是,仍是要避免一些低级失误例如:不要在内存中直接出现注册码和明显的注册码比较部分不要给用户太多的有关注册验证的信息,也不要接收到注册码后马上就进行比较。在软件的不一样功能处实现验证时的好处还有就是不会马上执行到验证代码注册码,
能够分屡次验证,也能够分红几部分验证,还能够分红几层验证验证时,能够尽可能多执行一些无用的操做,加上一些象递归之类难于调试追踪的代码,但在其中要穿插实现软件功能的代码,不然人家直接就跳了过去。反正就是越不引人注意越好,亦即越乱越好。
其实要想完全防止破解也是不现实的,除了研究一下破解方法,在发布前加壳外,并采用以上所说的方法外,不断升级程序也是比较好的方法。
总之,推广软件对于搞惯了技术的软件做者来讲一开始会走一些弯路,但只要不断学习成功者的经验,不断吸收本身失败的教训,你也会成功的。最后,祝你们个个都成为共享高手
相关文章
相关标签/搜索