一种软件敏感数据隐藏、提取方法及装置与流程

文档序号:12720589阅读:288来源:国知局
一种软件敏感数据隐藏、提取方法及装置与流程

本发明涉及软件安全技术领域,特别涉及一种软件敏感数据隐藏、提取方法及装置。



背景技术:

现有的安卓软件保护技术中,软件加壳(即加入预启动程序)较为常见。加入了壳程序的安卓软件中,原程序被加密等手段保护。破解者的目标就是获取原程序。因此,在安卓软件保护中,敏感数据(如密钥)的隐藏,就成为软件保护的重要手段。

理论上不论加密手段如何巧妙,加密算法如何复杂,具备专业技术的高水平破解者总能获得解密后的源程序。在使用复杂加密算法或繁琐隐藏方法的情况下,获取解密程序的开销大于破解者的回报,此时破解者往往放弃破解行为,但这种情况下,起保护作用的壳程序在解密时所花费时间也将大幅增加,降低了应用程序的启动速度,为用户带来不便。

因此,在安卓软件保护中,一般选用巧妙执行起来简单快速的数据隐藏方案。传统的方案是将密钥打散,插入到应用软件中某个或某几个文件中。预启动程序在解密时依次解读这些数据,拼凑出完整的密钥,对原应用程序进行解密。

但是现有的技术方案缺点在于:尽管敏感数据被打散隐藏,但其内容以明文形式插入到应用程序的文件中。而且,各个文件中可以插入冗余数据的位置相对固定,熟悉安卓文件结构的破解者已经了解这样的隐藏方式,可以较为快速的获得完整密钥,保护手段也失效了。



技术实现要素:

本发明要解决的技术问题是提供一种软件敏感数据隐藏、提取方法及装置, 用以解决现有的软件保护方式大多采用将软件敏感数据打散以明文方式隐藏到应用程序的文件中,但是因应用程序的文件可以插入冗余数据的位置相对固定,熟悉安卓文件结构的破解者已经了解这样的隐藏方式,可以较为快速的获得完整密钥,造成保护失效的问题。

为了解决上述技术问题,本发明实施例提供一种软件敏感数据隐藏方法,包括:

获取待保护的软件敏感数据,以及确定隐藏所述软件敏感数据的目标音频文件;

按照预定的插入规则,将所述软件敏感数据以数据帧的形式插入到所述目标音频文件中。

进一步地,所述软件敏感数据包括:用于检验软件完整性的哈希值、用于解密软件中加密数据的密钥和开发者的个人水印中的一个或多个。

进一步地,所述按照预定的插入规则,将所述软件敏感数据以数据帧的形式插入到所述目标音频文件中的步骤具体为:

将所述软件敏感数据转换为数据字符串;

获取所述目标音频文件的音频帧数据;

根据所述音频帧数据对所述数据字符串进行填充,得到伪帧数据;

依据预定的插入规则,将所述伪帧数据插入到所述目标音频文件中。

进一步地,所述将所述软件敏感数据转换为数据字符串的步骤具体为:

根据第一预设规则将所述软件敏感数据转换为数据字符串。

进一步地,所述获取所述目标音频文件的音频帧数据的步骤具体为:

获取所述目标音频文件的特征数据;

根据所述特征数据,计算得到所述目标音频文件的音频帧数据。

进一步地,所述特征数据包括音频文件的比特率、采样频率、文件大小、标志位、结构索引值和文件校验位中的一个或多个。

进一步地,所述音频帧数据包括帧头长度、帧实体数据长度和帧个数中的一个或多个。

进一步地,所述根据所述音频帧数据对所述数据字符串进行填充,得到伪帧数据的步骤具体为:

在数据字符串的预设位置填充至少一个0或者1,得到伪帧数据;其中,

所述伪帧数据的长度=音频帧数据的帧实体数据长度×n,其中,n为整数。

进一步地,所述依据预定的插入规则,将所述伪帧数据插入到所述目标音频文件中的步骤具体为:

将所述伪帧数据进行格式修复,得到填充帧数据;

将填充帧数据依据预定的插入规则插入到所述目标音频文件中。

进一步地,所述将填充帧数据依据预定的插入规则插入到所述目标音频文件中的步骤具体为:

按照预定的插入规则,将填充帧数据插入到所述目标音频文件的预设位置。

进一步地,所述软件敏感数据隐藏方法,还包括:

将插入软件敏感数据的目标音频文件进行文件修复处理;

将通过文件修复处理后的所述目标音频文件设置在资源文件目录下。

本发明实施例提供一种软件敏感数据隐藏装置,包括:

第一获取模块,用于获取待保护的软件敏感数据,以及确定隐藏所述软件敏感数据的目标音频文件;

插入模块,用于按照预定的插入规则,将所述软件敏感数据以数据帧的形式插入到所述目标音频文件中。

进一步地,所述插入模块包括:

转换子模块,用于将所述软件敏感数据转换为数据字符串;

获取子模块,用于获取所述目标音频文件的音频帧数据;

填充子模块,用于根据所述音频帧数据对所述数据字符串进行填充,得到伪帧数据;

插入子模块,用于依据预定的插入规则,将所述伪帧数据插入到所述目标音频文件中。

进一步地,所述获取子模块包括:

第一获取单元,用于获取所述目标音频文件的特征数据;

计算单元,用于根据所述特征数据,计算得到所述目标音频文件的音频帧数据。

进一步地,所述插入子模块包括:

修复单元,用于将所述伪帧数据进行格式修复,得到填充帧数据;

插入单元,用于将填充帧数据依据预定的插入规则插入到所述目标音频文件中。

进一步地,所述软件敏感数据隐藏装置还包括:

文件修复模块,用于将插入软件敏感数据的目标音频文件进行文件修复处理;

设置模块,用于将通过文件修复处理后的所述目标音频文件设置在资源文件目录下。

本发明实施例提供一种软件敏感数据提取方法,包括:

获取待保护的软件敏感数据的插入规则,其中,所述软件敏感数据按照所述插入规则,以数据帧的形式插入到目标音频文件中;

确定插入所述软件敏感数据的目标音频文件;

根据所述插入规则,提取所述目标音频文件中的软件敏感数据。

进一步地,所述根据所述插入规则,提取所述目标音频文件中的软件敏感数据的步骤具体为:

根据所述插入规则,确定所述目标音频文件中所述软件敏感数据的数据帧的位置;

对所述目标音频文件进行解码;

根据所述软件敏感数据的数据帧的位置,在解码后的所述目标音频文件提取填充帧数据;

获取所述填充帧数据中的软件敏感数据。

进一步地,所述获取所述填充数据帧中的软件敏感数据的步骤具体为:

根据所述填充帧数据,获取伪帧数据;

根据所述伪帧数据,获取所述软件敏感数据的数据字符串;

根据所述数据字符串得到软件敏感数据。

本发明实施例提供一种软件敏感数据提取装置,包括:

第二获取模块,用于获取待保护的软件敏感数据的插入规则,其中,所述软件敏感数据按照所述插入规则,以数据帧的形式插入到目标音频文件中;

确定模块,用于确定插入所述软件敏感数据的目标音频文件;

提取模块,用于根据所述插入规则,提取所述目标音频文件中的软件敏感数据。

进一步地,所述提取模块包括:

确定子模块,用于根据所述插入规则,确定所述目标音频文件中所述软件敏感数据的数据帧的位置;

解码子模块,用于对所述目标音频文件进行解码;

提取子模块,用于根据所述软件敏感数据的数据帧的位置,在解码后的所述目标音频文件提取填充帧数据;

数据获取子模块,用于获取所述填充帧数据中的软件敏感数据。

进一步地,所述数据获取子模块包括:

第二获取单元,用于根据所述填充帧数据,获取伪帧数据;

第三获取单元,用于根据所述伪帧数据,获取所述软件敏感数据的数据字符串;

第四获取单元,用于根据所述数据字符串得到软件敏感数据。

本发明的有益效果是:

上述方案,通过将软件中的软件敏感数据进行转换,以音频形式隐藏在应用程序中,避免了软件敏感数据以明文形式出现在应用程序中,使得破解者可以轻易获取软件敏感数据,造成保护失效的问题,此种方式,尽可能的保证了数据的隐秘性,保证了软件的数据安全。

附图说明

图1表示本发明实施例一的软件敏感数据隐藏方法的流程示意图;

图2表示本发明实施例二的软件敏感数据隐藏方法的流程示意图;

图3表示本发明实施例三的软件敏感数据隐藏方法的流程示意图;

图4表示本发明实施例四的软件敏感数据隐藏装置的流程示意图;

图5表示本发明实施例五的软件敏感数据提取方法的流程示意图;

图6表示本发明实施例六的软件敏感数据提取装置的流程示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。

本发明针对现有的软件保护方式大多采用将软件敏感数据打散以明文方式隐藏到应用程序的文件中,但是因应用程序的文件可以插入冗余数据的位置相对固定,熟悉安卓文件结构的破解者已经了解这样的隐藏方式,可以较为快速的获得完整密钥,造成保护失效的问题,提供一种软件敏感数据隐藏、提取方法及装置。

实施例一

如图1所示,本发明实施例一的软件敏感数据隐藏方法包括:

步骤11,获取待保护的软件敏感数据,以及确定隐藏所述软件敏感数据的目标音频文件;

步骤12,按照预定的插入规则,将所述软件敏感数据以数据帧的形式插入到所述目标音频文件中。

需要说明的是,该软件敏感数据包括但不限于是:用于检验软件完整性的哈希值、用于解密软件中加密数据的密钥和开发者的个人水印中的一个或多个。

本实施例中,将软件中需要保护的软件敏感数据转换成音频文件帧的形式,将软件敏感数据伪装成安卓软件的音频资源文件,尽可能的实现迷惑破解者、保护软件数据安全的作用。

实施例二

如图2所示,本实施例二的所述软件敏感数据隐藏方法包括:

步骤21,获取待保护的软件敏感数据,以及确定隐藏所述软件敏感数据的目标音频文件;

步骤22,将所述软件敏感数据转换为数据字符串;

步骤23,获取所述目标音频文件的音频帧数据;

步骤24,根据所述音频帧数据对所述数据字符串进行填充,得到伪帧数据;

步骤25,依据预定的插入规则,将所述伪帧数据插入到所述目标音频文件中。

需要说明的是,上述步骤22的主要实现方式为:

根据第一预设规则将所述软件敏感数据转换为数据字符串。

需要说明的是,所述第一预设规则可以为ASCII编码规则,也可以为自定义的字符串转换规则,在转换完成后,该数据字符串主要是由0和1组成的二进制编码字符串。

进一步需要说明的是,步骤23在实现时,主要包括:

步骤231,获取所述目标音频文件的特征数据;

该步骤231主要实现的是,按照目标音频文件的文件格式(如MP3格式或WAV等安卓系统支持的音频格式)以二进制形式读取目标音频文件,按照其官方对二进制文件的结构说明对二进制文件进行解析,获取目标音频文件的特征数据;需要说明的是该特征数据包括但不限于是:音频文件的比特率、采样频率、文件大小、标志位(如MP3的CRB(Constant Bit-Rate,定比特率)和VRB(Variable Bit-Rate,变比特率)标记)、结构索引值和文件校验位中的一个或多个,特别需要说明的是,不同格式的目标音频文件所获取的特征数据可能是不相同的。

步骤232,根据所述特征数据,计算得到所述目标音频文件的音频帧数据;

需要说明的是,步骤232中,根据目标音频文件的特征数据,按照音频结构说明,可获得目标音频文件的音频帧数据,需要说明的是,该特征数据包括但不限于是帧头长度、帧实体数据长度和帧个数中的一个或多个。以MP3音频格式为例,通过比特率、采样频率等特征数据,可以计算出帧头长度、帧实体长度和帧个数等帧数据。

在得到目标音频文件的音频帧数据后,需要对数据字符串进行填充,得到与音频帧数据相匹配的伪帧数据,因此,该步骤24的主要实现方式为:

在数据字符串的预设位置填充至少一个0或者1,得到伪帧数据;其中,

所述伪帧数据的长度=音频帧数据的帧实体数据长度×n,其中,n为整数。

需要说明的是,填充后的数据字符串的伪帧数据的字符串长度等于n个音频帧数据的长度,例如,如果是MP3格式的帧,填充后的数据字符串的伪帧数据的长度等于n个帧实体数据长度。

在进行数据字符串的填充时,可以选择在长度为l的数据字符串的尾部填充p-l个0或者1(其中,可以选择填充全0或全1,也可以按照规则进行0和1的比例分配);或者也可以按照特定间隔,在长度为l的数据字符串中插入p-1 个0或者1,填充完成后,使得p=音频帧数据的帧实体数据长度×n。

在步骤24填充完成后,便可得到n个伪帧数据,之后便需将n个伪帧数据插入到目标音频文件中,在插入伪帧数据时,步骤25在实现时,主要包括:

步骤251,将所述伪帧数据进行格式修复,得到填充帧数据;

需要说明的是,该步骤251主要是对伪帧数据进行格式上的修复,使其能成为合法的帧数据;以MP3为例,格式修复主要包括:补充帧头文件,格式修复也包括将帧头中的特征数据修复成与填充帧数据的帧实体数据相匹配。

步骤252,将填充帧数据依据预定的插入规则插入到所述目标音频文件中。

该步骤252的主要实现方式为:按照预定的插入规则,将填充帧数据插入到所述目标音频文件的预设位置。

在具体实现时,可以将格式修复后的n个隐藏了数据的填充帧数据,连续插入到目标音频文件的第m帧和第m+1帧之间;也可以按照自定义的插入间隔,将n个填充帧数据分散的插入到目标音频文件中。

在进行完上述步骤后,就成功的将软件敏感数据插入到了目标音频文件中。

实施例三

为了使得插入软件敏感数据的目标音频文件正常在软件运行时使用,如图3所示,本实施例三的软件敏感数据隐藏方法,包括:

步骤31,获取待保护的软件敏感数据,以及确定隐藏所述软件敏感数据的目标音频文件;

步骤32,按照预定的插入规则,将所述软件敏感数据以数据帧的形式插入到所述目标音频文件中;

步骤33,将插入软件敏感数据的目标音频文件进行文件修复处理;

需要说明的是,该文件修复处理主要实现的是将文件大小修复为插入软件敏感数据之后的文件的实际大小;以MP3音频文件为例,该文件修复处理包括修复FRAME信息,FRAME信息由一系列帧组成;该文件修复处理包括将FRAME中的帧个数信息修复成与插入敏感数据后的实际帧个数相匹配等操作;该文件修复处理还包括将MP3文件的特征数据修复为与插入软件敏感数据后的实际文件相匹配。

步骤34,将通过文件修复处理后的所述目标音频文件设置在资源文件目录 下。

需要说明的是,该资源文件目录下的音频文件均为安卓软件的资源文件,步骤34中,将插入软件敏感数据的目标音频文件成功的伪装成了安卓软件的资源文件,从而较好的迷惑破解者、保护了软件数据的安全。

实施例四

如图4所示,本发明实施例提供一种软件敏感数据隐藏装置,包括:

第一获取模块41,用于获取待保护的软件敏感数据,以及确定隐藏所述软件敏感数据的目标音频文件;

插入模块42,用于按照预定的插入规则,将所述软件敏感数据以数据帧的形式插入到所述目标音频文件中。

需要说明的是,该软件敏感数据包括:用于检验软件完整性的哈希值、用于解密软件中加密数据的密钥和开发者的个人水印中的一个或多个。

可选地,所述插入模块42包括:

转换子模块,用于将所述软件敏感数据转换为数据字符串;

获取子模块,用于获取所述目标音频文件的音频帧数据;

填充子模块,用于根据所述音频帧数据对所述数据字符串进行填充,得到伪帧数据;

插入子模块,用于依据预定的插入规则,将所述伪帧数据插入到所述目标音频文件中。

具体地,所述转换子模块具体用于:根据第一预设规则将所述软件敏感数据转换为数据字符串。

具体地,所述获取子模块包括:

第一获取单元,用于获取所述目标音频文件的特征数据;

计算单元,用于根据所述特征数据,计算得到所述目标音频文件的音频帧数据。

需要说明的是,所述特征数据包括音频文件的比特率、采样频率、文件大小、标志位、结构索引值和文件校验位中的一个或多个;所述音频帧数据包括帧头长度、帧实体数据长度和帧个数中的一个或多个。

具体地,所述填充子模块具体用于:

在数据字符串的预设位置填充至少一个0或者1,得到伪帧数据;其中,

所述伪帧数据的长度=音频帧数据的帧实体数据长度×n,其中,n为整数。

进一步地,所述插入子模块包括:

修复单元,用于将所述伪帧数据进行格式修复,得到填充帧数据;

插入单元,用于将填充帧数据依据预定的插入规则插入到所述目标音频文件中。

可选地,所述插入单元具体用于:按照预定的插入规则,将填充帧数据插入到所述目标音频文件的预设位置。

可选地,所述软件敏感数据隐藏装置还包括:

文件修复模块,用于将插入软件敏感数据的目标音频文件进行文件修复处理;

设置模块,用于将通过文件修复处理后的所述目标音频文件设置在资源文件目录下。

需要说明的是,该软件敏感数据隐藏装置实施例是与上述软件敏感数据隐藏方法相对应的软件敏感数据隐藏装置,上述软件敏感数据隐藏方法的所有实现方式均适用于该软件敏感数据隐藏装置实施例中,也能达到相同的技术效果。

实施例五

在加入壳程序的软件运行前,需要先利用软件敏感数据对软件进行解密处理,因此,需要先提取隐藏的软件敏感数据,如图5所示,本发明实施例五提供一种软件敏感数据提取方法,包括:

步骤51,获取待保护的软件敏感数据的插入规则;

需要说明的是,所述软件敏感数据按照所述插入规则,以数据帧的形式插入到目标音频文件中。

步骤52,确定插入所述软件敏感数据的目标音频文件;

步骤53,根据所述插入规则,提取所述目标音频文件中的软件敏感数据。

步骤53在实现时,具体包括:

步骤531,根据所述插入规则,确定所述目标音频文件中所述软件敏感数据的数据帧的位置;

步骤532,对所述目标音频文件进行解码;

需要说明的是,该步骤532可以通过使用安卓提供给开发者的音频处理接口或第三方提供的音频处理工具,按照目标音频文件的格式(如MP3),通过调用接口中相应音频格式的加载方法,加载目标音频文件,得到音频文件的数据流,根据上一步获得的数据帧的位置,通过所用接口中提供的帧抽取方法从数据流中获得隐藏了数据的目标帧;

该步骤532还可以通过安卓提供给开发者的文件处理接口,或调用第三方提供的相关工具,将音频文件作为二进制文件进行处理。处理方法为调用文件处理接口中的文件读取方法,打开文件,通过文件处理接口提供的bit位读取方法,根据上一步获得的数据帧的位置,读取对应位置的二进制数据串。

步骤533,根据所述软件敏感数据的数据帧的位置,在解码后的所述目标音频文件提取填充帧数据;

步骤534,获取所述填充帧数据中的软件敏感数据。

进一步地,所述步骤534在实现时,具体包括:

根据所述填充帧数据,获取伪帧数据;

根据所述伪帧数据,获取所述软件敏感数据的数据字符串;

根据所述数据字符串得到软件敏感数据。

需要说明的是,该软件敏感数据提取方法是上述软件敏感数据隐藏方法的逆过程,通过对软件敏感数据的提取,进行软件的解密,保证了软件的正常使用。

实施例六

如图6所示,本发明实施例提供一种软件敏感数据提取装置,包括:

第二获取模块61,用于获取待保护的软件敏感数据的插入规则;

需要说明的是,所述软件敏感数据按照所述插入规则,以数据帧的形式插入到目标音频文件中。

确定模块62,用于确定插入所述软件敏感数据的目标音频文件;

提取模块63,用于根据所述插入规则,提取所述目标音频文件中的软件敏感数据。

可选地,所述提取模块63包括:

确定子模块,用于根据所述插入规则,确定所述目标音频文件中所述软件 敏感数据的数据帧的位置;

解码子模块,用于对所述目标音频文件进行解码;

提取子模块,用于根据所述软件敏感数据的数据帧的位置,在解码后的所述目标音频文件提取填充帧数据;

数据获取子模块,用于获取所述填充帧数据中的软件敏感数据。

进一步地,所述数据获取子模块包括:

第二获取单元,用于根据所述填充帧数据,获取伪帧数据;

第三获取单元,用于根据所述伪帧数据,获取所述软件敏感数据的数据字符串;

第四获取单元,用于根据所述数据字符串得到软件敏感数据。

需要说明的是,该软件敏感数据提取装置实施例是与上述软件敏感数据提取方法相对应的软件敏感数据提取装置,上述软件敏感数据提取方法的所有实现方式均适用于该软件敏感数据提取装置实施例中,也能达到相同的技术效果。

本发明中,通过将软件敏感数据以音频形式进行隐藏,避免了软件敏感数据以明文形式出现在安卓应用程序中,此种方式,对破解造成较大的障碍,同时本发明作为新的屏障也为高水平破解者增加更多的开销,为软件的安全传播争取更多的时间。

以上所述的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本发明所述的原理前提下还可以作出若干改进和润饰,这些改进和润饰也在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1