本发明涉及一种基于动态方法获取android软件包图片资源的重打包检测方法,属于软件测试。
背景技术:
1、移动互联网时代到来,以android手机占主体的移动设备逐渐成为人们进行日常生活与活动之必需。android系统开放的生态与广阔的受众引来了大量居心叵测者,他们能够简单地对android应用重打包来达成不法目的。重打包即对已经存在的android应用安装包(apk文件)进行反向打包后稍作改动后再次打包的行为,应用看起来没有改变,但攻击者可能嵌入广告乃至恶意代码,无论对软件作者和用户都危害巨大。目前来说基于代码的软件胎记是软件胎记最直观的思路。这类技术从代码语法、语义分析特征。但这种静态分析方法面对代码加密、混淆的攻击方法下基本失效,即使是动态的代码分析,也无法克服替换android api下分析失效的问题。另外还有利用重打包应用的gui界面结构的相似性来提取软件胎记。大部分此类技术采取静态方法来获取gui界面的样式和布局,但不能防止软件对这些布局文件的混淆和加密,而使用动态方法,虽对大部分使用android框架的应用效果较好,但对于其他应用的检测效果仍有局限。而基于资源的软件胎记利用了重打包应用的资源文件的相似性抓取资源文件进行特征比较,但是由于目前主流方法采用静态方法进行资源文件的抓取和摘要,它们仍然无法经受住资源混淆攻击。
技术实现思路
1、发明目的:针对现有技术中存在的问题与不足,本发明提供一种基于动态方法获取android软件包图片资源的重打包检测方法,以解决现有技术对于android应用重打包检测的局限性,致力于实现一种基于资源的软件胎记技术,以有效识别重打包行为。
2、本发明技术实现的软件胎记技术是动态地对应用通过运行时api调取的资源文件进行分段而非分文件hash摘要以生成软件胎记,大大提高了检测灵敏度,使攻击者对资源的混淆行为无效化。
3、技术方案:一种基于动态方法获取android软件包图片资源的重打包检测方法,运行待检测应用集合并运用资源钩取技术,动态截取android应用在运行时对于图片资源文件的调取;基于动态获取的图片资源文件,生成应用的软件胎记。通过比较待检测应用集合中的软件胎记,报告可疑重打包应用对。具体步骤如下:
4、步骤1:在安装了xposed或其衍生hook框架的android系统中运行待检测应用集合并动态钩取图片资源文件;
5、步骤2:基于动态获取的图片资源文件,据其生成应用的软件胎记;
6、步骤3:通过比较待检测应用集合中的软件胎记,报告可疑重打包应用对。
7、为优化上述技术方案,采取的具体措施还包括:
8、进一步地,步骤1中,动态钩取应用图片资源的方法具体为:
9、将待检测应用集合中的应用在安装了xposed或其衍生hook框架的android系统中运行,再钩取其运行时加载的图片后,得到每个应用的图片资源集合img={img1,img2,...,imgn},其中n为某个应用钩取的图片数量。
10、进一步地,步骤2中,所述根据一个应用的图片资源集合img生成其软件胎记的方法具体为:
11、步骤2.1:通过机器学习方法训练出一个图片dhash值的分类器f:dhash→id,其中id表示类别编号,分类器根据图片的dhash值匹配到一个最吻合的编号。
12、步骤2.2:将img中的每个图片imgi的dhash值dhashi经分类器分类得到数字编号idi=f(dhashi),最终得到该应用的词集合w={id1,id2,...,idn};
13、步骤2.3:将词集合w通过min-hash函数族处理后得到该应用最终的软件胎记b={f1(w),f2(w),...,fm(w)},其中f1,f2,...,fm是m种不同的函数,fi(w)为将词集合w经过fi作用后得到的一个min-hash值。
14、步骤2中,所述图片dhash值的分类器的训练方法具体为:
15、从应用市场上收集大量应用,对其中部分进行重打包操作,然后解包这些应用,并收集这些应用所有的图片资源,计算所有图片的dhash值然后通过k-means聚类训练得到k个编号不同的dhash值,编号范围为1,2,...,k,分类器功能的实现则为对输入的某个dhash值dh,与训练得到的k种dhash值进行匹配,输出与输入dhash值dh汉明距离最相近的dhash值的编号id。
16、进一步地,步骤3中,所述比较待检测应用集合中所有应用的软件胎记,报告可疑重打包软件对的方法具体为:
17、定义两个胎记b1,b2的相似度为其中m为min-hash函数族中的函数种类数,b[i]为软件胎记b的第i个分量,也即一个min-hash值,i(b1[i],b2[i])为:若b1[i]=b2[i]则为1,否则为0。
18、先使用lsh方法初步找到疑似相似度较高的软件包对。再根据上述相似度定义,具体计算疑似相似度较高的软件包对的具体相似度,超过预设阈值即认为是重打包软件对。
19、一种基于动态方法获取android软件包图片资源的重打包检测系统,包括如下模块:
20、模块一,运行待检测应用集合并运用资源钩取技术,动态截取android应用在运行时对于图片资源文件的调取;
21、模块二,基于动态获取的图片资源文件,生成应用的软件胎记;
22、模块三,通过比较待检测应用集合中的软件胎记,报告可疑重打包应用对。
23、系统的实现过程与方法相同,不再赘述。
24、一种计算机设备,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行上述计算机程序时实现如上所述的基于动态方法获取android软件包图片资源的重打包检测方法。
25、一种计算机可读存储介质,该计算机可读存储介质存储有执行如上所述的基于动态方法获取android软件包图片资源的重打包检测方法的计算机程序。
26、本发明的有益效果是:
27、解决了主流方法采用的静态方法进行资源文件的抓取和摘要无法经受住资源混淆攻击的问题,并且同时大大提高了检测的效率与有效率,使攻击者对资源的混淆行为无效化。
1.一种基于动态方法获取android软件包图片资源的重打包检测方法,其特征在于,运行待检测应用集合并运用资源钩取技术,动态截取android应用在运行时对于图片资源文件的调取;基于动态获取的图片资源文件,生成应用的软件胎记;通过比较待检测应用集合中的软件胎记,报告可疑重打包应用对。
2.根据权利要求1所述的基于动态方法获取android软件包图片资源的重打包检测方法,其特征在于,将待检测应用集合中的应用在安装了xposed或其衍生hook框架的android系统中运行,再钩取应用运行时加载的图片后,得到每个应用的图片资源集合img={img1,img2,...,imgn},其中n为某个应用钩取的图片数量。
3.根据权利要求1所述的基于动态方法获取android软件包图片资源的重打包检测方法,其特征在于,根据一个应用的图片资源集合img生成其软件胎记的方法具体为:
4.根据权利要求1所述的基于动态方法获取android软件包图片资源的重打包检测方法,其特征在于,图片dhash值的分类器的训练方法具体为:
5.根据权利要求1所述的基于动态方法获取android软件包图片资源的重打包检测方法,其特征在于,所述比较待检测应用集合中所有应用的软件胎记,报告可疑重打包软件对的方法具体为:
6.一种基于动态方法获取android软件包图片资源的重打包检测系统,其特征在于,包括如下模块:
7.一种计算机设备,其特征在于:该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行上述计算机程序时实现如权利要求1-5中任一项所述的基于动态方法获取android软件包图片资源的重打包检测方法。
8.一种计算机可读存储介质,其特征在于:该计算机可读存储介质存储有执行如权利要求1-5中任一项所述的基于动态方法获取android软件包图片资源的重打包检测方法的计算机程序。