逆向工程应用之软件破解

来源 :中国科技博览 | 被引量 : 0次 | 上传用户:wessyy
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘 要]本文主要介绍软件的常规保护方式及破解手段。
  [关键词]软件逆向工程,软件破解,脱壳,动态调试
  中图分类号: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
  通常应用于游戏或软件的安装光盘,每次启动软件时,会检查光驱中是否插入安装光盘,如果没有,就会拒绝运行。
  这四类保护措施可以通过修改程序文件来解除,但对于前三者,如果软件是试用版,则可能根本不存在关键功能的可执行代码,那么就没有破解的必要了。
  3 软件破解
  3.1 常用工具
  1)PEiD
  一款著名的侦壳工具,原理是通过应用程序特征码,识别加壳类型,有三种扫描模式:正常扫描、深度扫描、核心扫描。附带各种增强插件,可以对一些简单的壳进行脱壳处理,或者对程序内部进行扫描并识别一些加密算法。
  2)OllyDBg
  简称OD,最常用的动态分析工具,工作在Ring3层,绝大部分壳都用它来调试分析,插件非常丰富,可以通过调用脱壳脚本,当自动脱壳机使用。
  4) IDA
  一款静态的、强大的、功能复杂的交互式反汇编工具,也可以用作调试器,但通常用于
  反编译目标程序中的一些关键函数,或是分析程序的执行流程。
  3.2 一般方法
  1) 脱壳
  使用OllyDBg 载入目标程序后,会得到程序的反汇编代码,根据PEiD侦测到的壳的特征,选用适合的分析策略、跟踪步骤和方法,并实时记录并保存跟踪过程中的关键数据,以减少调试失败的次数,必要时编写跟踪脚本,提高调试效率。最后要保证脱壳后的程序能够正常运行。
  2) 分析算法
  用 OllyDbg 载入脱壳后程序,直接运行,随意输入注册信息,根据软件提示跟踪找到注册过程,确定验证类型,分析加密算法,如果算法简单,可以尝试编写算法注册机,难度过大,则考虑通过修改验证函数的返回值,或者某些条件跳转,达到强制破解的目的。
  3) 验证
  验证已破解的程序是否能够正常运行,所有功能是否完整,如果有问题,可能是程序内部还有隐藏的注册验证代码,找出并重复2、3步,直到软件最终破解。
  4) 编写注册机
  如果已经分析得到软件的加密算法,则可以制作一个算法注册机,用来生成对应任何用户名的注册码,不用脱壳就可以直接输入注册信息,无限制使用软件的所有功能。如果是暴力破解,可以尝试编写内存注册机,用Loader的方式运行并实时修改程序中的关键判断,达到彻底破解的目的。
  结束语
  自己动手破解软件虽然是件有劳而获的体验,但还是属于非法获取软件所有权的行为,现在越来越多的人加入到免费甚至开源软件的行列,有更多的核心技术被挖掘出来,应该不断学习和开发新的技术,探索更为宽广的领域。
  参考文献
  [1] 段钢.加密与解密.3版.北京:电子工业出版社.2008.
  [2] 看雪学院.软件加密技术内幕.北京:电子工业出版社.2004.
其他文献
[摘 要]随着信息化时代的发展,智能建筑在各行各业中得到应有的发挥与应用,以此给各单位办公自动化带来了极大的方便。然而相关的设备在雷电防护方面或者说在安全运行方面也带来了一个新的问题,由于信息设备在抵御雷电方面显得格外脆弱,为此本文针对某一单位办公楼在防御雷电方面的实际做法作一介绍。  [关键词]办公大楼;信息设备;防雷工程  中图分类号:TU712.2 文献标识码:A 文章编号:1009-914
期刊
[摘 要]在建筑设计中,建筑外装饰效果设计是其中的重要环节,只有保障建筑外装饰效果设计的精确性以及有效性,才能够进一步的提升建筑外装饰的美观效果,从而提升人们对建筑欣赏和探究兴趣,这在一定程度上也提升了建筑的设计价值。本文就建筑外装饰效果设计问题进行了简要的探究,仅供参考。  [关键词]建筑外装饰;效果设计;问题探究  中图分类号:P619.28 文献标识码:A 文章编号:1009-914X(20
期刊
[摘 要]滑坡主要是因为路堑底部的泥岩以及粉质的粘土遇水后软化,导致自重增加,以及高陡路堑边坡滑坡体在平面上呈舌状分布,当抗剪强度下降到难以抵抗住重力时,从而使土石分界面剪出。本文针对目前在山区修建高铁路基开挖过程中容易出现滑坡的难题,并结合某具体的工程滑坡情况,运用专门的边坡工程理论和滑坡治理技术对滑坡情况作出分析,充分对滑坡进行了分析并且提出了相应的解决措施来减少滑坡,从而保证边坡安全。  [
期刊
[摘 要]鉴于当前生活环境的恶劣情况,严重影响人们的身体健康、生活品质,现在倡导绿色家园、同一个地球,追求绿色生活。于是提出新型种树机,改变以往的种树方式,由人工、半机械化种树方法向全机械化、自动化方向改变,此新型种树机以太阳能发电供给系统电能,以直流电机为动力系统,以单片机为控制系统,完成挖坑、种树、填土、夯实、浇水等各项任务,以代替燃气机动力,实现零污染、零排放,达到高效节能,实现绿色环保的目
期刊
[摘 要]劳动防护用品的主要作用在于确保作业人员在生产过程中,免遭或者降低事故造成的伤害及职业危害等所配备的防护性装备。劳动防护用品一般采用阻隔、封闭、吸收、分散剂悬浮等措施,确保作业人员的身体局部或者全部免遭外界的危害。在特定的作业环境中,劳动防护用品是确保作业人员生产和施工安全的重要措施。文章主要论述了劳动防护用品的配备使用和管理对策。  [关键词]劳动防护用品;配备;对策  中图分类号:R1
期刊
[摘 要]钢结构抱柱梁是一种特殊的建筑形式,本文结合工程实例,对钢结构抱柱梁的设计与应用情况进行了分析,希望可以对设计人员提供一定参考。混凝土抱住梁是一种施工周期比较长的结构形式,其适用范围比较窄,而且对墩柱界面的连接强度也比较弱,建筑施工单位在发展的过程中,研究出了钢结构抱柱梁的新型结构形式,这种结构的受力更加均匀,而且梁宽度比较窄,连接力比较大,这种结构的适用范围比较大,施工的效率也比较高,值
期刊
[摘 要]当前,我国的很多建筑工程中都使用了泡沫混凝土这种材料,产生这种现象的主要原因是因为这种混凝土具有非常好的性能,泡沫混凝土自身的重量并不是很大,同时它还有非常好的保温效果,这种优良的性能对节能建筑的发展有着十分重要的作用,本文主要分析了泡沫混凝土施工技术在屋面工程中的应用,以供施工人员参考和借鉴。  [关键词]泡沫混凝土;屋面工程;保温;施工技术  中图分类号:O648.2+4 文献标识码
期刊
[摘 要]随着交通道路的建设有了很大发展。然而,在建筑界也有一些施工单位为追求自身利益,或者是由于技术本身的问题,使得道路桥梁在施工过程中还存在着很多易发问题,本文提出了有针对性的防御措施。  [关键词]道路桥梁施工;易发问题;防御措施  中图分类号:U445.4 文献标识码:A 文章编号:1009-914X(2015)24-0177-01  面对我国现在进行的大量道路桥梁的施工,需要施工单位选用
期刊
[摘 要]学生公寓是学生在校内的重要活动场所之一,供学生休息、睡眠、学习、交流、就餐、储存等,也是学校建筑的重要组成部分。而电气系统是学生公寓构成中的重要部分,是确保公寓环境稳定、舒适的重要保障。下面,本文就我国当前学生公寓电气系统中存在的一些问题和不足进行简要的分析,并就如何提高和优化电气设计的水平提出自己的建议和看法,从而更好的提高学生公寓的电气系统质量和使用性能。  [关键词]学生公寓;电气
期刊
[摘 要]玻璃幕墙是一种美观新颖的墙体装饰材料,具有独特的风格、高雅亮丽的外形,将围护功能与建筑装饰艺术有机的结合为一体,使建筑物具有时代感,因而被广泛应用于多层及高层建筑物的外墙装饰。但是其在施工中的安全问题也尤为突出,本文介绍了建筑幕墙施工中的安全管理问题。  [关键词]建筑幕墙;施工;安全管理;  中图分类号:TL372+.2 文献标识码:A 文章编号:1009-914X(2015)24-0
期刊