CN1373418A - 抽换可携式执行文件格式文件资料的方法 - Google Patents
抽换可携式执行文件格式文件资料的方法 Download PDFInfo
- Publication number
- CN1373418A CN1373418A CN 01106780 CN01106780A CN1373418A CN 1373418 A CN1373418 A CN 1373418A CN 01106780 CN01106780 CN 01106780 CN 01106780 A CN01106780 A CN 01106780A CN 1373418 A CN1373418 A CN 1373418A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- resource
- substituting
- portable execute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
一种抽换可携式执行档(PE)格式文件资料的方法,用以分离可携式执行档格式文件中的程序代码与数据库/程序代码,使离线人员可直接编写数据库或程序代码,而成为文件中的一部分,无须原始编程人员参与,因此,可达到无须经过编译即可得可执行文件(EXE)的目的,也可降低开发人员软件开发的复杂度,提高产品的可维护性。
Description
本发明是有关一种抽换可携式执行文件(PE)格式文件的资料的方法,特别是将文件内的程序与资料/程序分离,而无须经过编译即可得到可执行文件(EXE File)的功能。
请参照图1,是传统方法中,编写带有资料程序的工作流程图。首先,由离线(Offline)人员提供资料(Data)(步骤100~101),再由编写程序人员编译(Compile)源文件(Source file)(步骤102),接着如果离线人员没有要更新资料(步骤103),则所要的可执行文件便得以生成(步骤104~105)。然而,如果此时离线人员需要更新资料,则必须重新提供资料,且再由编程人员重新编译,才能生成PE格式的执行文件(重复步骤101--103)。
由图中可以看出,传统方法中软件的开发过程需要编程人员全程参与,如果欲更换软件中的数据库(如将英汉辞典换成汉英辞典等数据库的变换),则更要编程人员大幅修改程序,如此增加了相当大的不便。
由上所述可知,传统上编程人员所使用的编程方法十分复杂。此外,在通常情况下,由于习知的电子消费型产品或计算机软件所开发的程序中,执行文件是采用可携式可执行文件(PortableExecutable,PE)格式,其资料是包含在程序之中,因此对资料的修改需要编程人员重新编译生成PE格式的可执行文件(EXE)。
有鉴于此,为了改善上述传统软件中资料与程序不分离,因而造成欲变换资料必须修改软件中程序的缺陷,本发明提出一种可以实现资料和程序分离的方法,可以在Windows平台,如Windows 95、Windons 98、Windows NT等任意环境内,实现资料与程序的分离,让PE格式的执行文件中的资料与程序可随意替换。如此,一套程序可套用多套资料或挂接多种不同功能(如多种语言的辞典),可使开发工作仅着眼于很少部份的内容更换,并使可编程人员大幅度退出开发的后绩工作,而成为一种模块迭加的整合开发方式。同时,通过这种技术,可实现无须编译器(Compiler)即可自动生成可携式执行文件格式的文件的功能。
本发明的主要目的即是要提供一种抽换可携式执行文件(PE)格式文件的资料的方法,是用以抽换可携式执行文件格式文件内的程序代码与数据库/程序代码,而达到无须经过编译即可得到可执行文件的目的,且可降低开发人员软件开发的复杂性,提高产品的可维护性。
根据上述揭露的抽换可携式执行文件格式文件的资料的方法,其步骤包括:
载入可携式执行文件格式文件;
分析可携式执行文件格式文件,且找出可携式执行文件格式文件中的欲抽换资料地址;
抽换可携式执行文件格式文件中的欲抽换资料;以及
将抽换后的资料重新存入可携式执行文件格式文件,成为一新可执行文件。
利用上述方法即可完成将文件内的程序与资料相分离,当欲修改文件的数据库或程序代码时,仅需做一小部份的修改,不需重新编译原始程序代码,可达到方便软件的升级维护、节省开发人力的功效。
有关本发明的详细内容及技术,兹就配合图式说明如下:
图1,为在传统方法中,编写带有资料与程序的软件的工作流程图;
图2,是采用本发明方法编写带有资料与程序的软件的工作流程图;
图3,是本发明资源抽换的流程示意图;
图4,是PE格式文件中的结构示意图;
图5,是PE格式文件的资源目录结构;
图6,是本发明抽换可携式执行文件格式文件的资料方法的流程示意图;以及
图7,是为采用本发明方法实现“三国演义的题库”的示意图。
请参照图2,采用本发明方法后,编写带有资料与程序的软件的工作流程图,首先,由编程人员提供一模板文件(步骤200~201),如果离线人员没有要更新资料(步骤202),那么所要的执行文件文件便得以生成(步骤203~204)。不过,即使此时离线人员需要更新资料,只要由离线人员自行更新,无须编程人员参与(重复步骤202循环)。
本发明方法可以在windows平台,如windows 95、Windows98、Windows NT等任意环境内,实现软件中资料与程序的分离,让执行文件(EXE)文件中的资料与程序可随意替换。如此,一套程序可套用多套资料或挂接多种不同功能(如多种语言的辞典),可使编程人员大幅度退出开发的工作,而仅着眼于很少部份的内容更换,成为一种新的“程序代码”(Code)+“(可抽换,Changeable)数据库”(Database),以及“程序代码”+“(可抽换)程序代码”整合开发方式。同时,借用这种技术,可实现无须编译器(Compiler)即可自动生成执行文件的功能。
请参照“图3”,其表示的是一种资源抽换流程图。首先,检查源文件(Source file)是否为PE格式的可执行文件(参考图4的说明)(步骤300~301)。如果不是,则流程结束(步骤310);如果是,那么初始化变量(步骤302)。接着,初始化替换讯息(步骤303)。然后,检查初始化是否成功(步骤304),如果不成功,则流程结束(步骤310);如果成功,则开始搜寻PE格式文件的资源段(步骤305)。接着,读入PE格式文件的资源(Resource)(步骤306)。然后,搜寻固定资源(步骤307)。之后,寻找数据入口(Data Entry)(步骤308),如果没找到,那么流程结束(步骤310);如果找到,那么替换固定资源(步骤309~310)。
以下详述如何搜寻PE格式文件的资源区段:可执行文件是指计算机可直接执行的程序,所有的应用软件都有可执行文件,这些文件的附加档名大多是.EXE或.COM,EXE是在MS-DOS当中可执行文件的格式,所有扩展名为.EXE的文件都是可执行文件。一个可执行文件可分为资料区段(data segment)、程序代码区段(codesegment)、堆栈区段(stack segment)和额外区段(extrasegment)四部份。而EXE文件的格式,包括了一个不定长度的档头,MS-DOS便是利用文件头内的信息来加载它。
COM和EXE文件最大的不同,便是COM文件没有档头,文件一开始就是程序代码和资料码区段,而EXE文件有了这些信息,便可将程序放入任意的内存地址执行,这也就是重新配置表格(relocation table)的功能。EXE文件包含了文件头的信息,程序加载器(program loader)在加载EXE格式的可执行文件之前,会参考这些信息,以决定程序代码的实际地址;COM格式的执行文件就没有这些问题,它的文件便是程序本身,因此程序的能力也就受到限制。
请参照图4,绘示一种存在于PE格式文件40中的结构示意图。由图中所揭示,PE格式文件40以一DOS文件头(DOS_HEAD)开始,DOS文件头中存在如下常数,指向NT头(NT_HEAD)42,从NT头42中我们可检查其前两个字符串是否为“PE”,辨识字符41(Character),以确定是否确为PE格式的文件40。另外,PE格式的文件40中存在有若干“节”(Sections)44,通过节表(SectionTable)43,我们可以查到资源节45(.rsrc节)的入口地址,而此资源节45正是PE格式文件40中资源(Resource)所在节。
在资源节45中,PE格式文件40中的资源存在有如“图5”所示的资源目录50(Resource Directory)结构。由图中可以从资源目录50找到其次一层资源目录51,及其它次一层资源目录,可依据不同的资源名称(ID)而对应至不同的资源目录,在次一层资源目录51之下,还包括有次二层资源目录511、512,而每一层资源目录下则依据其内所包含的入口(Entry)对应到不同的目录,因此,在次二层资源目录511、512下,分别对应到一资源人口5110、5120,用以分别找到文件中所有的资源,而可修改资源内容及其所在资源目录50、51、511/512中所指的资源入口5110/5120,更新整个资源目录50结构,以达到抽换资源的目的。
由上所述可以得知,本发明的关键技术在于执行文件中程序和资料/程序的抽换方法。请参照“图6”,是为本发明抽换可携式执行文件格式文件的资料方法的流程示意图,该方法详述如下:
1.当流程开始,加载可携式执行文件(PE)格式文件(步骤600~601);
2.进行分析可携式执行文件格式文件的节表(SectionTable),且找出可携式执行文件格式文件中的资源节(.rsrc节)入口地址(Data Entry)(步骤602);
3.依照资源节的资源目录(Resource Directory)找出一资源区段(步骤603);
4.读入资源区段内的资源(Resource)(步骤604);
5.修改此一资源,并更新整个资源目录结构(步骤605);以及
6.将资源节重新存入可携式执行文件格式文件,且更新节表(步骤606~607)。
通过如此的方法,即可达到将文件内的程序与资料相分离,当欲修改文件的数据库或程序代码时,仅需做一小部份的修改,不需重新编译原始程序代码,可达到方便软件的升级维护、节省开发人力的功效。
现通过对一软件工具《三国演义的题库》中资料与程序相分离做为例子进行说明。
请参阅图7,其所绘示为采用本发明方法实现“三国演义的题库”的实现示意图。上述《三国演义的题库》是一种游戏与学习相结合的软件,其通过不定期从网络上下载测验试题,从而更新软件资料来达到学习的目的。使用者在玩此游戏时有不断改变的学习需求,就要求不断更换试题资料方面而言,对于不同类型的试题资料,要有相应的解读程序,依传统的方法,实现此类变化需要该项目编程人员全程参与,配合资料变更修改程序,并重新进行编译。而通过本发明方法则可以图7模式实现此类变化。
请参见图7,其所绘示为采用本发明方法实现“三国演义的题库”的实现示意图,其过程如下所述:
1.此软件开发时,程序与资料分别编写,其中,题库资料(Database)全部位于一个文件中,将其定义为自定义资源(CUS_DATABASE)加入工作流程、编译、连接整合;
2.由第一个编程人员编写游戏701(GAME)程序及某一题库资料解读程序或游戏展示引擎,整合资料制成PE格式的执行文件或最终代码(ROMCODE)成为固定的资料70;
3.编辑人员生成某一新的题库资料712(Questions Library,Data File);
4.此时,有第二个编程人员编写该数据库的解读程序,是为一可抽换的资料71部份,如试题显示引擎711(ExaminationDisplay Engine,DLL File),如解读程序未变则不需此过程;以及
5.利用先前揭露的方法写成的抽换程序将PE格式的执行文件或最终代码中资料及解读程序换掉,构成更新的游戏。其过程如下,加载PE格式的执行文件(EXE),分析其内容以找到节表,而通过其找到资源节的入口地址。之后将资源目录结构加载,搜寻自定义(CUS_DATABASE)资源,并在其中找到要替换的资源,将该资源更新,然后更新资源目录结构,将更新后的资源回填到PE格式文件中,以完成节表更新。
上述过程包含于一个抽换程序中,使用时要向此程序指明:
(1)欲更新的文件(exe)
(2)欲更新的资源类型。
(3)欲更新的资源名称ID。
(4)新资源的内容。
通过上述方法,即可完成将软件中的程序与资料互相分离,可达方便软件的升级维护、节省人力的功效。
根据本发明所揭露抽换可携式执行文件格式文件的资料的方法,通过上述实施例说明,本发明具有如下优点:
1.若一个编程人员在游戏完成后离职,则该软件的更动与升级完全可由他人取代完成,并无不良影响及困难;
2.编辑人员可同时开发多种数据库(Database)配合以少量解读程序,则不难以最少的编程人员,实现系列软件的开发,大大降低了产品的开发成本;
3.程序的使用者界面(User Interface,UI)部份可与核心各自独立编写,游戏可内嵌抽换程序,让使用者可根据自己喜好设计个性化界面,以提升程序亲和度;
4.可降低开发(RD)人员软件开发的复杂性,提高产品的可维护性;以及
5.可适用于一般个人计算机(Personal Computer,PC)或手提式计算机(Handheld Personal Computer,HPC)等各种消费型电子产品上,具有广泛的使用性。
以上所叙述仅为本发明的较佳实施例,凡依据本发明权利要求书所做的等效变化或修正,皆应属于本发明专利的保护范围。
Claims (15)
1.一种抽换可携式执行文件(PE)格式文件的资料的方法,其步骤包括:
加载该可携式执行文件格式文件;
分析该可携式执行文件格式文件,且找出该可携式执行文件格式文件中的欲抽换资料地址;
抽换该可携式执行文件格式文件中的欲抽换资料;以及
将该抽换后的资料重新存入该可携式执行文件格式文件,成为一新的可执行文件。
2.根据权利要求第1项所述抽换可携式执行文件格式文件的资料的方法,其中在该加载文件步骤之前,还包括有:
判断该文件是否为PE格式的文件。
3.根据权利要求第2项所述抽换可携式执行文件格式文件的资料的方法,其中该判断文件格式的步骤,是通过该文件的辨识字符(Character)是否为PE所决定。
4.根据权利要求第1项所述抽换可携式执行文件格式文件的资料的方法,其中该分析文件的步骤,更包括:
分析该文件的节表(Section Table),且找出该文件中的资源节(.rsrc节)地址;
依照该资源节的资源目录(Resource Directory)找出一资源区段;以及
读入该资源区段内的资源(Resource)。
5.根据权利要求第4项所述抽换可携式执行文件格式文件的资料的方法,其中该抽换文件中欲抽换资料的步骤,更包括:
修改该资源,并更新该资源目录。
6.根据权利要求第5项所述抽换可携式执行文件格式文件的资料的方法,其中该将抽换后资料重新存入文件的步骤,包括:
将该资源节存入该文件,且更新该节表。
7.根据权利要求第1项所述抽换可携式执行文件格式文件的资料的方法,其中该资料为程序代码(Code)。
8.根据权利要求第1项所述抽换可携式执行文件格式文件的资料的方法,其中该资料为数据库(Database)。
9.根据权利要求第1项所述抽换可携式执行文件格式文件的资料的方法,其中该文件为一扩展名为EXE的可执行文件。
10.一种抽换可携式执行文件(PE)格式文件的资料的方法,其步骤包括:
加载该可携式执行文件格式文件;
分析该可携式执行文件格式文件的节表(Section Table),且找出该可携式执行文件格式文件中的资源节(.rsrc节)地址;
依照该资源节的资源目录(Resource Directory)找出一资源区段;
读入该资源区段内的资源(Resource);
修改该资源,并更新该资源目录;以及
将该资源节存入该可携式执行文件格式文件,且更新该节表。
11.根据权利要求第10项所述抽换可携式执行文件格式文件的资料的方法,其中在该加载文件步骤之前,还包括有:
判断该文件是否为PE格式的文件。
12.根据权利要求第11项所述抽换可携式执行文件格式文件的资料的方法,其中该判断文件格式的步骤,是通过该文件的辨识字符(Character)是否为PE所决定。
13.根据权利要求第10项所述抽换可携式执行文件格式文件的资料的方法,其中该资料为程序代码(Code)。
14.根据权利要求第10项所述抽换可携式执行文件格式文件的资料的方法,其中该资料为数据库(Database)。
15.根据权利要求第10项所述抽换可携式执行文件格式文件的资料的方法,其中该文件为一扩展名为EXE的可执行文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 01106780 CN1373418A (zh) | 2001-02-28 | 2001-02-28 | 抽换可携式执行文件格式文件资料的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 01106780 CN1373418A (zh) | 2001-02-28 | 2001-02-28 | 抽换可携式执行文件格式文件资料的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1373418A true CN1373418A (zh) | 2002-10-09 |
Family
ID=4655753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 01106780 Pending CN1373418A (zh) | 2001-02-28 | 2001-02-28 | 抽换可携式执行文件格式文件资料的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1373418A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100458700C (zh) * | 2006-03-22 | 2009-02-04 | 北京握奇数据系统有限公司 | 带有安全需求的应用程序的构建方法和装置 |
CN101073054B (zh) * | 2004-12-06 | 2011-01-26 | 德国捷德有限公司 | 加载格式的程序代码的产生以及可执行程序代码的提供 |
-
2001
- 2001-02-28 CN CN 01106780 patent/CN1373418A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101073054B (zh) * | 2004-12-06 | 2011-01-26 | 德国捷德有限公司 | 加载格式的程序代码的产生以及可执行程序代码的提供 |
CN100458700C (zh) * | 2006-03-22 | 2009-02-04 | 北京握奇数据系统有限公司 | 带有安全需求的应用程序的构建方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wilgenbusch et al. | Inferring evolutionary trees with PAUP | |
CN100559346C (zh) | 用于实例化抽象类的系统和方法 | |
Chun | Core python programming | |
US7131112B1 (en) | Managing code changes for software development | |
CN1146788C (zh) | 用于产生平台所特定的编译器的装置和方法 | |
Helfman | Dotplot patterns: a literal look at pattern languages | |
CN1848088A (zh) | 将本机接口函数调用转换为更简单操作的方法和系统 | |
Steele Jr | An overview of common lisp | |
CN1825303A (zh) | 用于编辑标记语言文档的方法和数据处理系统 | |
CN1867911A (zh) | 便于对象系统之间文件属性管理的升级和降级技术 | |
CN1577268A (zh) | 共享库系统及构建该系统的方法 | |
MXPA04008849A (es) | Interfase de programacion para una plataforma de computo. | |
MXPA06000646A (es) | Sistemas y metodos para reconciliar metadatos de imagen. | |
CN1920826A (zh) | 在具有命名空间的文件系统中查找丢失对象的方法和装置 | |
CN1945527A (zh) | 可实现代码复用的server版代码生成系统 | |
CN1410903A (zh) | 适用于个人运算装置的网络物件传送系统 | |
CN1373418A (zh) | 抽换可携式执行文件格式文件资料的方法 | |
CN1290886A (zh) | 优化单字节字符处理的方法、系统及计算机程序产品 | |
Kiernan et al. | The ARCHway project: Architecture for research in computing for humanities through research, teaching, and learning | |
Lin | Migrating to relational systems: Problems, methods, and strategies | |
CN1415097A (zh) | 用于创建通用语言的表达的系统和记录其使用的转换规则的记录介质 | |
CN101079046A (zh) | 题库扩充系统及方法 | |
CN1776685A (zh) | 一种在fat文件系统中支持多国语言的方法及其装置 | |
Cover et al. | Encoding textual criticism | |
CN102681830B (zh) | 一种比较程序文本的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |