一种软件静态数据的加密方法及系统的利记博彩app
【专利摘要】本发明公开了一种软件静态数据的加密方法及系统。该方法,包括:把需要保护的静态数据设定为特定属性;给所述特定属性的静态数据分配存储空间;根据所述存储空间对所述静态数据进行加密。本发明通过对软件内的静态数据进行加密,实现简单,且降低了软件被破解的风险,提高了软件的安全性。
【专利说明】
一种软件静态数据的加密方法及系统
技术领域
[0001]本发明涉及软件技术领域,尤其涉及一种软件静态数据的加密方法及系统。
【背景技术】
[0002]软件的安全形势越来越严峻,软件被破解的情况时有发生,现有对提高软件安全的方法如下:
[0003]I )、在生成最终软件时会把软件的符号表删除掉;
[0004]2)、把软件中的函数名等符号重新打乱,用没有实际意义的符号替换,给反编译带来难度,从而保护软件;
[0005]3)、在嵌入式软件中,把整个软件进行加密。
[0006]而软件中的字符串等静态数据往往包含了软件的关键信息,通过分析软件中的字符串等静态数据可以对软件破解带来很多帮助,这样会对软件的安全造成影响,因此对字符串等静态数据进行加密,也可以提高软件的安全性。
【发明内容】
[0007]本发明提供了一种软件静态数据的加密方法及系统,实现简单,且降低了软件被破解的风险,提高了软件的安全性。
[0008]为实现上述设计,本发明采用以下技术方案:
[0009]—方面,提供了一种软件静态数据的加密方法,该方法,包括:
[0010]把需要保护的静态数据设定为特定属性;
[0011 ]给所述特定属性的静态数据分配存储空间;
[0012]根据所述存储空间对所述静态数据进行加密。
[0013]优选地,所述把需要保护的静态数据设定为特定属性,包括:
[0014]在C语言源码里使关键字把需要保护的静态数据设定为特定属性。
[0015]优选地,所述给所述特定属性的静态数据分配存储空间,包括:
[0016]在链接脚本.1d文件里,给所述特定属性的静态数据分配存储空间,定义所述存储空间的区域边界变量。
[0017]优选地,所述根据所述存储空间对所述静态数据进行加密,包括:
[0018]对编译生成的.elf文件进行分析,提取所述存储空间的区域,对该区域内的静态数据进行加密。
[0019]优选地,所述在链接脚本.1d文件里定义所述存储空间的区域边界变量之后,还包括:
[0020]利用在链接脚本.1d文件里定义的区域边界变量,对所述区域内的静态数据进行解密。
[0021]优选地,所述在C语言源码里使关键字把需要保护的静态数据设定为特定属性,包括:
[0022]在C语言源码里使用_31:1:1^1311丨6_关键字声明一种特定属性;
[0023]使用所述特定属性定义需要保护的静态数据。
[0024]另一方面,提供了一种软件静态数据的加密系统,该系统,包括:
[0025]特定属性设定模块,用于把需要保护的静态数据设定为特定属性;
[0026]存储空间分配模块,用于给所述特定属性的静态数据分配存储空间;
[0027]加密模块,根据所述存储空间对所述静态数据进行加密。
[0028]优选地:
[0029]所述特定属性设定模块,具体用于:
[0030]在C语言源码里使关键字把需要保护的静态数据设定为特定属性;
[0031]所述存储空间分配模块,具体用于:
[0032]在链接脚本.1d文件里,给所述特定属性的静态数据分配存储空间,定义所述存储空间的区域边界变量;
[0033]所述加密模块,具体用于:
[0034]对编译生成的.elf文件进行分析,提取所述存储空间的区域,对该区域内的静态数据进行加密。
[0035]优选地,还包括:
[0036]解密模块,用于利用在链接脚本.1d文件里定义的区域边界变量,对所述区域内的静态数据进行解密。
[0037]优选地,所述在C语言源码里使关键字把需要保护的静态数据设定为特定属性,包括:
[0038]在C语言源码里使用_31:1:1^1311丨6_关键字声明一种特定属性;
[0039]使用所述特定属性定义需要保护的静态数据。
[0040]与现有技术相比,本发明的有益效果为:把需要保护的静态数据设定为特定属性;给所述特定属性的静态数据分配存储空间;根据所述存储空间对所述静态数据进行加密。本发明通过对软件内的静态数据进行加密,实现简单,且降低了软件被破解的风险,提高了软件的安全性。
【附图说明】
[0041]为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本发明实施例的内容和这些附图获得其他的附图。
[0042]图1是本发明【具体实施方式】中提供的一种软件静态数据的加密方法的第一实施例的方法流程图。
[0043]图2是本发明【具体实施方式】中提供的一种软件静态数据的加密方法的第二实施例的方法流程图。
[0044]图3是本发明【具体实施方式】中提供的一种软件静态数据的加密系统的第一实施例的结构方框图。
[0045]图4是本发明【具体实施方式】中提供的一种软件静态数据的加密系统的第二实施例的结构方框图。
【具体实施方式】
[0046]为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0047]请参考图1,其是本发明【具体实施方式】中提供的一种软件静态数据的加密方法的第一实施例的方法流程图。如图所示,该方法,包括:
[0048]步骤SlOl:把需要保护的静态数据设定为特定属性。
[0049]在C语言源码里把需要保护的静态数据设定为特定属性,以便后续在加密时进行提取。
[0050]步骤S102:给所述特定属性的静态数据分配存储空间。
[0051 ]给所述特定属性的静态数据分配存储空间,以便后续对所述静态数据进行加密。
[0052]步骤S103:根据所述存储空间对所述静态数据进行加密。
[0053]根据所述存储空间对应的区域对所述静态数据进行加密。
[0054]综上所述,本实施例通过对软件内的静态数据进行加密,实现简单,且降低了软件被破解的风险,提高了软件的安全性。
[0055]请参考图2,其是本发明【具体实施方式】中提供的一种软件静态数据的加密方法的第二实施例的方法流程图。对于嵌入式系统来说,一般都会在Iinux环境下编译并链接生成.elf文件,然后再根据情况转换成二进制文件(.bin)或者其他格式的可执行文件,所以本实施例从.elf文件切入,把需要保护的数据进行加密。如图所示,该方法,包括:
[0056]步骤S201:在C语言源码里使键字把需要保护的静态数据设定为特定属性。
[0057]在C语言源码里使关键字把需要保护的静态数据设定为特定属性,以便后续加密和解密时进行提取。
[0058]所述在C语言源码里使关键字把需要保护的静态数据设定为特定属性,包括:
[0059]在C语言源码里使关键字声明一种特定属性,例如:
[0060]#define MY_STRING_SECT1N char—attribute—((sect1n(".my_string")));[0061 ]使用所述特定属性定义需要保护的静态数据,例如:
[0062]MY_STR I NG_SECT I ON my_stringl [] = “hello world!,,;
[0063]MY_STRING_SECT1N my_string2[] = “linux”。
[0064]步骤S202:在链接脚本.1d文件里,给所述特定属性的静态数据分配存储空间,定义所述存储空间的区域边界变量。
[0065]在链接脚本.1d文件里给所述特定属性的静态数据分配存储空间,编译器在链接时会根据链接脚本.1d文件把具有相同属性的静态数据连续存储在一起,并定义所述存储空间的区域边界变量,以便对连续的静态数据进行加密和解密,例如:
[0066]定义区域边界变量—my_string_begin和—my_string_end,指定.my_string 属性静态数据存储空间的区域,例如:
[0067].=ALIGN(16);
[0068]_my_string_begin=.;
[0069].my_string:
[0070]{
[0071 ]*(.my_string)
[0072]}>ram
[0073].=ALIGN(16);
[0074]_my_string_end=.;
[0075]步骤S203:对编译生成的.elf文件进行分析,提取所述存储空间的区域,对该区域内的静态数据进行加密。
[0076]编译生成的.elf文件中包括所述静态数据的特定属性、存储空间、和区域边界变量等相关信息,对编译生成的.elf文件进行分析,提取所述静态数据的存储空间对应的区域,对该区域内的静态数据进行加密。
[0077]步骤S204:利用在链接脚本.1d文件里定义的区域边界变量,对所述区域内的静态数据进行解密。
[0078]在C语言源码里,在使用所述静态数据之前,利用在链接脚本.1d文件里定义的区域边界变量,对所述区域内连续的静态数据进行解密,例如:
[0079]对区域边界变量__my_string_begin和__my_string_end包含的区域内的静态数据进行解密:
[0080]extern unsigned int_my_string_begin;
[0081]extern unsigned int_my_string_end;
[0082]void decrypt_string(void)
[0083]{
[0084]decrypt((unsigned char*)_my_string_begin,
[0085](_my_string_end-_my_string_begin),key,iv);
[0086]}
[0087]步骤S203与步骤S204为并列关系,加密与解密是相互对应的。可利用预置密钥对区域内连续的静态数据进行加密和解密。
[0088]本实施例通过在C语言源码里使关键字把需要保护的静态数据设定为特定属性,给所述特定属性的静态数据分配存储空间,把具有相同属性的静态数据连续存储在一起,根据定义的区域边界变量对所述静态数据进行解密,并从编译生成的.elf文件提取所述存储空间的区域,对区域内的静态数据进行加密,通过对软件内的静态数据进行加密,降低了软件被破解的风险,提高了软件的安全性。
[0089]以下是本发明【具体实施方式】中提供的一种软件静态数据的加密系统的实施例,系统的实施例基于上述的方法的实施例实现,在系统中未尽的描述,请参考前述方法的实施例。
[0090]请参考图3,其是本发明【具体实施方式】中提供的一种软件静态数据的加密系统的第一实施例的结构方框图。如图所示,该系统,包括:
[0091]特定属性设定模块31,用于把需要保护的静态数据设定为特定属性。
[0092]存储空间分配模块32,用于给所述特定属性的静态数据分配存储空间。
[0093]加密模块33,根据所述存储空间对所述静态数据进行加密。
[0094]综上所述,本实施例通过对软件内的静态数据进行加密,实现简单,且降低了软件被破解的风险,提高了软件的安全性。
[0095]请参考图4,其是本发明【具体实施方式】中提供的一种软件静态数据的加密系统的第二实施例的结构方框图。如图所示,该系统,包括:
[0096]特定属性设定模块41,用于把需要保护的静态数据设定为特定属性。
[0097]所述特定属性设定模块41,具体用于:在C语言源码里使键字把需要保护的静态数据设定为特定属性。
[0098]所述在C语言源码里使关键字把需要保护的静态数据设定为特定属性,包括:
[00"] 在C语言源码里使用_31:1:1^1311丨6_关键字声明一种特定属性;
[0100]使用所述特定属性定义需要保护的静态数据。
[0101]存储空间分配模块42,用于给所述特定属性的静态数据分配存储空间。
[0102]所述存储空间分配模块42,具体用于:在链接脚本.1d文件里,给所述特定属性的静态数据分配存储空间,定义所述存储空间的区域边界变量。
[0103]加密模块43,根据所述存储空间对所述静态数据进行加密。
[0104]所述加密模块43,具体用于:对编译生成的.elf进行分析,提取所述存储空间的区域,对该区域内的静态数据进行加密。
[0105]解密模块44,用于利用在链接脚本.1d文件里定义的区域边界变量,对所述区域内的静态数据进行解密。
[0106]综上所述,本实施例提供静态数据的加密系统通过在C语言源码里使用_attribute关键字把需要保护的静态数据设定为特定属性,给所述特定属性的静态数据分配存储空间,把具有相同属性的静态数据连续存储在一起,根据定义的区域边界变量对所述静态数据进行解密,并从编译生成的.elf文件提取所述存储空间的区域,对区域内的静态数据进行加密,通过对软件内的静态数据进行加密,降低了软件被破解的风险,提高了软件的安全性。
[0107]以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它【具体实施方式】,这些方式都将落入本发明的保护范围之内。
【主权项】
1.一种软件静态数据的加密方法,其特征在于,包括: 把需要保护的静态数据设定为特定属性; 给所述特定属性的静态数据分配存储空间; 根据所述存储空间对所述静态数据进行加密。2.根据权利要求1所述的一种软件静态数据的加密方法,其特征在于,所述把需要保护的静态数据设定为特定属性,包括: 在C语言源码里使关键字把需要保护的静态数据设定为特定属性。3.根据权利要求1所述的一种软件静态数据的加密方法,其特征在于,所述给所述特定属性的静态数据分配存储空间,包括: 在链接脚本.1d文件里,给所述特定属性的静态数据分配存储空间,定义所述存储空间的区域边界变量。4.根据权利要求3所述的一种软件静态数据的加密方法,其特征在于,所述根据所述存储空间对所述静态数据进行加密,包括: 对编译生成的.elf文件进行分析,提取所述存储空间的区域,对该区域内的静态数据进行加密。5.根据权利要求4所述的一种软件静态数据的加密方法,其特征在于,所述在链接脚本.1d文件里定义所述存储空间的区域边界变量之后,还包括: 利用在链接脚本.1d文件里定义的区域边界变量,对所述区域内的静态数据进行解密。6.根据权利要求2所述的一种软件静态数据的加密方法,其特征在于,所述在C语言源码里使关键字把需要保护的静态数据设定为特定属性,包括: 在C语言源码里使关键字声明一种特定属性; 使用所述特定属性定义需要保护的静态数据。7.一种软件静态数据的加密系统,其特征在于,包括: 特定属性设定模块,用于把需要保护的静态数据设定为特定属性; 存储空间分配模块,用于给所述特定属性的静态数据分配存储空间; 加密模块,根据所述存储空间对所述静态数据进行加密。8.根据权利要求7所述的一种软件静态数据的加密系统,其特征在于: 所述特定属性设定模块,具体用于: 在C语言源码里使关键字把需要保护的静态数据设定为特定属性; 所述存储空间分配模块,具体用于: 在链接脚本.1d文件里,给所述特定属性的静态数据分配存储空间,定义所述存储空间的区域边界变量; 所述加密模块,具体用于: 对编译生成的.elf文件进行分析,提取所述存储空间的区域,对该区域内的静态数据进行加密。9.根据权利要求8所述的一种软件静态数据的加密系统,其特征在于,还包括: 解密模块,用于利用在链接脚本.1d文件里定义的区域边界变量,对所述区域内的静态数据进行解密。10.根据权利要求8所述的一种软件静态数据的加密系统,其特征在于,所述在C语言源码里使关键字把需要保护的静态数据设定为特定属性,包括: 在C语言源码里使用_81:1:1';[131^6_关键字声明一种特定属性; 使用所述特定属性定义需要保护的静态数据。
【文档编号】G06F21/60GK106055937SQ201610356162
【公开日】2016年10月26日
【申请日】2016年5月25日
【发明人】黄利雄
【申请人】深圳创维数字技术有限公司