时间:2015-06-26 09:38 文章来源:http://www.lunwenbuluo.com 作者:杜华 余小东 点击次数:
摘要:与计算机软件开发相比,计算机软件维护的成本要相对较低,所获得的利益更大,所以当前计算机软件维护已成为行业竞争的焦点。但是,在实际操作过程中,由于一系列问题的困扰,致使计算机软件维护工作变得较为艰难,在此背景下,逆向工程应运而生。本文对逆向工程在计算机软件维护方面的应用展开了研究,为实现逆向工程在计算机软件维护中的有效应用献计献策。
【关键词】逆向工程软件维护应用研究
随着计算机技术的发展,计算机应用领域的逐渐扩大,对计算机软件提出了更高的要求,这就导致计算机软件行业面临着巨大的挑战。计算机软件的开发需要投入大量的人力、财力,所以相对来讲计算机软件的维护更符合当前行业利益目标的定位。计算机软件维护的质量直接关系到软件的使用寿命,但是,面对当前计算机软件更新维护工作所面临的困境,维护工作的开展无法实现利益的最大化。而将逆向工程应用于计算机软件的维护中,将有效的解决当前的这一问题。
1逆向工程基本应用原理
1.1逆向工程定义
其定义可总结为:在分析计算机软件原有系统的基础上,对系统的构成部分进行一一的识别,并明确软件组成部分之间的关系,进而构建出新的、更高等级的系统。也就是说逆向工程能够通过对计算机软件的源代码进行分析、识别,从而为构建出新系统的框架。
1.2逆向工程理论上的应用程序
在逆向工程的使用中,通常需要包括如下两个环节:首先是抽取环节。这一环节指的是对计算机软件的原有系统实现分析,并识别出系统构成部分之间所存在的联系;其次是抽象环节。这一环节指的是在分析识别的基础上,实现对更高层次或者另一层次系统的构建,整个过程是抽象的,是依靠对源代码的转化。但是实现第二环节的基础是实现对原有系统的分析与识别,而要想实现第一环节就需要对原有系统进行理解。在原有系统的理解上,通常采用两种方法:自底而上或者是自顶而下。采用第一种方法时,需要实现对原有代码的分析,从而了解系统各部分的功能,在此过程中构建程序框架。其中所涉及到的最主要的点在于要获得软件的源代码,如果无法获得软件的源代码,那么就可以采用如下几种方法:动态跟踪、反编译等。如果采用第二种方法,所需要的是进行对原有系统的假设,假设后再去验证假设是否成立,而在验证的过程中就实现了目的。以上两种方式的使用更需要互相配合,这样才能够对原有系统实现更深层次的理解,进而有利于接下来软件维护工作的开展。需要强调的是,在设定环节中,预先设定的内容需要具备一定的针对性,这样才能实现对原系统的全面理解,与此同时,通过反复验证的过程,能够为程序员提供更为深入的理解。
2逆向工程的实际应用分析
前文中提出,在使用逆向工程实现软件维护时,依靠的是以源代码为核心,实现对原有程序的理解与掌握,进而才能实现对新的或者是更高层次系统的构建,也就是实现系统软件的升级维护。但是,由于在使用计算机的过程中,很多时候使用者对于源代码的重要性缺乏了解,进而就造成了源代码的丢失。基于此种情况下,逆向工程在实际使用过程中,要想实现对软件的维护,就需要做到:
2.1通过假设与验证实现对原有系统的了解
在缺失源代码的情况下,要想实现对原有软件系统的分析与识别,进而理解原有系统,就需要采用假设的方式,经过反复的验证与对假设内容的补充,实现对原系统抽象构造的理解。
2.2将执行二进制代码进行分解,以函数的形式实现对原系统的分析
通常情况下,软件执行的二进制码是由很多个函数共同构成的,因此,这就要求要先采用IDA反汇编工具对函数集合实现分析,从而得出这些函数的调用图。这样的过程就能够充分且完整的将执行函数间的调用关系明确的表述出。
2.3再将函数进行进一步的细化
在实施这一环节时,需要采用控制流图实现对二进制中函数的描述。由于每一个函数是可以进行再次分割的,最终形成基本块。基本块这一术语所描述的对象是程序的执行顺序,程序在执行命令的过程中只会从进口进入,然后从出口退出。在整个执行程序中,只存在一个进口与出口,进口是程序的执行顺序中的第一个语句,出口指的是最后一个语句。在建立函数调用图与控制流图的基础上,要对各个断点实现跟踪,从而实现对整个原程序的理解。在设置断点的过程中,软件程序员就能够逐渐理清原程序的执行方式,进而明确软件的基本构架,这样就实现了逆向工程的应用。在使用逆向工程的过程中,需要程序员熟练的掌握使用原理,将各个步骤按部就班的实施,进而通过对原代码的分析、识别,实现原系统的构建,进而也就实现了对计算机软件的升级维护。
3总结
综上所述,随着计算机技术的发展,计算机应用领域的不断扩大对计算机软件提出了更高的要求。在面对软件行业队伍逐渐扩大的今天,要想实现自身经济效益的最大化,通过软件开发这一方式显然是不够的,加上当前软件开发在成本上的投入是软件维护的近二倍资金,所以,软件维护成为了行业发展的一个趋势。面对软件维护工作中所存在的一系列挑战,逆向工程的应用能够很好的解决这一问题,其通过对原系统的分析、识别,最终实现对软件程序的升级与维护,进而解决了源代码丢失所带来的问题。当前,在使用逆向工程的过程中,需要程序员熟练的掌握这一工程技术的原理及相应的操作流程,从而实现对逆向工程的科学应用。
参考文献
[1]杜丹.逆向工程在软件维护方面的应用研究[J].软件导刊,2013,11(36):47-48.
[2]肖昕.逆向工程在软件开发与维护中的应用[J].福建电脑,2009,11(2):50-51.
[3]孙爱民,倪光南.嵌入式软件是迈向创造的契机闪[R].中国电子报,2010,8(16):136-137.
联系方式
随机阅读
热门排行