逆向工程的应用之软件破解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
逆向工程的应用之软件破解

逆向工程的应用之软件破解   [摘 要]本文主要介绍软件的常规保护方式及破解手段。   [关键词]软件逆向工程,软件破解,脱壳,动态调试   中图分类号:TP309.7 文献标识码:A 文章编号:1009-914X(2015)24-0161-01   1 引言   作为软件维护中的一项重要技术,逆向工程可以帮助开发人员更好的理解源代码,熟悉软件的工作流程,从而编写出更优秀的软件供用户使用,但随着这种技术的不断发展,越来越多的软件骇客(Cracker)将其用来破解商业软件的保护机制,甚至通过分析软件的工作原理,还原出有用的核心功能代码,用于新软件的开发。   2 软件保护   早期的软件保护,主要依靠序列号验证,通常在软件启动后,会出现一个注册提示,输入正确的注册码后,才能够使用该软件的完整功能,但随着大量逆向分析工具的出现,软件的可执行文件可以被轻易修改,这种保护方式就形同虚设了。之后的商业软件普遍采用了在序列号验证的基础上加“壳”保护的方式,其主要目的就是防止软件被非法修改或反编译,而软件的破解就是要先“脱壳”处理,然后解除注册验证。   2.1 加“壳”保护   所谓加“壳”,就是利用加壳软件,将一段代码,像防护层一样附加到软件的可执行文件中,运行软件后先执行“壳”代码,将软件中被压缩加密的代码解压解密后,再将控制权交给软件本身。   “壳”的种类很多,一般分成两大类:压缩壳和加密壳;前者只是将软件的二进制文件进行压缩,类似于 zip、rar 等压缩软件,只不过生成的是可执行文件,目的是减小可执行文件的体积,方便传播或存储,常见压缩壳有 UPX、ASPack 等;   加密壳通常也有压缩功能,但更重要的是将软件代码进行加密,尤其是涉及到软件关键功能的部分,这种壳通常属于商业软件,用户可以通过购买SDK的方式,将加密代码嵌入到自己开发的程序源代码中,达到源代码级防护的目的,常见有ASProtect、Armadillo 等。   大多数加密壳都有反调试功能,或者叫反跟踪功能,主要是针对调试器,目的是阻止调试器对程序代码的跟踪分析,因此在调试时,如果不采取反反跟踪的措施,调试器可能根本无法启动,甚至每次调试都会导致系统崩溃。   脱壳就是去除附着在软件可执行体上的壳代码,将解密后的原始执行文件提取出来,通过必要的修复,使可执行体能够正常运行,没有任何功能损失。一般分为手动脱壳和自动脱壳,后者需要专用的脱壳软件,但是加壳软件种类繁多,而且同一个加壳软件的不同版本间又会有很多差异,所以大部分软件只能手动脱壳,但这种方式技术复杂度比较高。   2.2 序列号保护   软件验证序列号的过程,其实就是验证用户名和序列号之间的数学映射关系。这种映射关系是由软件开发者制定的,其复杂度越高,序列号破解难度就越大。   程序检验注册码通常有一下几种方法:   1) 以用户名等信息作变量,通过函数变换获得注册码   序列号= F(用户名)   2) 通过注册码验证用户名的正确性   序列号 = F(用户名) 而且 用户名 = F-1(序列号)   3) 通过对等函数检查用户名和注册码   F1(用户名) = F2(序列号)   4) 同时将用户名和注册码作为自变量,采用二元函数   特定值 = F(用户名,序列号)   上面的函数映射关系就是解密的关键,但考虑到逆向的时间和人力成本,通常不会对过于复杂的算法进行跟踪分析,而是直接使用暴力破解的方式,强行让这种映射关系成立,那么,输入任意用户名和序列号,都可以成功注册。   为了防止验证算法被破坏,软件设计者会在程序中编写一段校验程序,对算法涉及到的关键代码进行校验,如果结果有误,则注册依然不成功。?   对于某些依赖网络的应用软件,设计者则采用网络验证的方式,将上面的映射关系保存到开发者的服务器中,用户输入的注册信息被发送到服务器进行验证,如果通过验证,则软件的所有功能会被解锁。   2.3 其他保护   除了加壳保护和序列号保护,软件开发者还可能会使用额外的保护措施,常见的有:   1) Nag警告   Nag本义是烦人的意思,Nag窗口是软件设计者用来不时提醒用户购买正式版的窗口。   2) 时间或使用次数限制   某些软件会在每次启动程序时,设定一个计时器,例如运行10分钟就停止,必须重新   应用程序才能正常工作;或是运行达到一定次数或时间,就提示购买。   3) 功能限制   程序运行正常,但某个菜单项或功能键无法使用或者只能使用有限的功能,需要输入序   列号或购买安装正式版才能启用相关功能。   4)CD-Check   通常应用于游戏或软件的安装光盘,每次启动软件时,会检查光驱中是否插入安装光盘,如果没有

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档