安卓系统下基于dex文件空域的信息隐藏方法

文档序号:9708667阅读:1155来源:国知局
安卓系统下基于dex文件空域的信息隐藏方法
【技术领域】
[0001]本发明涉及移动互联网安全,与信息隐藏和软件保护领域相关,尤其一种涉及安卓系统下基于DEX文件空域的信息隐藏方法。
【背景技术】
[0002]Android系统的APP格式为APK,APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和si s—样,把android sdk编译的工程打包成一个安装程序文件,格式为apLAPK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是DalvikVM executes的简称,即Android Dalvik执行程序。
[0003]利用APP进行信息隐藏目前是一个崭新的课题,例如,用户可以在APP中隐藏某些信息,然后提交给应用商店,其他用户可以下载该应用,然后恢复出APP中隐藏的信息。这种隐藏通信可以实现一对多(海量)的通信方式,且十分隐秘。另外,通过信息隐藏的基本技术,还可以进行安卓APP应用软件的版权保护。通常APP的软件保护方法包括加密、加壳、反逆向以及反编译等,但这些方法速度慢,操作复杂,容易被攻破。

【发明内容】

[0004]本发明的发明目的在于,提供一种操作简单,不易被发现的信息隐藏方法,实现隐秘通信、版权保护以及恶意软件来源检测和监视。
[0005]为达到上述目的,本发明提供了一种安卓系统下基于DEX文件空域的信息隐藏方法,包括以下步骤:
[0006]S1、分析出DEX文件中可以利用的字段,按照规定的单位进行编号,得到DEX文件中空域的数组ADD[0,...,N-1],N为整数;
[0007]S2、将需要隐藏的信息M加密保存到数组ADD[0,...,N_1 ]中,并生成APK文件;
[0008]S3、从APK文件中提取DEX文件,并从DEX文件中的数组ADD[0,...,N_1]中解密隐藏的信息M。
[0009]本发明所述的信息隐藏方法中,步骤S2具体包括以下步骤:
[0010]S2.1、将需要隐藏的信息M加密,得到密文C,密文C的长度为K,取一个随机整数seed,随机整数seed的长度为T,K、T均为整数,且T+K < N;
[0011]S2.2、将随机整数seed保存到数组ADD[ O,…,T-1 ]中;
[0012]S2.3、根据随机整数seed随机产生K个隐藏地址H[i],并逐单位将密文C保存到数组ADD[H[ i ]]中,完成信息隐藏,生成APK文件;
[0013]步骤S3具体包括以下步骤:
[0014]S3.1、从APK文件中提取DEX文件,并提取DEX文件中数组ADD[0,…,N-1]前T个单位的值,得到随机整数seed ;
[0015]S3.2、由随机整数seed计算出信息的隐藏地址H[i],并逐单位提取ADD[H[i]]中的值,形成密文C;
[0016]S3.3,将密文C解密,得到隐藏的内容M,完成信息提取。
[0017]本发明所述的信息隐藏方法中,DEX文件中可以利用的字段包括:map_list结构的list部分中可以利用的字段;class_def_item中 interfaces_off、annotat1ns_off、class_data_of f 以及 8七81:;[(3_¥&11168_0打中的可以利用的字段;卩1'01:0_1(1_;^6111的aramenters_off中可以利用的字段。
[0018]本发明所述的信息隐藏方法中,步骤SI中按照规定的单位进行编号,具体包括:以比特为单位,或以字节为单位,或以双字节为单位进行编号。
[0019]本发明所述的信息隐藏方法中,步骤SI中编号的方法具体为:分析出DEX文件中可以利用的字段后,将可以利用的字段按照DEX文件的header、string_ids、type_ids、proto_ids、f ield_ids、method_ids、class_defs、data的先后构成顺序依次由前向后从O开始编号,得到总单位数N。
[0020]本发明所述的信息隐藏方法中,对信息M的加密方式具体包括:古典密码体制、对称密钥密码体制、非对称钥密码体制。
[0021]本发明所述的信息隐藏方法中,K个隐藏地址H[i]具体通过随机数发生器RAND(seed)产生,H[i]: =T+RAND(seed)mod(N-T) ;seed: =RAND(seed);其中i = [0,...,K_1],H
[i]= [T,...,N-1]。
[0022]本发明还提供了一种安卓系统下基于DEX文件空域的隐秘通信方法,包括以下步骤:
[0023](I)发送方利用上述信息隐藏方法,将待传递的信息隐藏到DEX文件的空域中,并生成APK文件;
[0024](2)发送方将APK文件提交到某个网上应用商店;
[0025](3)接收方从该网上应用商店下载APK文件;
[0026](4)接收方从APK文件中提取出DEX文件;
[0027](5)接收方从DEX文件中提取出隐藏信息。
[0028]本发明还提供了一种安卓系统下基于DEX文件空域的版权保护方法,包括以下步骤:
[0029](I)开发方利用上述信息隐藏方法将版权保护信息隐藏到DEX文件的空域中,并生成APK文件;
[0030](2)开发方将APK文件提交到网上应用商店;
[0031](3)软件使用方从该网上应用商店下载APK文件;
[0032 ] (4)软件使用方从APK文件中提取出DEX文件;
[0033](5)软件使用方从DEX文件中提取隐藏的版权保护信息,并检验版权信息是否真实有效,从而确定是否为重打包的盗版APK文件。
[0034]本发明还提供了一种安卓系统下基于DEX文件空域的恶意软件来源检测和追踪方法,该方法具体包括以下步骤:
[0035](I)网上应用商店从上传的APK文件中分解出DEX文件;
[0036](2)网上应用商店利用上述信息隐藏方法将APK文件上传者的身份标识信息和/或该网上应用商店的标识信息隐藏到DEX文件的空域中,并重新生成APK文件并再该网上应用商店中发布以供他人下载;
[0037](3)在病毒检测机构检测到该APK文件为恶意软件时,从该APK文件中提取出DEX文件,并从DEX文件中提取出隐藏的APK文件上传者的身份标识信息,从而确定该恶意软件的制作者。
[0038]本发明产生的有益效果是:本发明利用信息隐藏技术将需要隐藏的信息嵌入到APP中的DEX文件的空域中,与APP直接交付,且不影响APP的运行,使软件保护具有更好的性能,如发布的APK文件总体大小不变,比加密、加壳等保护方式的APK文件大小小,软件下载的延迟少,以及更好的用户体验,启动APK文件时比起加密加壳等软件保护方式的等待时间更短。此外,通过本发明的信息隐藏方法可以实现隐秘通信、版权保护以及恶意软件来源检测和监视。
【附图说明】
[0039]下面将结合附图及实施例对本发明作进一步说明,附图中:
[0040]图1是本发明实施例安卓系统下基于DEX文件空域的信息隐藏方法流程图;
[0041 ]图2是图1中步骤S2的具体流程图;
[0042]图3是图1中步骤S3流程图;
[0043]图4是本发明实施例安卓系统下基于DEX文件空域的隐秘通信方法流程图;
[0044]图5是本发明实施例卓系统下基于DEX文件空域的版权保护方法流程图;
[0045]图6是本发明实施例安卓系统下基于DEX文件空域的恶意软件来源检测和追踪方法流程图。
【具体实施方式】
[0046]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0047]本发明实施例安卓系统下基于DEX文件空域的信息隐藏方法,如图1所示,包括以下步骤:
[0048]S1、分析出DEX文件中可以利用的字段(S卩DEX文件中未被使用的空域),按照规定的单位进行编号,得到DEX文件中空域的数组ADD[0,...,^1]4为整数。52、将需要隐藏的信息M加密保存到数组ADD[0,...,N-1]中,并生成APK文件;
[0049]S3、从APK文件中提取DEX文件,并从DEX文件中的数组ADD[0,...,N_1]中解密隐藏的信息M。
[°°50] 步骤SI中,例如:分析出map_off的unuse字段为存入数据,link_data静态链接数据区对于目前生成的dex文件而言它始终为空,经过分析将这两个字段作为DEX文件中可以利用的字段;分析完成后进行字段内部的编号,由于在DEX文件内部,unuse字段在link_data之前,因此从unuse字段开始从O按照比特为单位编号,直到link_data字段技术,设共有N个比特位,则编号为ADD [ O,…,N-1 ] 0[0051 ]经过分析,DEX文件中可隐藏的区域包括:
[0052] 1.map_list结构的list部分有13个map_item,其中每个map_item结构中都有一个unused字段隐藏;
[0053]2.class_def_item 中:
[0054]I) interfaces_of f:接口列表的偏移,为O表示没有接口,则其详细说明对应的type_list区域中可隐藏;
[0055]2)annotat1ns_off:注释结构的偏移,为O表示此类没有注解,规定数据格式的annotat1ns_ditrctory_item 可隐藏;
[0056]3)claSS_data_off:与此类相关的类数据的偏移,为O表示没有此类的类数据,规定数据格式的class_data_item可隐藏;
[0057]4)StatiC_valueS_0ff:静态字段初始值的偏移,为O表示没有静态数据(所有静态数据都初始化为O或nul I),保存数据的encoded_array_item的格式可以隐藏;
[0058]3.proto_id_item 中:
[0059]paramenters_off:从文件开始到参数类型列表的偏移,为O表示无参数,则其详细说明对应的type_list区域中可隐藏。
[0060]本发明的一个实施例中,如图2所示,上述步骤S2具体包括以下步骤:
[0061]S2.1、可利用字段编号完成后,进行信息隐藏,将需要放入的内容加密,并生成随机数seed。例如:当进行信息隐藏时,将需要隐藏的有意义的明文信息Ml,例如隐藏文本文件或一张图片,使用某种加密方式如流密码RC4加密为密文信息Cl,并将信息转化为二进制数,计算其比特位长度为K1,保证Kl的长度小于N;或当信息隐藏用于软件保护时,将软件的保护信息,例如:包含软件版权信息、软件密钥、开发者信息的明文信息M2,使用流密码RC4加密为密文信息C2,并将信息转化为二进制数,计算其比特位长度为K2,保证K2的长度小于N;并获取此时设备的时间,例如:取当前时间/10/18/08: 40: 20精确到秒,转化为实数1018084020,将其转化为二进制数t = 111100101011101011101010110100,作为生成的伪随机数seed,计算其比特位长度为T = 30,保证T的长度小于N-Kl或N-K2,若不小于,贝Ij取seed的前N-KI或N-K2个比特位作为伪随机数。
[0062]S2.2、将选取随机数保存到DEX文件可利用字段中,具体操作例如,将选取的随机数t = 10010011保存到数组ADD[N]中,取ADD的前T位,依次按顺序存入t,即ADD[i] = Seed[?],?=0,...Τ-1,Τ= |866(1|=8,因此,存入后厶00[0] = 1,厶00[1]=0,厶00[2]=0,厶00[3]=1,八00[4] = 0 300[5] = (^00[6] = ^00[7] = 1,上例中,也可将七进行有序可逆置换后,依次以上述方法存入到数组ADD[N]中。
[0063]S2.3、可通过随机数发生器RAND(seed)产生随机隐藏地址H[i],S卩H[i]:=T+RAND(
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1