[0020] 1)若将信息隐藏在
结构中,则在
结构的结尾后方加上B[i]*K个空
结构,K为整数;
[0021] 2)若将信息隐藏在结构中,则在结构的结尾后方加上
android:name="com.number.T"结构;
[0022] 3)若将信息隐藏在>结构中,则在>结构的结尾后方加上注释符//和B[i]*K个“*”字符,K为整数。
[0023] 本发明所述的信息隐藏方法中,步骤S1中按照规定的单位进行编号,具体包括:以比特为单位,或以字节为单位,或以双字节为单位进行编号。
[0024] 本发明所述的信息隐藏方法中,对隐藏的信息M进行加密方式具体包括:古典密码体制、对称密钥密码体制或者非对称钥密码体制。
[0025] 本发明还提供一种安卓系统下基于文本水印的隐秘通信方法,包括以下步骤:
[0026] (1)发送方利用上述信息隐藏方法,将待传递的信息隐藏到AndroidManifest.xml文件的相应位置中,并生成APK文件;
[0027] (2)发送方将APK文件提交到某个网上应用商店;
[0028] (3)接收方从该网上应用商店下载APK文件;
[0029] (4)接收方从APK文件中提取出AndroidManifest.xml文件;
[0030] (5)接收方从AndroidManifest.xml文件中提取出隐藏信息。
[0031] 本发明还提供一种安卓系统下基于文本水印的版权保护方法,其特征在于,包括以下步骤:
[0032] (1)开发方利用上述信息隐藏方法将版权保护信息隐藏到AndroidManifest.xml文件的相应位置中,并生成APK文件;
[0033] (2)开发方将APK文件提交到网上应用商店;
[0034] (3)软件使用方从该网上应用商店下载APK文件;
[0035] (4)软件使用方从APK文件中提取出AndroidManifest.xml文件;
[0036] (5)软件使用方从AndroidManifest.xml文件中提取隐藏的版权保护信息,并检验版权信息是否真实有效,从而确定是否为重打包的盗版APK文件。
[0037] 本发明还提供一种安卓系统下基于文本水印的恶意软件来源检测和追踪方法,其特征在于,该方法具体包括以下步骤:
[0038] (1)网上应用商店从上传的APK文件中分解出AndroidManifest.xml文件;
[0039] (2)网上应用商店利用上述信息隐藏方法将APK文件上传者的身份标识信息和/或该网上应用商店的标识信息隐藏到AndroidManifest.xml文件的相应位置中,并重新生成APK文件并再该网上应用商店中发布以供他人下载;
[0040] (3)在病毒检测机构检测到该APK文件为恶意软件时,从该APK文件中提取出AndroidManifest.xml文件,并从AndroidManifest.xml文件中提取出隐藏的APK文件上传者的身份标识信息,从而确定该恶意软件的制作者。
[0041] 本发明的有益技术效果:本发明利用信息隐藏技术将需要隐藏的信息嵌入到APP中的XML文本文件中,与APP直接交付,且不影响APP的运行,使软件保护具有更好的性能,如发布的APK文件总体大小不变,比加密加壳等保护方式的APK文件大小小,软件下载的延迟少,以及更好的用户体验,启动APK文件时比起加密加壳等软件保护方式的等待时间更短。此外,通过本发明的信息隐藏方法可以实现隐秘通信、版权保护以及恶意软件来源检测和监视。
附图说明
[0042] 下面将结合附图及实施例对本发明作进一步说明,附图中:
[0043] 图1是本发明实施例基于文本水印的安卓应用程序信息隐藏方法流程图;
[0044] 图2是图1中步骤S2的具体流程图;
[0045] 图3是图1中步骤S3的具体流程图;
[0046] 图4是本发明实施例安卓系统下基于文本水印的隐秘通信方法流程图;
[0047] 图5是本发明实施例安卓系统下基于文本水印的版权保护方法流程图;
[0048] 图6是本发明实施例安卓系统下基于文本水印的恶意软件来源检测和追踪方法流程图。
具体实施方式
[0049] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0050] 本发明实施例一种安卓系统下基于文本水印的安卓应用程序保护方法,如图1所示,包括以下步骤:
[0051] S1、将需要隐藏的信息M进行加密处理,并按照规定格式保存到数组B[1,...,N-1],N为整数;
[0052] S2、分析出AndroidManifest.xml文件中可以利用的位置,按照规定的格式密文(即保存了密文的数组)隐藏到相应位置中,并生成APK文件;
[0053] S3、从APK文件中提取AndroidManifest.xml文件,并从AndroidManifest.xml文件中解密隐藏的信息M。
[0054] 本发明的一个实施例中,在步骤S1中,将需要隐藏的信息M进行加密,并对加密后的信息转化为二进制数,例如:当进行信息隐藏时,将需要隐藏的有意义的明文信息M1,例如隐藏文本文件或一张图片,使用某种加密方式如流密码RC4加密为密文信息C1,并将信息转化为二进制数;或当信息隐藏用于软件保护时,将软件的保护信息,例如:包含软件版权信息、软件密钥、开发者信息的明文信息M2,使用流密码RC4加密为密文信息C2,并将信息转化为二进制数;转化完成后,将得出的二进制数,例如:11010100,并计算其长度为N=8,依比特单位存入数组B[i]中,存入结果为:
[0055] B[0]=1;
[0056] B[1]=1;
[0057] B[2]=0;
[0058] B[3]=1;
[0059] B[4]=0;
[0060] B[5]=1;
[0061] B[6]=0;
[0062] B[7]=0;
[0063] 由此完成隐藏信息M的处理。
[0064] 本发明的一个实施例中,如图2所示,上述步骤S2具体包括以下步骤:
[0065] S2.1、从头扫描AndroidManifest.xml文件,直到扫描到符合隐藏条件的语句为止,在符合隐藏要求的AndroidManifest.xml文件语句后,根据当前语句特征,按照规定格式将密文隐藏到当前语句的相应位置,隐藏完成后继续向文件后方扫描,以此类推。
[0066] 具体操作例如,从AndroidManifest.xml文件开头进行字段的扫描,第一次扫描到符合隐藏条件的字段,例如:扫描到存在>字段后,判断其为符合隐藏条件的字段,则在>字段后按照>对应的隐藏方法添加隐藏信息,具体操作例如,扫描到AndroidManifest.xml文件中符合隐藏条件的语句>后,若此时要隐藏的信息为B[0]=1时,在>字段后方添加注释//和T1个字符*,其中T1为奇数,且0字段后方添加注释//和T3个字符“*”,其中T3为偶数,且0
[0067] 以下举例步骤S1实例中的信息隐藏,若需要隐藏的信息为:11010100,信息隐藏具体操作如下,从AndroidManifest.xml文件头部开始扫描,直至扫描到符合隐藏条件的语句:
[0068] 1)第一次扫描到符合隐藏条件字段,为/>字段:
[0069] B[0]=1,取奇数T=5,插入信息:
[0070] //*****
[0071] 2)第二次扫描到符合隐藏条件字段,为字段:
[0072] B[1]=1,取奇数T=3,插入信息:
[0076] 3)第三次扫描到符合隐藏条件字段,为字段:
[0077] B[2]=0,取偶数T=4,插入信息:
[0078]
android:name="com.number.4"[0079] 4)第四次扫描到符合隐藏条件字段,为字段:
[0080] B[3]=1,取奇数T=1,插入信息:
[0081]
android:name="com.number.1"[0082] 5)第五次扫描到符合隐藏条件字段,为字段:
[0083] B[4]=0,取偶数T=6,插入信息:
[0090] 6)第六次扫描到符合隐藏条件字段,为>字段:
[0091] B[5]=1,取奇数T=7,插入信息:
[0092] //*******
[0093] 7)第七次扫描到符合隐藏条件字段,为字段:
[0094] B[6]=0,取偶数T=4,插入信息:
[0095]
android:name="com.number.4"[0096] 8)第八次扫描符合隐藏条件字段,为字段:
[0097] B[7]=0,取偶数T=8,插入信息:
[0098]
android:name="com.number.8"[0099] 由此完成信息11010100的隐藏。
[0100] 经过分析,AndroidManifest.xml文件中符合隐藏条件的区域包括:
[0102] 1):
结构的结尾,表示一个application结构的完结,也表示可以作为另一个application结构的开始,则其后的区域符合隐藏条件;
[0103] 2):
结构的结尾,表示一个activity结构的完结,也表示可以作为另一个activity结构的开始,则其后的区域符合隐藏条件;
[0104] 2.>结构的结尾/>,表示一个>结构的完结,也表示可以作为另一个>结构开始,则其后的区域符合隐藏条件;
[0105] 经过分析,AndroidManifest.xml文件中与符合隐藏条件的区域对应的隐藏方法包括:
[0107] 1):
结构的结尾,隐藏方法为,选取一个随机数T,T为整数且0
结构的结尾后方加上B[i]*K个空结构;[0108] 2):
结构的结尾,隐藏方法为,选取一个随机数T,T为整数且0
结构的结尾后方加上android:name="com.number.T"结构;[0109] 2.>结构的结尾/>,隐藏方法为,选取一个随机数T,T为整数且0结构的结尾后方加上注释符//和B[i]*K个“*”字符。
[0110] S2.2、逐比特完成密文11010100的隐藏后,保存生成新的AndroidManifest.xml文件,打包生成APK文件,完成对信息的隐藏处理。
[0111] 本发明的一个实施例中,如图3所示,步骤S3具体包括以下步骤:
[0112] S3.1、信息提取时,通过反编译软件apktool反编译出AndroidManifest.xml文件;
[0113] S3.2、依次从头扫描AndroidManifest.xml文件中符合隐藏特征的语句,并从中逐单位提取B[i]中的值,具体操作例如:
[0114] 1)第一次扫描到符合隐藏特征的语句,发现//字段,解析//后方的*字符数量为奇数个,则提取出B[0]=1;
[0115] 2)第二次扫描到符合隐藏特征的语句,发现
字段,解析此处有连续的3个
字段,则提取出B[1]=1;
[0116] 3)第三次扫描到符合隐藏特征的语句,发现
android:name="com.number.i"字段,其中i为整数,且0i10,解析出i=4,则提取出B[2]=0;
[0117] 4)第四次扫描到符合隐藏特征的语句,发现
android:name="com.number.i"字段,解析出i=1,则提取出B[3]=1;
[0118] 5)第五次扫描到符合隐藏特征的语句,发现
字段,解析此处有连续的6个
字段,则提取出B[4]=0;
[0119] 6)第六次扫描到符合隐藏特征的语句,发现//字段,解析//后方的*字符数量为奇数个,则提取出B[5]=1;
[0120] 7)第七次扫描到符合隐藏特征的语句,发现
android:name="com.number.i"字段,解析出i=4,则提取出B[6]=0;
[0121] 8)第八次扫描到符合隐藏特征的语句,发现
android:name="com.number.i"字段,解析出i=8,则提取出B[7]=0;
[0122] 本例中密文C由二进制数表示,因此提取出的二进制信息11010100即为密文C。
[0123] S3.3、将密文解密。如将密文11010100解密,使用已知私钥通过RC4解密,最终提取出隐藏的明文内容M,完成信息提取。
[0124] 利用上述实施例安卓系统下基于文本文件的信息隐藏方法可实现隐秘通信,实现在1对n的公开信道上的隐秘通信功能。如图4所示,利用上述实施例的隐秘通信方法具体步骤包括:
[0125] (1)发送方利用上述实施例的信息隐藏方法将待传递的信息隐藏到AndroidManifest.xml相应位置中,然后生成APK文件。
[0126] (2)发送方将APK提交到某个网上应用商店;
[0127] (3)接收方从该网上应用商店下载APK;
[0128] (4)接收方从APK文件中提取出AndroidManifest.xml文件;
[0129] (5)接收方从AndroidManifest.xml文件中提取出隐藏的信息,至此,完成了一次信息从发送方到接收方的传递过程。
[0130] 利用上述实施例安卓系统下基于文本文件的信息隐藏方法还可实现版权保护。本发明的一个实施例中,版权能护方法可实现对APK开发方的权利保护,避免了盗版者通过将AndroidManifest.xml重新打包生成的盗版APK。如图5所示,本发明实施例的版权保护方法具体包括以下步骤:
[0131] (1)开发方利用上述实施例的信息隐藏方法将版权保护信息隐藏到AndroidManifest.xml相应位置中,然后生成APK文件。
[0132] (2)开发方将APK提交到网上应用商店;
[0133] (3)软件使用方从网上应用商店下载APK;
[0134] (4)软件使用方从APK文件中提取出AndroidManifest.xml文件;
[0135] (5)软件使用方从AndroidManifest.xml文件中提取出隐藏的版权保护信息,检验版权信息是否真实有效,从而确定是否为重打包的盗版APK。
[0136] 上述实施例安卓系统下基于文本文件的信息隐藏方法还可实现恶意软件来源检测和监视功能,可实现对恶意APK发布者的追踪。如图6所示,本发明实施例恶意软件来源检测和追踪方法具体包括以下步骤:
[0137] (1)网上应用商店对于上传的APK,先分解出AndroidManifest.xml文件;
[0138] (2)网上应用商店利用上述实施例的信息隐藏方法将APK上传者的身份标识信息(如身份证号,企业代码等)和/或网上应用商店标识信息隐藏到AndroidManifest.xml相应位置中,然后再次生成APK文件,在应用商店中发布供人下载。
[0139] (3)当病毒检测机构发现了恶意软件APK,可从APK文件中提取出AndroidManifest.xml文件;病毒检测机构(在网上应用商店配合下),从
AndroidManifest.xml文件中提取出隐藏的APK上传者的身份标识信息(如身份证号,企业代码等),从而可确定该恶意软件制作者的来源。
[0140] 应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。