- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
通常应用于游戏或软件的安装光盘,每次启动软件时,会检查光驱中是否插入安装光盘,如果没有
您可能关注的文档
- 连朴饮加减联合四联疗法治疗幽门螺杆菌相关性胃炎脾胃湿热证临床的研究.doc
- 连梁优化的设计的方案的研究.doc
- 连栋温室番茄有机生态型无土栽培光照强度变化规律的研究.doc
- 连江县城区排涝工程的体系存在问题及对策.doc
- 连梁的设计及配筋.doc
- 连横者思杰“的应用”对任何公司都是生命线.doc
- 连江县松材线虫病防控措施的探讨.doc
- 连江县耕地资源可持续利用的探讨.doc
- 连片特困区农户多维贫困测度及能力建设的研究.doc
- 连片特困区乡村多维贫困综合治理的研究.doc
- DB44_T+2767-2025河口海湾总氮、总磷水质评价指南.docx
- 中医药科技成果转化评价技术规范.docx
- DB44_T+2750-2025农村供水工程数字化建设技术导则.docx
- DB44_T+2769-2025金属矿山生态修复技术规范.docx
- 镁合金航天航空零部件长效防护微弧氧化膜层工艺规范.docx
- 《甘青青兰中绿原酸和胡麻苷含量的测定 高效液相色谱法》发布稿.pdf
- DB44_T+753-2025声环境质量自动监测技术规范.docx
- 信息技术 智算服务 异构算力虚拟化及池化系统要求.docx
- DB44_T+2759-2025黄荆栽培技术规程.docx
- 废生物制药溶媒再生乙腈.docx
最近下载
- 全景图像拼接技术研究与实现.docx VIP
- 全国统一安装工程预算定额.pdf VIP
- 明伟NES系列改可调方案(参考).pdf VIP
- 呼出气一氧化氮(FeNO)测定临床应用规范.docx
- 亚低温冬眠治疗PPT参考幻灯片.ppt VIP
- 仁爱科普版(2024)七年级英语上册课件 Unit 6 第7课时 Reading for Writing.pptx VIP
- 安徽医学高等专科学校《人体解剖学》2025 学年第一学期期末试卷(B).pdf VIP
- 现代机器人培训资料.pptx VIP
- YD5003-2023通信建筑工程设计规范.docx VIP
- 上交所发行上市审核动态(2024年第5期).pdf VIP
原创力文档


文档评论(0)