一种对软件中的数据进行替换的方法技术

技术编号:2843322 阅读:163 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种对软件中的数据进行替换的方法,该方法对于二进制文件中需要替换的数据,采用特定标识表示出其在二进制文件中的长度和位置,当需要替换时,根据该标识获得所要替换的数据在二进制文件中的长度和位置,进行所述替换,通过本发明专利技术提供的技术方案可以直接针对二进制文件进行数据替换,而无需在源程序中进行,这样就免去了重新进行编译的过程。该方法还适用于使用者需要进行数据替换,而程序开发者不希望其获知源程序的场合。

【技术实现步骤摘要】

本专利技术涉及软件编程技术,具体地说,涉及。
技术介绍
计算机软件中包括操作命令和数据。软件开发商编制软件时,经常存在许多彼此功能基本相同的软件,这些软件执行功能基本相同,因此具有相同的操作命令,但是,同样的操作命令所操作的数据对象往往并不相同。针对上述情况,软件开发厂商为避免重复工作,采取了一些措施实现对同一个软件的数据部分进行替换,以便使同一个软件能够为反复使用。例如,现有技术中一种广泛使用的替换方式是利用外部软件进行替换。对应于可替换软件,外部软件中具有相应的资源索引。当需要读取可替换软件中的可替换数据时,只需要调取相应的外部软件,根据所述索引获得对应的数据即可。例如可替换软件A,其可替换数据为显示字符a,b,c,对应的索引为001,002,003,外部软件为B,C,分别是中文版和英文版的,B中索引001代表“我”,002代表“你”,003代表“他”,C中索引001代表“me”,002代表“you”,003代表“him”。当需要读取该可替换软件中的可替换内容a,b,c时,只需根据对语言的选择而调用B或C即可。上述现有技术的缺陷在于,这种替换方式是在源程序中实现的,而程序最终需要编译成为二进制形式的可执行文件才能执行,因此,这种替换方式需要对程序重新进行编译,不能直接利用已经编译完成的二进制文件,造成了资源和时间的浪费。在Windows环境下进行资源数据的替换工作时,开发人员通常基于Resource Hack的原理来完成,Resource Hack的原理为在Windows环境下,软件中的二进制文件是PE格式的,读取二进制文件后,可以对其中特定的数据进行解析、拆分。基于该原理,Resource Hack可以直接查看、修改软件的菜单、对话框、字符串表等数据资源。但Resource Hack只能用来替换与操作界面相关的数据,而且只能针对PE格式的二进制文件。因此,这种方式有很大的局限性。
技术实现思路
针对上述缺陷,本专利技术解决的技术问题在于,提供一种可以自定义可替换内容并且直接对二进制文件进行数据替换的对软件中的数据进行替换的方法。本专利技术,包括以下步骤11)编译获得可替换数据设置有标识的二进制文件;12)根据所述标识,检索获得可替换数据在二进制文件中的位置;13)根据所述可替换数据在二进制文件中的位置,将所需数据替换原数据。优选地,所述步骤11)包括在编制源程序时,将所述标识与可替换数据在源程序语句上相连结;编译所述源程序,获得可替换数据设置有标识的二进制文件。优选地,所述标识是自定义的由多个字节组成的字符串,或者是自定义的由一定长度的数据组成的标识串。优选地,所述标识具有全局唯一性。优选地,所述具有全局唯一性的标识具体是采用全局统一标识符自定义的标识。优选地,所述可替换数据为多个,每个可替换数据分别具有各自独立的全局统一标识符作为标识。优选地,所述可替换数据为多个,其中连续的可替换数据可以采用同一个全局统一标识符作为标识。优选地,所述可替换数据与全局统一标识符的关系可采用一个对照表来记录。优选地,所述步骤12)包括打开带有可替换数据标识的二进制文件;读取所述二进制文件,并在该文件中检索所述可替换数据的标识;根据所述获得的标识,确定可替换数据在该二进制文件中的位置。本专利技术的基本思路是,对于二进制文件中需要替换的数据,采用特定标识表示出其在二进制文件中的长度和位置。当需要替换时,则根据该标识获得所要替换的数据在二进制文件中的长度和位置,进行所述替换。所述的标识可一次采用全局统一标识符进行替换。与现有技术相比,本专利技术提供的技术方案可以直接针对二进制文件进行数据替换,而无需在源程序中进行,这样就免去了重新进行编译的过程;也适用于使用者需要进行数据替换,而程序开发者不希望其获知源程序的场合。相比与采用Resource Hack原理进行替换的方式,该方法不受二进制文件的格式的限制,也不受数据内容的限制。附图说明图1是本专利技术第一实施例的总体流程图;图2是本专利技术第一实施例的标准软件的二进制编码文件;图3是本专利技术第一实施例步骤S1的流程图;图4是本专利技术第一实施例步骤S2的流程图;图5是本专利技术第一实施例进行数据替换后获得的二进制编码文件。具体实施例方式本专利技术提供的软件数据替换方法,其基本思路是在标准软件中,采用全局惟一的标识标记需要替换的数据,通过该标识可以定义该数据在二进制文件中的位置和长度。需要生成替换软件时,根据二进制文件中设置的所述标识,查找到需要替换的数据,并且使用新的数据替换所述数据。请参看图1,为本专利技术第一实施例的总体流程图。如图1所示,该实施例提供的方法包括两大步骤步骤S1,编译可替换数据带有标识的二进制文件。步骤S2,根据二进制文件中的所述标识进行数据替换。为了方便进行说明,现在结合一个在屏幕上输出“Hello World!”的程序说明该实施例。以下为该程序的源程序,图2为该程序编译后获得的二进制编码文件,以及以ASCII码读取该二进制编码的内容。//Replace.cpp:Defines the entry point for the console application...........1// 2#include″stdafx.h″3 #include<Windows.h> 4typedef struct_ES_REPLACE_DATA5{ 6GUID Loc_flag;7DWORD ulStructSize; 8char szString;9}ES_REPLACE_DATA; 10ES_REPLACE_DATA ReplaceData= 11{ // GUID Loc_flag; 12//{CD6A1906-400B-46c2-9DCB-918C135BA910} 13{0xcd6a1906,0x400b,0x46c2,0x9d,0xcb,0x91,0x8c,0x13,0x5b,0xa9,0x10},14//DWORD ulStructSize; 15sizeof(ES_REPLACE_DATA), 16// string to print; 17(″Hello World!\n″), 18};19int main(int argc,char*argv[])20{ 21printf(ReplaceData.szString); 22return 0; 23} 24该程序中,需要在屏幕上输出的“Hello World!”是需要替换的数据。也就是说,希望还可以利用该程序的二进制文件,直接将所述的“Hello World!”在屏幕上输出。如图3所示,该图为步骤S1的具体步骤。以下结合该流程图进行说明。为了更加方便的说明,该实施例是对应于上述程序提供的。步骤S101,确定需要替换的可替换数据。在该例中,可替换数据是在屏幕上输出的字符串“Hello World!”。步骤S102,确定自定义标识。所述自定以标识需要具有全局唯一性,以免与其他数据混淆,具体可以利用全局统一标识符GUID获得可替换数据“Hello World!“的标识。在本实施例中,通过使用全局统一标识符函数GUID获得源程序中的字符串CD6A1906-400B-46本文档来自技高网
...

【技术保护点】
一种对软件中的数据进行替换的方法,其特征在于,包括:11)编译获得可替换数据设置有标识的二进制文件;12)根据所述标识,检索获得可替换数据在二进制文件中的位置;13)根据所述可替换数据在二进制文件中的位置,将所需数据 替换原数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:陆舟于华章
申请(专利权)人:北京飞天诚信科技有限公司
类型:发明
国别省市:11[中国|北京]

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

1