软件的防护与破解方法的探析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件的防护与破解方法的探析
作者:雷波
来源:《数字技术与应用》2014年第03期
摘要:随着互联网技术的发展,各类网络应用软件越来越多,人们对于网络软件的安全问题也越来越关注。

本文主要就当下常用的软件加密技术进行简要介绍,具体的介绍了流行的破解方法。

关键词:软件加密软件防护破解
中图分类号:TP309.7 文献标识码:A 文章编号:1007-9416(2014)03-0222-01
为了保护软件公司自己的知识产权,各个公司都采用适合自己产品的防盗方式,但是任何加密手段都会被技术人员破解,这是由于任何一小段的软件加密技术都是一段程序,这就会造成我们只需要研究加密技术的程序来完成对软件的破解。

1 软件加密技术
1.1 时间限制保护技术
对于时间限制软件技术的破解方法,一般都要从软件的设计原理入手,这些软件的标志和数据记录通常都是在注册表中隐蔽存在的。

我们只需要找出这些软件的时间标志就能够对其进行破解。

目前从注册表中查找这些时间标志大部分是借助其他软件,比如像RegSnap,通过对于软件运行前后的快照差别,然后查出软件的时间标志,或者是找出软件记录次数的键值,更改这些数值就能够破解软件的时间限制。

具体步骤如下,首先要建立注册表快照,利用RegSnap进行扫描并保存数据。

具有时间限制软件在运行中,出现剩余时间提示后,再利用RegSnap进行扫描一次并保存数据。

然后通过RegSnap的照片对照功能,从而发现哪些键值发生了变化,进一步确定时间记录的位置,用户根据时间记录去修改注册表,然后重启软件再运行。

1.2 序列号保护技术
序列号保护技术主要是先让用户的私人信息比如硬盘序列号发送给软件公司,软件公司根据用户的信息通过之前编写好的程序计算出一个序列号,然后用户在软件安装过程中出现的提示,输入相关信息和序列号,在获得软件公司的确认后,软件公司在给这些已经确认的用户通过权限,用户之后使用时就可以任意使用软件的各种权限。

对于这种序列号保护做饭看起来比较严谨,但其实目前有两种方法可以将其破解。

第一种方法可以利用从计算机的硬盘序列号入手,原理很简单比如假设用户A取得了正版使用的资格,我们只需要将自己的计算机序列号改成A的就行,目前网上有很多类型的修改软件,修改起来相对容易一些。

第二种方式就是通过对字符串的消息断点进行处理,通过对软件算法的处理拦截其对字符串的处理。

然后改变
汇编语言的程序编码,然后将条件跳转设置成JMP无条件跳转,这样的话就可以随便使用不需要使用序列号。

1.3 加壳保护技术
所谓软件的壳就是一些保护软件不被使用者非法篡改程序数据来获取程序使用权限的。

目前的加壳技术都是通过对程序的启动软件进行数据处理,然后将这些档案压缩成自我解压性质的档案,然后隐藏进压缩程序中。

目前的加壳方式有多种,比如多重壳、加密壳、压缩壳等。

多重壳是采用多重加壳加密技术,提高破解难度。

2 硬加密技术
2.1 光盘保护
光盘保护技术通常是在单机游戏的发行等需要光盘做载体中使用。

采用光盘保护的内容在使用时都会先检测光盘是否出现在电脑的光驱中。

如果光驱中没有检测到相应的光盘,则程序拒绝运行。

这样做的目的是为了避免已经购买正版光盘的用户将游戏复制多份到其他用户的电脑上。

光盘保护技术是在光盘上刻录特殊的文件,这样在程序运行时如果检测到有相应的特殊文件,则程序继续运行,如果没有检测到,则程序自动拒绝运行。

在程序运行以后通常不再会检测光驱是否存在光盘。

随着虚拟光驱软件技术的发展,这种通过在光盘保护的方式逐渐显得力不从心。

对于光盘保护软件的破解,我们只需要先利用光盘镜像的工具将光盘制作成一个ISO的镜像,然后通过运行一款StarFuck的软件,通过选择我们已经了解的算法加密技术,通过将光驱进行屏蔽,使得文件将虚拟光驱进行处理。

这样就可以完全的绕过光盘中的保护软件来运行程序了。

2.2 加密狗技术
加密狗是通过一些外界的硬件设备来实现对相关软件进行加密的技术。

这些加密狗通常都会在自己的软件中事先安装好一套驱动设备和工具,当被保护的程序或者是软件在执行运行命令时,程序会自动查找是否有设备在计算机上运行,也就是事先安装好的加密狗程序。

程序会对这些硬件程序发出一些指令,在获得正确的响应后软件或者是程序才能够继续运行。

目前对于加密狗技术的破解方式主要是利用模拟器,这需要使用者自己利用相关软件设计一个和加密狗类似的DLL动态文件,包括比如一些可读、可写的函数,我们之需要保证是用的返回值和加密狗中的数据一样就可以,将所有的函数值都设置成零,并对可读、可写这些函数进行相应的处理。

新的DLL文件编写运行以后,可以代替加密狗的DLL文件,这时再运行相应的软件,软件加密狗的操作将会实现全部的拦截操作,拦截程序将会将全部的正确数据传送给软件,这样就会模拟加密狗的运行。

2.3 执行驱动模拟
目前许多研究学者对于执行驱动模拟持有两种不同的观点,其中一部分人认为执行驱动模拟将使用程序的执行命令作为模拟器的指令输入,而不是将跟踪状态的信息作为输入指令来开始模拟工作,从这个角度来说模拟器的指令输入只与程序的执行驱动指令有关,与动态指令没有任何关系。

程序的所有指令都是由可执行指令发出。

另一种观点认为,承载模拟器的主机是模拟器执行驱动代码的主要来源,系统模拟器只负责运行其中一部分指令,这些学者认为计算机体系结构模拟器不模拟任何一个应用程序的程序命令。

3 结语
软件防护是在软件实际使用中的不可或缺的重要环节,是指软件项目及产品生产周期内全部的检查,审核和确认活动。

由于软件项目在实际使用和应用中不可避免的存在差错,所以企业必须在软件产品投入运行之前做好全面的产品测试,并在防护的过程中尽可能多的发现软件项目中存在的问题,从而有效降低软件产品运行中故障的发生概率。

软件产品的防护作为保证软件质量的重要环节,也是对企业软件产品规格说明或者是编码与设计的最后检测工作。

参考文献
[1]吴浩明,李栋梁.软件工程应用实践教程[M].北京清华大学出版社,2012(10):8-21.
[2]朱三元,李天明.软件工程技术概论[M].北京科学出版社,2011(11):20-29.
[3]郭金琦.浅议企业软件项目管理在实际开发中的应用与实践[J].北京企业文化传播出版社,2013(5):3-9.
[4]朱少敏.计算机系统软件测试方法与技术.北京清华大学出版社,2010.。

相关文档
最新文档