前言:本站为你精心整理了计算机软件恢复的原理及方法范文,希望能为你的创作提供参考价值,我们的客服老师可以帮助你提供个性化的参考范文,欢迎咨询。
简单来讲,反动态跟踪的目的是防止别人使用调试器来追踪软件运行。这种方法最基本的思路是让程序去故意执行一些能使干扰的调试器的正常运行或者可以让调试器失效的动作。反调试代码将测试是否需要额外增加一个调试器,如果需要的话,程序则自动退出,或者让调试器终止。反调试有很多方法,但大部分反调试方法都与一个特定的平台及特定调试器有关。
1软件压缩与加壳技术
外壳程序事先早于被保护对象程序运行的程序,这部分的程序对原程序代码和数据进行相应解密还原操作。一些壳软件能加密数据并且可以对可执行文件的代码和数据压缩,这不仅降低了文件在磁盘上所占有的存储空间,而且在某些情况下,可以有效提高可执行文件加载的速度。大多数的软件外壳还集成有反静态分析方法、反跟踪技术及反脱壳技术从而增加了破解难度。加密代码是防止静态分析程序的一种常用的方法。一般可以在程序编译完成时,给用户使用之前,将程序加密,并且在可执行文件里嵌套可实现解密的代码来实现解密功能。该方法对于经验丰富的破解者最多也就是在逆向工程中增加一些困难。但是由于只要在可执行文件包含有解密程序,它必须包含相应的解密算法及解密密钥进行解密。由于在程序代码运行之前必须解密出来,因此,在程序运行的过程中,实现解密的全部或部分程序必须留到内存当中。即便如此,代码加密仍然是防止静力分析的一种常用方法。这是由于它能够明显改善程序的分析复杂性,有时候甚至能够迫使破解者必须动态分析程序。
2软件水印
软件水印方法的基本思想是,把版权信息或者唯一身份识别码等信息,隐蔽的嵌入应用程序中,当需要时候再用一个特定的水印算法将水印提取出来进行版权确认,这是一种可以追踪非法软件拷贝的副本直到源头的方法。根据水印加载的时间来分,软件水印技术可以分成静态软件水印技术和动态软件水印技术2种。静态软件水印的存在并不依赖于软件运行的状态,可以在储存、发送及运行时进行验证。静态水印软件通过在软件编辑时直接或者在编辑完成后加入的方式加入到软件程序中。只有对软件本身有足够的了解,才能最终确定水印信息。根据水印存放的位置不同,静态水印又可以分为静态代码水印和静态资料水印2种。动态水印依赖于软件运行状态而存在,一个动态的软件水印的结构是在程序执行时被构造出来的,因此可能会由某一个特定输入序列进行触发。动态水印能通过分析水印信息的程序运行时候结构的数据的结构来萃取,也可以通过执行跟踪程序提取。动态软件水印又可分为动态执行轨迹水印、复活节彩蛋水印及动态数据结构水印3类。软件水印保护的目标就是使攻击者很难对水印程序进行分析,从而防止水印的发现和窃取,或防止水印的代码被恶意修改或删除。
3虚拟机保护
虚拟机保护技术是将一段程序汇编成一段特殊意义的代码,这个代码不是在目标机被直接执行,而是通过一个解释器来模拟执行。虚拟机中的可执行代码文件只有一个数据块,由于虚拟机代码在运行的过程中进行解释执行,所以反汇编工具不能反编译虚拟机的代码。破解者要分析虚拟机的加密结构与执行过程要花费大量时间及精力。另外,由于虚拟机能够屏蔽具体的平台及相关信息,编译器只要产生能够在虚拟机上进行运行的一种目标代码,它就可以在各种平台运行而无需修改,而虚拟机本身需要移植。当虚拟机要执行相应的字节代码时,再将字节码解释成相应的具体平台上的机器码进行执行。
软件恢复技术是应对系统软件老化现象的有力效方法。简单地说,是当软件的性能衰退到了一定程度时,终止程序的运行,并对系统重置来清理系统内部的状态,从而能够释放操作系统的资源,恢复软件的性能,并能有效减少由于系统软件的老化造成意外终止而带来损失。在进行恢复策略研究时,依据一定系统模型,将系统状态分成系统鲁棒状态、系统预故障状态及系统故障状态。根据对以上原型系统的分析,软件恢复策略一般分基于时间的软件恢复策略与基于检测的软件恢复策略2种。
4.1基于时间的软件恢复策略
基于时间的恢复策略是实现简单、成本可预计的一种恢复模式。该方法通常是基于最小的恢复成本和最短的停机时间来得到更高系统服务率或者更快服务响应来提前确定最优恢复的时间间隔,对性能衰退的系统周期性的进行恢复。基于时间的软件恢复策略中重点研究的一个问题是如何确定最优的恢复时间表的问题。
4.2基于检测的软件恢复策略
基于检测的恢复策略是通过对系统的检测来确定恢复模式。恢复模式的确定通常根据系统参数、系统运行期间采集到的系统信息并通过合理的数据统计等来确定相应的恢复模式。基于检测的软件恢复策略首先要确定系统性能进行衰退的阈值和评价指标,主要是分析造成系统的性能衰退的主要的一个原因或者几个原因的协调折中。在系统的运行过程中对系统的性能进行检测,若达到了预先所设定的阈值时则执行软件恢复。为减少监控的成本,在检测时可以在指定的时间间隔内进行周期性的检测。
5软件保护与恢复技术的应用
通过对系统进行综合的权衡和比较及算法研究,得到完整保护的流程是:首先要对软件程序有限制,要求用户至少要进行注册才能得到完整的使用权限,并用程序运行与用户机的硬件相关联的注册码进行关键功能解封。其次,为防止解密者利用各种工具得到程序的关键点及关键的信息,应采用反跟踪技术、反调试技术及反汇编静态技术等进行分析。另外,最好给程序加上一个外衣,把程序包起来,也就是利用加壳软件或加密锁等产品来提高自己程序的防范能力和增加破解门槛。也要考虑怎样有效的保证自己程序只给合法用户使用,而非合法用户即使在正常的途径下得到了正式软件业也无法正常使用的问题。目前此问题一般用“一机一码”进行许可注册的方式进行解决。在软件恢复中,在保证产生更多恢复方法的同时要结合基于时间与基于测量的2种思路进行研究。同时在软件容错领域中,将软件恢复的相关概念与其他的有效技术概念相结合,以便产生出更多新概念和新方法。
6结语
国内外的专家学者对软件的保护及恢复进行了较为深入的研究和探讨,并且取得了一系列丰富的科研成果。本文对计算机软件保护与恢复的理论研究有一定的指导意义。
作者:马宗亚张会彦单位:河北软件职业技术学院