软件是如何被“破解”的?开发者可以阻止破解版的产生吗?

软件是如何被“破解”的?开发者可以阻止破解版的产生吗?,第1张

软件的破解属于正常流程的反向过程,破解软件主要目的在于如何最大程度的获取利益,而且大部分的破解软件都和正版收费有一定的关联,破解软件之所以有如此大的市场就是因为强烈的市场需求,特别是在国内范围很多国外的软件只要发现有收费的行为,立即寻找破解版而且基本上都能找到,这是破解市场如此火热的主要原因。

作为软件的开发者难道就对破解没有任何的办法?很明显答案是否定的,为了防止软件被破解,会在软件的外围增加一层壳,这就是软件的加壳保护机制,就是为了防止软件被暴力破解,只是加壳技术并不能万事大吉,很多人专门研究跳过壳子的办法,当然很多软件由于在设计上并不严谨可能通过简单的技巧绕过登录就可以轻松地 *** 控软件,除了很厉害的加壳技术保障之外要有严谨的设计理念,避免出现一些低价的错误。

只是通过加壳技术很难软件不被破解,于是程序员专门设置一种暗桩,随机的修改验证的key,而且没有任何规律的验证,这种情况很难总结软件的运行规律,让破解者自行退去,这种方式在很多软件设计中都存在,程序员的写法也是千差万别,不同程序员对于暗桩的设计取决于程序员本身对于应用场景的理解。

当然为了进一步提升软件的安全性能,很多软件的 *** 作都上传到云服务器上处理,保证数据过程中不被破解,这种方式已经越来越多被很多企业所认同,云计算在未来软件架构中的作用越来越强,不仅仅在数据安全方面,云服务器在数据处理方面也有独特的优势。

不同企业对于软件破解的理解也不相同,很多企业软件的破解版本就是公司研发人员专门制作的,包括强大的微软公司对于盗版也是睁一只眼闭一只眼,目的很明确就是为了让产品流传的更加久远一些,几乎对所有的个人用户采取置之不理的情况,典型的养羊策略具体收割赚钱完全靠企业用户,对于中小企业几乎也采用置之不理状态,一旦企业上市微软的法务部门就开始发函询问了,微软Windows系统大部分收益来源就是这种方式,当然还有一部分靠着微软的文字处理软件全家桶来获取收益,Windows在短时间内很难有人能够撼动,通过盗版软件方式已经把系统推广到了全世界,虽然中间有Linux的冲击,但是出发点不一样几乎没有什么大的影响。

防止软件被破解属于软件安全模块的功能,很难做到百分百的防御,只能最大程度的规避,不规范的代码写作习惯也会引起软件被破解,越是架构合理代码严谨的代码软件被攻破的成本也会加倍的增长,程序员平时也要反复得修整自己写过的代码,优秀的代码很多都是修改出来的,很少有代码一次性就搞定的,即使存在概率也会非常低,希望能帮到你。

首先要防止被写出注册机,你的软件的注册机一旦被发表,那你完全有理由做成免费软件了。防止被写出注册机最简单的方法就是保护你的校验算法,具体的做法就是千万别使用校验函数,把你的校验算法嵌入功能代码里是比较保险的,这样破解者至少要花很多精力去研究那一部分是校验算法。当然这还不够,你还可以把检验算法分散到2个地方,当然更多地方效果会更好,只是将来代码维护起来会很麻烦的。我想如果不是象WinZIP、ACDsee这样的大牌软件,很少会有人去找出检验算法了(太头疼了)。做完了这些,你还可以用Aspack,upx之类的压缩执行文件工具做进一步的保护。完了吗?还没有,我这里还有一些更用的东西。现在的脱壳工具太多了,可以说是没有脱不掉的壳。那怎么办?我这里有一段Delphi5代码更进一步的保护你的软件:procedure TForm1.FormCreate(Sender: TObject)Var exefile :file of byteConstStr:bytebegin AssignFile(exefile, Application.ExeName)reset(exefile)filemode := 0//读写属性设置为只读,这样才不会出错! seek(exefile,5)//exe文件的第5+1个位置(自己设要查找的位置) Read(exefile,ConstStr)//showmessage(inttostr(ord(constmi)))//看看实际是多少(假定为56) closefile(exefile)if ConstStr <>chr(56) then exit//如果第5+1个位置的值不是56退出(说明你的软件被改动了) end这段代码随时随地都可以加入,真的非常方便。不过你要注意的是,万一用户的机器染上了病毒怎么办。保护了检验算法,还要保护什么呢?校验算法只是让Cracker很难写出注册机,但是这还防止不了软件被破解(也就是常说的暴破)。暴破的原理很简单:你的软件写完后编译成可执行文件,当Cracker得到这个软件就可以进行反编译,得到汇编代码。你的那段“If 检验不成功 Then ...”,就变成了cmp xx,xx,jp xx,xx。稍微改动一下变成cmp xx,xx,rop,rop,rop,rop。整个前面的校验算法也就作废了。我想应该是没有太好的方法,只是千万不要用明文比较。再想保护深一点就加入一些冗余代码,让Cracker在这堆代码里转的头晕脑涨,你的目的就达到了。最后,有些话不吐不快。1.(引用别人:)加密是救不了共享软件业的!在好的加密技术也有人能解开的!与其花费时间去加密,不如把自己软件的功能增强些!这样可能会有更多的人支持您的!!(整天跳出窗口是谁也烦了)! 2.我认为Cracker们其实挺可爱。

有多种加密保护方式:

通过注册表验证,网页也有免费也有付费的注册码工具,不过这种不存在什么安全性,只要破解爱好者随便就能破解了,网上也一堆注册机。

加壳工具,这个同样有免费或者收费的。基本原理都是对你的程序进行自动加密,把所有代码段全部进行加密掉,也可以理解对你的代码进行压缩数据处理,然后对你的程序植入一段“壳”代码用来接管你的程序运行,其主要就是用来处理解密代码的。加壳工具很多安全性参差不齐,那些简单的加壳工具甚至都能找到对应的自动破解脱壳工具。好点工具如AxProtector可以自定义函数加解密,内存中按需加解密等等技术,听说基本没什么破解,不过是收费的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11490968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存