动态链接的电脑系统中扩增程序功能的方法技术方案

技术编号:2886887 阅读:217 留言:0更新日期:2012-04-11 18:40
一种动态链接的电脑系统中扩增程序功能的方法,利用动态链接的运作方式,将扩增功能以公用模组件的形式完成,并在一程序中以公用模组件取代其原先引用的另一公用模组件,同时存储被取代公用模组件的相关引用数据,使该程序执行前先执行扩增功能的公用模组件,随后扩增功能的公用模组件按所存储相关引用数据,将被其取代的公用模组件还原至程序中,使其正常执行程序并以扩增功能公用模组件的执行结果,决定其执行方式。(*该技术在2018年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种,特别是涉及一种在不对原程序码重新编译、链接的情况下,加入新编程序码以扩增新功能,且使不同电脑系统都可共用所增加新编程序码的方法。在一电脑系统中,要发展出一应用程序,使电脑系统可按设计者在应用程序中的规划,进行一连串的处理过程,必须经过程序源代码(source code)撰写、将程序源代码编译(Compile)成电脑系统可执行的格式(PortableExecutable以下简称PE格式)、再将该PE格式码与电脑系统提供的公用模组件(Utility Module)链接(Link)等步骤,之后电脑系统才能正确地按设计者的规划进行处理。程序源代码通常是以适合人阅读的高级语言(High Level Language)来编写,用方便程序撰写者进行思考、规划;而PE格式码则是一种适合电脑系统读取的机器码(machine code),该PE格式码因涉及电脑系统的硬件结构,及其低级运作〔通常与寄存器(Register)、指针(Pointer)、地址(Address)、堆栈(Stack)等有关〕,极为复杂而难懂;公用模组件则是电脑系统中,将大多数程序经常进行运作,按计算机系统的特定格式,写成可被其他程序重复引用的模组件,例如微软公司(Microsoft)视窗(Windows)操作系统(Operating System)下的动态链接库(Dynamic Link Library)。而现今的电脑系统为了减少众多程序中,每一个别程序都包括其本身引用的公用模组件,造成系统资源的大量浪费(例如一公用模组件被1000个程序所引用,则该各程序中便存在着1000份重复的该公用模组件,占用大量存储空间),多采用动态链接(Dynamic Linking)模式,在该模式下,程序中仅存有其所引用公用模组件的相关信号(如公用模组件的名称及其输入参数、输出参数等),电脑系统在程序执行时,才动态地将程序本身与其所引用的公用模组件进行链接,之后程序才能正常地执行。当设计者依照其构想、规划、撰写一应用程序(Application program)使电脑系统按其意思进行处理后,通常该应用程序的内容就不再变动,此时当使用者有了新构思,欲在该应用程序中加入新功能,例如,在一程序执行以前加入使用期限检查等功能时,现有技术通常采用下列两种方法实施1.应用程序重整即先编写好一段程序源代码(source code),此段程序源代码用以执行所希望添加的新功能,再将这段程序源代码所执行的功能加入可执行程序中,即将这段新编写的程序源代码,与原可执行程序的程序源代码结合,成为一包括扩增功能的新程序源代码,再重新编译(Compile)该新程序源代码,得到一个新的PE格式码--PE,再将该PE格式码与电脑系统的公用模组件链接(Link),之后电脑系统才能正确进行处理。如此新的可执行程序PE即可完成扩增的功能,并且不影响原可执行程序应有的功能,其缺点是必须取得欲扩增功能PE格式文件的程序源代码,且需要在相关的电脑系统环境下进行编译(Compile)和链接(Link),例如微软公司的Windows操作系统下的程序码,只能在Windows操作系统环境下进行编译(Compile)和链接(Link),而微软公司的NT操作系统下的程序码只能在NT操作系统环境下进行编译(Compile)和链接(Link),故应用程序重整的方法受操作系统的限制,费时费力,如附图说明图1A所示。2.用汇编语言(Assembly Language)编写一段程序码,这段汇编语言程序码可以实现附加功能,再修改原PE格式码的入口点(Entry Point,即程序开始执行的起点),使之与自编程序码相呼应,指向自编程序码的开始执行位置,此种方法也可在原程序码中实现附加的功能,但必须修改原来PE格式码的内容,其缺点在(a)复杂,因PE格式码是电脑所执行的机器码(MachineCode),较为艰涩难懂;(b)由于汇编语言与硬件结构密切相关,不同的硬件结构有不同的汇编语言,因此该方法虽优于前一种技术方法,但对于每一种不同的硬件平台结构(CPU类型),都要重新编写一对应的汇编语言程序码,因而在应用上有很大的限制,如图1B。本专利技术所采用的方法,克服上述两种现有技术的缺点,无须重新编译或链接,不受操作系统与硬件平台的限制,即可达到扩充功能的目的,如图1C所示。本专利技术为一种,该方法主要是利用该电脑系统的动态链接特性,在其可执行程序码(PE格式码)中,将对公用模组件的引用,改以对新编程序码的引用取代,使原程序码在执行以前,必先执行新编程序码,以在不对原程序码重新编译、链接的情况下,加入新编程序码以扩增功能。本专利技术的目的在于由修改可执行程序中的动态链接信号,以在不重新编译、链接的情况下,在一可执行程序中加入新编程序码以扩增功能,且使不同电脑系统都可共用所增加的新编程序码。本专利技术的目的是这样实现的,即提供一种,该方法包括以一新增公用模组件取代一可执行程序中引用的一原有公用模组件,并将该原有公用模组件的相关引用参数存储于该可执行程序中;在该新增公用模组件执行完后,使该可执行程序引用该原有公用模组件,随后执行该可执行程序。下面结合附图,详细说明本专利技术的实施例,其中图1A,图1B和图1C为现有技术与本专利技术的原理对照图;图2为本专利技术一实施例对一可执行程序实施前后的对照图;图3为本专利技术一实施例的部分流程图;图4为本专利技术一实施例的部分流程图;图5为本专利技术一实施例的屏幕显示图。本专利技术是一种,尤指一种一公用模组件,可使自行编写的程序码在一可执行程序码之前执行,使扩充原可执行程序码的功能,且在此扩充功能的过程,不需对原可执行程序码重新编译、链接,而在执行完自行编写的程序码以后,动态地将原可执行程序码还原为未加入自行编写的程序码以前的内容,使执行完自行编写的程序码之后,可正常执行原可执行程序码的功能。为能清楚揭露本专利技术的技术特点,以下就本专利技术在微软公司Windows操作系统下的一实施例说明,在该实施例中,原可执行程序为OLD.exe,该可执行程序中引用了公用模组件,文件名为Kerne132.dll的动态链接库(Dynamic Link Libray-DLL),而自行编写的程序码则存于文件名为AddIn.dll的动态链接库中,而NEW.exe为引用了AddIn.dll新的可执行程序,本实施例的实施步骤逐一说明如下在动态链接的电脑系统中,PE格式文件都包括有一引入库表(ImportLibrary List),其结构如下 此引入库表(Import Library List)中的每一项表示了对一个32比特动态链接库的引入,其中最主要的信号是要引入的动态链接库的文件名,及要由此动态链接库中引入的函数的函数名称或序号表(引入函数表);在每一动态链接库中,也都包括一与引入函数表对应的表(输出函数表),其中列出了一动态链接库文件中的所有输出函数。当Windows操作系统执行可执行程序OLD.exe时,会先行搜寻(Search)其引入库表(Import Library List),将该表中包括有其文件名的每一动态链接库(本实施例中为Kerne132.dll),由磁盘载入存储器内,然后对照引入库表中的信号,将存储器内该动态链接库Kerne132.本文档来自技高网...

【技术保护点】
一种动态链接的电脑系统中扩增程序功能的方法,其特征在于,该方法包括: 以一新增公用模组件取代一可执行程序中引用的一原有公用模组件,并将该原有公用模组件的相关引用参数存储于该可执行程序中; 在该新增公用模组件执行完后,使该可执行程序引用该原有公用模组件,随后执行该可执行程序。

【技术特征摘要】

【专利技术属性】
技术研发人员:林光信陈玄同侯震宇
申请(专利权)人:英业达股份有限公司
类型:发明
国别省市:71[中国|台湾]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1