一种基于特征注入的仿冒应用程序监测方法

文档序号:6523539阅读:234来源:国知局
一种基于特征注入的仿冒应用程序监测方法
【专利摘要】本发明是关于一种基于特征注入的仿冒应用程序监测方法,包括以下步骤:步骤S1,获取待监测的应用程序;步骤S2,根据上述应用程序的文件结构,在待监测的应用程序中注入监测特征;步骤S3,对含有监测特征的应用程序进行数字签名;步骤S4,记录待监测应用程序被注入的监测特征与数字签名的配对信息;步骤S5,对被注入监测特征的应用程序进行监测;其中,在监测过程中,当捕获到的应用程序文件中含有被注入的监测特征时,如果该应用程序的数字签名与监测特征对应的签名不一致时,表明该捕获到的应用程序是仿冒应用程序;反之,表明不是仿冒应用程序。借由本发明,能够快速准确地识别仿冒应用程序,实现对仿冒应用程序的实时监测。
【专利说明】—种基于特征注入的仿冒应用程序监测方法【技术领域】
[0001]本发明涉及一种监测方法,特别是涉及一种基于特征注入的仿冒应用程序监测方法。
【背景技术】
[0002]2012年国家互联网应急中心(CNCERT)监测发现智能手机病毒超过16万个,超过2011年手机病毒数量的25倍,主要集中在Android平台,其中大部分手机病毒具有隐私窃取、远程控制、恶意扣费等高危恶意行为。手机病毒的大规模爆发与Android平台APP应用程序的易篡改性有着直接联系。Android应用程序的安装文件是符合ZIP压缩格式的压缩包文件,黑客利用像APKT00L的重打包工具可以轻松地将一个正版Android应用程序破解,植入广告插件、扣费插件等恶意程序并重新封装得到与原有Android应用程序拥有相同界面的仿冒APP应用。
[0003]目前第三方应用商店对仿冒APP监管不严格,导致市场里充斥着大量的仿冒APP应用。由于普通用户没有鉴别能力,因此会下载这些仿冒APP,从而构成隐私信息泄露、成为“手机肉鸡”、资费消耗等运行风险。因此针对仿冒APP的监测与处置是保护用户非常重要的一项工作。
[0004]然而,针对给定的Android应用程序APP,通过鉴别应用程序的包名、关键字和数字签名等特征可以迅速判断给定的应用程序是否是仿冒应用程序。但是,如果要从应用商店数量众多的未知APP中监测仿冒APP,并迅速定位仿冒APP是非常困难的。

【发明内容】

[0005]本发明的目的在于提供一种基于特征注入的仿冒应用程序监测方法,能够快速准确地识别仿冒应用程序,并实现对仿冒应用`程序的实时监测。
[0006]本发明的目的是采用以下技术方案来实现的。本发明提供一种基于特征注入的仿冒应用程序监测方法,包括以下步骤:步骤SI,获取待监测的应用程序;步骤S2,根据上述应用程序的文件结构,在待监测的应用程序中注入监测特征;步骤S3,对含有监测特征的应用程序进行数字签名;步骤S4,记录待监测应用程序被注入的监测特征与数字签名的配对信息,存储于监测特征库中;步骤S5,对被注入监测特征的应用程序进行监测;其中,在监测过程中,当捕获到的应用程序文件中含有被注入的监测特征时,如果该应用程序的数字签名与监测特征库中该监测特征对应的数字签名不一致时,表明该捕获到的应用程序是仿冒待监测应用程序;反之,表明该捕获到的应用程序不是仿冒待监测应用程序。
[0007]本发明的目的还可采用以下技术措施进一步实现。
[0008]前述的基于特征注入的仿冒应用程序监测方法,其中该应用程序涉及Android操作系统。
[0009]前述的基于特征注入的仿冒应用程序监测方法,其中被注入应用程序的监测特征包括静态特征和动态特征。[0010]前述的基于特征注入的仿冒应用程序监测方法,其中该静态特征指应用程序运行前注入的不可执行特征,该动态特征指应用程序运行前注入的可执行特征,及在应用程序运行时生成的不可执行特征或可执行特征。
[0011]前述的基于特征注入的仿冒应用程序监测方法,其中上述的注入特征包括注入静态特征和注入动态特征的至少一种。
[0012]前述的基于特征注入的仿冒应用程序监测方法,其中该注入静态特征包括添加字符串特征和添加文件特征;该添加字符串特征包括在APK文件已存在的dex文件、so文件、js文件、jason文件、jar文件、jpg图片文件、bmp图片文件、png图片文件、gif图片文件、资源文件xml文件、mp3文件、html文件、htm文件、ini文件、txt文件、pack文件、SF文件、RSA文件、MF文件、fnt文件、arse文件中至少一者添加字符串特征,不限制添加的字符串内容,只要监测者能识别即可;该添加文件特征包括添加so文件、js文件、jason文件、jar文件、jpg图片文件、bmp图片文件、png图片文件、gif图片文件、资源文件xml文件、mp3文件、html文件、htm文件、ini文件、txt文件、pack文件、fnt文件、arse文件中的至少一者,不限制添加的文件内容,只要监测者能识别即可。
[0013]前述的基于特征注入的仿冒应用程序监测方法,其中该注入动态特征包括运行前添加的可执行特征,包括JAVA代码、ARM代码或so文件中的至少一者。
[0014]前述的基于特征注入的仿冒应用程序监测方法,其中该注入动态特征包括运行时通过程序生成或网络下载方式添加的不可执行特征,包括字符串特征和文件特征中的至少一者;该字符串特征包括在手机内存中添加字符串,在APK文件已存在的dex文件、so文件、js文件、jason文件、jar文件、jpg图片文件、bmp图片文件、png图片文件、gif图片文件、资源文件xml文件、mp3文件、html文件、htm文件、ini文件、txt文件、pack文件、SF文件、RSA文件、MF文件、fnt文件、arse文件中添加字符串特征,不限制添加的字符串内容,只要监测者能识别即可;该添加文件特征包括在手机存储空间中添加so文件、js文件、jason文件、jar文件、jpg图片文件、bmp图片文件、png图片文件、gif图片文件、资源文件xml文件、mp3文件、html文件、htm文件、ini文件、txt文件、pack文件、fnt文件、arse文件,不限制添加的文件内容,只要监测者能识别即可。
[0015]前述的基于特征注入的仿冒应用程序监测方法,其中该注入动态特征包括运行时通过程序生成或网络下载方式添加可执行特征,包括dex文件、so文件或者jar文件中的
至少一者。
[0016]前述的基于特征注入的仿冒应用程序监测方法,其中该注入动态特征需要特定条件触发后显示。
[0017]前述的基于特征注入的仿冒应用程序监测方法,其中上述注入的特征是一个或多个,当注入多个特征时,当发现被监测的应用程序含有至少一条特征时,即可通过匹配监测特征库中该特征对应的数字签名判断捕获到的应用程序是否是仿冒应用程序。
[0018]前述的基于特征注入的仿冒应用程序监测方法,其中上述注入的特征都需要通过加密算法进行加密。
[0019]前述的基于特征注入的仿冒应用程序监测方法,其中加密的方式采用RSA加密方法,监测时须利用RSA解密算法对监测特征进行解密。
[0020]前述的基于特征注入的仿冒应用程序监测方法,借由上述技术方案,本发明的一种基于特征注入的仿冒应用程序监测方法至少具有下列优点及有益效果:借由本实用新型,能够快速准确地识别仿冒应用程序,并实现对仿冒应用程序进行实时监测。详细来说,本发明通过主动向APP中添加静态监测特征和动态监测特征,并通过加密和增加触发条件等方式对监测特征进行保护,使得在应用商店的数以百万计的APP中能够迅速定位被注入特征的APP,并迅速判断APP是否为仿冒APP,从而达到迅速定位仿冒APP的目的。
[0021]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
【专利附图】

【附图说明】
[0022]图1:为本发明实施例的一种基于特征注入的仿冒应用程序监测方法的流程示意图。
【具体实施方式】
[0023]为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种基于特征注入的仿冒应用程序监测方法的【具体实施方式】、结构、特征及其功效,详细说明如后。
[0024]参阅图1所示,为本发明实施例的一种基于特征注入的仿冒应用程序监测方法的流程示意图;该基于特征注入的仿冒应用程序监测方法包括以下步骤:
[0025]步骤SI,获取待监测的应用程序;
[0026]步骤S2,根据上述应用程序的文件结构,在待监测的应用程序中注入监测特征;
[0027]上述被注入应用程序的监测特征包括静态特征和动态特征,其中,该静态特征指应用程序运行前注入的不可执行特征,该动态特征指应用程序运行前注入的可执行特征,及在应用程序运行时生成的不可执行特征或可执行特征。且注入的监测特征包括静态特征和动态特征的至少一种。
[0028]步骤S3,对含有监测特征的应用程序进行数字签名;
[0029]在实际应用中,待监测应用程序的提供者按照X509协议等数字签名方法对含有监测特征的应用程序进行数字签名。由于数字签名很难被篡改,是有效区别正版应用程序和仿冒应用程序的标识。本发明不限制数字签名的内容。
[0030]步骤S4,记录待监测应用程序被注入的监测特征与数字签名的配对信息,存储于监测特征库中;
[0031]具体来说,经过注入监测特征和数字签名后,待监测应用程序是确定的,即只有当一个应用程序中同时包含被注入监测特征和与特征匹配的数字签名,该应用程序才是待监测应用程序或正版应用程序。
[0032]步骤S5,对被注入监测特征的应用程序进行监测,即对捕获到的应用程序的监测特征与数字签名进行比对;
[0033]其中,在监测过程中,当捕获到的应用程序文件中含有被注入的监测特征时,如果该应用程序的数字签名与监测特征库中该监测特征对应的数字签名不一致时,表明该捕获到的应用程序是仿冒待监测应用程序;反之,表明该捕获到的应用程序不是仿冒待监测应用程序。
[0034]在本发明中,上述的应用程序涉及Android操作系统,但是不限定为Android操作系统。
[0035]下面,针对Android操作系统应用程序的监测特征注入,进行详细说明如下。
[0036]Android操作系统应用程序的监测特征注入包括静态特征注入和动态特征注入,且监测特征注入包括静态特征注入和动态特征注入的至少一种;下面对两种特征注入分别进行介绍。
[0037](一)静态特征注入
[0038]该静态特征注入是Android操作系统运行前,向APK文件中注入的不可执行特征,包括以下两类:
[0039]1、添加字符串特征
[0040]该添加字符串特征包括在APK文件已存在的dex文件、so文件、js文件、jason文件、jar文件、jpg图片文件、bmp图片文件、png图片文件、gif图片文件、资源文件xml文件、mp3文件、html文件、htm文件、ini文件、txt文件、pack文件、SF文件、RSA文件、MF文件、fnt文件、arse文件等文件中至少一者添加字符串特征,不限制添加的字符串内容,只要监测者能识别即可。其中字符串的内容由添加者自行定义,在定义完内容后需要通过加密算法对字符串内容进行加密。最终将加密后的字符串添加至上述文件中。下面以向Dex文件、so文件和xml文件添加字符串为例说明添加过程。
[0041](I)在Dex文件中添加字符串特征
[0042]根据Dex的文件结构,在字符串区段添加已经准备好的字符串特征,同时修改Dex文件的 string_ids_size 以及 string_ids_off 的值。
[0043]在Dex 文件中,string_ids_size (偏移 0x38h 处)、string_ids_off (偏移 0x3Ch处),在此我们读取string_ids_0ff处的值,跳转到该地址添加加密后的字符串特征,同时添加完加密特征后,string_ids_size的值要做出相应的改变。
[0044](2)在APK已存在的so文件中添加字符串特征
[0045]如果APK文件中包含有so文件,so文件也是elf文件格式,在so文件的无用数据区添加已经准备好的字符串特征。
[0046]APK文件中,如果使用了 native层的so文件,此时我们就可以通过在so文件中添加加密后的字符串特征来作为监测点。在so文件中寻找无用数据区,在空数据处添加加密后的字符串特征。
[0047](3)在APK资源文件xml中添加字符串特征
[0048]事实上,APK文件是zip格式,其中的res是存放资源文件的目录,修改res目录下的xml文件,添加已经准备好的字符串特征。
[0049]比如说res/values路径下的string, xml文件,修改〈string〉加密后的字符串特征〈/string〉,实现静态特征的添加。
[0050]2、添加文件特征
[0051]事实上,APK文件是zip格式,向APK文件中加入文件特征,来监测APK文件是否被伪造。该添加文件特征包括添加SO文件、js文件、jason文件、jar文件、jpg图片文件、bmp图片文件、png图片文件、gif图片文件、资源文件xml文件、mp3文件、html文件、htm文件、ini文件、txt文件、pack文件、fnt文件、arse文件等文件中的至少一者,不限制添加的文件内容,只要监测者能识别即可。
[0052]( I)添加so文件
[0053]APK文件中,添加so文件来作为监测特征。
[0054](2)添加jpg (图片文件)
[0055]APK文件中,添加jpg (图片文件)作为监测特征。
[0056](3)添加资源文件xml
[0057]APK文件res目录下面,添加资源文件作为监测特征。
[0058]但是,本发明不限定注入的静态特征的类型,同时不限定注入的静态特征的个数,即可以是一个或多个字符串特征,或一个或多个文件特征,只要满足实际需求即可。
[0059]值得注意的,为了防止被注入的静态特征被Hacker破译或篡改,注入的静态特征需要通过加密算法进行加密。加密的方式可以采用RSA加密方法,监测时须利用RSA解密算法对监测特征进行解密,由于RSA算法加密的数据长度限制,用RSA加密的特征不应过长。本发明不对加密的方式进行限制,可以根据实际情况进行,只要满足需求即可。
[0060](二)动态特征注入
[0061]动态特征是Android操作系统运行前注入的可执行特征,及运行时生成的不可执行特征或可执行特征。动态特征的注入包括以下几种类型:
[0062]1、运行前添加可执行特征
[0063]该注入动态特征包括运行前添加可执行的JAVA代码、ARM代码或so文件等。下面以ARM代码和so文件为例说明添加过程。
[0064](I)添加ARM代码
[0065]修改APK文件中的so文件代码,以inline hook的方式添加ARM代码特征:ARM代码实现访问指定的URL,当达到设定的触发条件时,触发进而访问指定的URL,以此用来监测;ARM代码实现运行时在内存生成加密的字符串特征,以此用来监测。另外,用花指令保护添加的ARM代码,花指令可以有效的防止ARM层的代码被静态分析。
[0066](2)添加so文件
[0067]在APK文件中添加so文件,在运行时篡改Dalvik字节码。运行时篡改Dalvik字节码,可以有效的防止使用分析工具进行静态反编译分析。运行时篡改Dalvik字节码的实现,可以通过Android Native层的原生代码来实现。在应用启动MainActivity之后,使用LoadLibrary ()加载 Android Native 层的原生代码。
[0068]2、运行时生成不可执行特征
[0069]该注入动态特征包括运行时通过程序生成或者网络下载等方式生成的不可执行的字符串特征和文件特征;该字符串特征包括在手机内存中添加字符串,在APK文件已存在的dex文件、so文件、js文件、jason文件、jar文件、jpg图片文件、bmp图片文件、png图片文件、gif图片文件、资源文件xml文件、mp3文件、html文件、htm文件、ini文件、txt文件、pack文件、SF文件、RSA文件、MF文件、fnt文件、arse文件等文件中添加字符串特征,不限制添加的字符串内容,只要监测者能识别即可;该添加文件特征包括在手机存储空间中添加SO文件、js文件、jason文件、jar文件、jpg图片文件、bmp图片文件、png图片文件、gif图片文件、资源文件xml文件、mp3文件、html文件、htm文件、ini文件、txt文件、pack文件、fnt文件、arse文件等文件,不限制添加的文件内容,只要监测者能识别即可。
[0070]其中字符串的内容由添加者自行定义,在定义完内容后需要通过加密算法对字符串内容进行加密。最终将加密后的字符串添加至手机内存或者上述文件中。
[0071]3、运行时添加可执行特征
[0072]该注入动态特征包括运行时程序生成、网络下载等方式添加可执行的dex文件、so文件或者jar文件等可执行文件。
[0073]( I)添加so文件
[0074]添加so文件,运行时动态修改代码,内存中显示特征,以此进行监测。添加arm汇编代码,修改函数头,在函数被调用时,运行代码,添加特征,以此来进行监测。另外,可以增加触发条件,代码加花指令进行保护。
[0075](2)添加dex文件或者jar文件
[0076]网络下载dex文件或者jar文件,通过Dexclassloader进行加载运行,添加特征,以此来进行监测。
[0077]同样,本发明不限定注入的动态特征的类型,也不限定注入的动态特征的个数,SP可以是以上的特征的一个或多个,只要满足实际需求即可。另外,上述注入动态特征需要特定条件触发后显示,该特定条件由添加动态特征者自行定义,且要保证注入动态特征的显
/Jn ο
[0078]值得注意的,为了防止被注入的动态特征被Hacker破译或篡改,注入的动态特征需要通过加密算法进行加密。加密的方式可以采用RSA加密方法,监测时须利用RSA解密算法对监测特征进行解密,由于RSA算法加密的数据长度限制,用RSA加密的特征不应过长。加密的方式也可以采用上述的添加花指令等。总之,本发明不对加密的方式进行限制,可以根据实际情况进行,只要满足需求即可。
[0079]另外,上述注入的特征是一个或多个,当注入多个特征时,当发现捕获到的应用程序含有至少一条特征时,即可通过匹配监测特征库中该特征对应的数字签名判断捕获到的应用程序是否是仿冒应用程序。
[0080]下面,以实际APK文件为例,通过两个实施例详细讲解添加静态特征和动态特征的例子。
[0081]实施例一:反编译APK文件,向Dex文件中添加加密字符串作为静态特征。
[0082]
【权利要求】
1.一种基于特征注入的仿冒应用程序监测方法,其特征在于其包括以下步骤: 步骤Si,获取待监测的应用程序; 步骤S2,根据上述应用程序的文件结构,在待监测的应用程序中注入监测特征; 步骤S3,对含有监测特征的应用程序进行数字签名; 步骤S4,记录待监测应用程序被注入的监测特征与数字签名的配对信息,存储于监测特征库中; 步骤S5,对被注入监测特征的应用程序进行监测; 其中,在监测过程中,当捕获到的应用程序文件中含有被注入的监测特征时,如果该应用程序的数字签名与监测特征库中该监测特征对应的数字签名不一致时,表明该捕获到的应用程序是仿冒待监测应用程序;反之,表明该捕获到的应用程序不是仿冒待监测应用程序。
2.根据权利要求1所述的基于特征注入的仿冒应用程序监测方法,其特征在于其中该应用程序涉及Android操作系统。
3.根据权利要求1或2所述的基于特征注入的仿冒应用程序监测方法,其特征在于其中被注入应用程序的监测特征包括静态特征和动态特征。
4.根据权利要求1或2所述的基于特征注入的仿冒应用程序监测方法,其特征在于其中该静态特征指应用程序运行前注入的不可执行特征,该动态特征指应用程序运行前注入的可执行特征,及在应用程序运行时生成的不可执行特征或可执行特征。
5.根据权利要求3所述的基于特征注入的仿冒应用程序监测方法,其特征在于其中上述的注入特征包括注入静态特征和注入动态特征的至少一种。
6.根据权利要求4所述的基于特征注入的仿冒应用程序监测方法,其特征在于其中该注入静态特征包括添加字符串特征和添加文件特征; 该添加字符串特征包括在APK文件已存在的dex文件、so文件、js文件、jason文件、jar文件、jpg图片文件、bmp图片文件、png图片文件、gif图片文件、资源文件xml文件、mp3文件、html文件、htm文件、ini文件、txt文件、pack文件、SF文件、RSA文件、MF文件、fnt文件、arse文件中至少一者添加字符串特征; 该添加文件特征包括添加so文件、js文件、jason文件、jar文件、jpg图片文件、bmp图片文件、png图片文件、gif图片文件、资源文件xml文件、mp3文件、html文件、htm文件、ini文件、txt文件、pack文件、fnt文件、arse文件中的至少一者。
7.根据权利要求4所述的基于特征注入的仿冒应用程序监测方法,其特征在于其中该注入动态特征包括运行前添加的可执行特征,包括JAVA代码、ARM代码或so文件中的至少一者O
8.根据权利要求4所述的基于特征注入的仿冒应用程序监测方法,其特征在于其中该注入动态特征包括运行时通过程序生成或网络下载方式添加的不可执行特征,包括字符串特征和文件特征中的至少一者; 该字符串特征包括在手机内存中添加字符串,在APK文件已存在的dex文件、so文件、js文件、jason文件、ja r文件、jpg图片文件、bmp图片文件、png图片文件、gif图片文件、资源文件xml文件、mp3文件、html文件、htm文件、ini文件、txt文件、pack文件、SF文件、RSA文件、MF文件、fnt文件、arse文件中添加字符串特征;该添加文件特征包括在手机存储空间中添加SO文件、js文件、jason文件、jar文件、jpg图片文件、bmp图片文件、png图片文件、gif图片文件、资源文件xml文件、mp3文件、html文件、htm文件、ini文件、txt文件、pack文件、fnt文件、arse文件。
9.根据权利要求4所述的基于特征注入的仿冒应用程序监测方法,其特征在于其中该注入动态特征包括运行时通过程序生成或网络下载方式添加可执行特征,包括dex文件、so文件或者jar文件中的至少一者。
10.根据权利要求4或7或9所述的基于特征注入的仿冒应用程序监测方法,其特征在于其中该注入动态特征需要特定条件触发后显示。
11.根据权利要求6-9中任一项所述的基于特征注入的仿冒应用程序监测方法,其特征在于其中上述注入的特征是一个或多个,当注入多个特征时,当发现捕获到的应用程序含有至少一条特征时,即可通过匹配监测特征库中该特征对应的数字签名判断捕获到的应用程序是否是仿冒应用程序。
12.根据权利要求6-9中任一项所述的基于特征注入的仿冒应用程序监测方法,其特征在于其中上述注入的特征都需要通过加密算法进行加密。
13.根据权利要求12所述的基于特征注入的仿冒应用程序监测方法,其特征在于其中加密的方式采用RSA加密方法,监测时须利用RSA解密算法对监测特征进行解密。
【文档编号】G06F11/36GK103823751SQ201310682073
【公开日】2014年5月28日 申请日期:2013年12月13日 优先权日:2013年12月13日
【发明者】何能强, 王明华, 云晓春, 王新镇, 李佳, 贺敏, 纪玉春, 胡俊 申请人:国家计算机网络与信息安全管理中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1