本發(fā)明涉及移動(dòng)應(yīng)用領(lǐng)域,特別涉及一種基于移動(dòng)應(yīng)用界面元素的相似性計(jì)算方法。
背景技術(shù):
隨著移動(dòng)互聯(lián)網(wǎng)爆發(fā)式的發(fā)展,人們正在經(jīng)歷革命性變化,包括生活方式和生活習(xí)慣。線(xiàn)下生活正在不斷向線(xiàn)上轉(zhuǎn)移,而智能手機(jī)的出現(xiàn)和興起,將此進(jìn)程推向了移動(dòng)端。當(dāng)今社會(huì),移動(dòng)設(shè)備已經(jīng)成為人們工作、生活必不可少的一部分,購(gòu)物、社交、辦公、學(xué)習(xí)等各項(xiàng)事務(wù)都在移動(dòng)設(shè)備上進(jìn)行。其中,移動(dòng)應(yīng)用是移動(dòng)設(shè)備實(shí)現(xiàn)多功能化、協(xié)助用戶(hù)生活工作最主要的因素。根據(jù)Google統(tǒng)計(jì)數(shù)據(jù),截至今年2月,在Google Play上的應(yīng)用已超過(guò)140萬(wàn)個(gè)。如此海量應(yīng)用在給用戶(hù)帶來(lái)便捷的同時(shí),也為用戶(hù)帶來(lái)了選擇困擾。大量功能相似、質(zhì)量層次不齊的應(yīng)用,使用戶(hù)難以抉擇。其中混雜著大量的抄襲、惡意應(yīng)用,給用戶(hù)、開(kāi)發(fā)者帶來(lái)極大的問(wèn)題和挑戰(zhàn)。
由于惡意移動(dòng)應(yīng)用的盛行,特別是在Android應(yīng)用市場(chǎng)上,亟需有效的方法用來(lái)解決此挑戰(zhàn)。相似性檢測(cè)可以用來(lái)處理當(dāng)前這些問(wèn)題,包括應(yīng)用抄襲、惡意軟件檢測(cè)、應(yīng)用搜索等等。Zhou在2012年發(fā)表的文獻(xiàn)中對(duì)惡意軟件樣本進(jìn)行分析,作者發(fā)現(xiàn):(1)其中86.0%重新打包的應(yīng)用中包含惡意負(fù)載;(2)36.7%有獲取平臺(tái)層級(jí)權(quán)限的行為;(3)93.0%表現(xiàn)出類(lèi)似機(jī)器人的能力。除了對(duì)用戶(hù)的影響,應(yīng)用抄襲對(duì)原始開(kāi)發(fā)商及其廣告收入都有很大影響。因此,對(duì)用戶(hù)和開(kāi)發(fā)商而已,相似性檢測(cè)顯得尤為重要。為了解決這個(gè)問(wèn)題,已有較多對(duì)移動(dòng)應(yīng)用分析的相關(guān)研究。DNADroid通過(guò)比較候選應(yīng)用中函數(shù)間的程序依賴(lài)圖來(lái)檢測(cè)應(yīng)用抄襲。同時(shí)作者指出,動(dòng)態(tài)檢測(cè)代碼抄襲將面臨可擴(kuò)展性限制,因?yàn)锳ndroid應(yīng)用需要大量交互,因此對(duì)動(dòng)態(tài)檢測(cè)而言,檢測(cè)相似應(yīng)用會(huì)遇到較大困難。
動(dòng)態(tài)檢測(cè)在海量應(yīng)用環(huán)境下顯得不夠現(xiàn)實(shí),因而,使用靜態(tài)分析更切實(shí)際需求,且方便高效。Chen在2015年發(fā)表的文獻(xiàn)中利用應(yīng)用市場(chǎng)中各式各樣的數(shù)據(jù),例如文字、圖片、用戶(hù)評(píng)論等,為每個(gè)模塊數(shù)據(jù)構(gòu)建核函數(shù),并使用在線(xiàn)學(xué)習(xí)算法得到不同模塊間的最優(yōu)組合?,F(xiàn)有相似性計(jì)算技術(shù)主要有兩個(gè)分支:代碼相似性和元數(shù)據(jù)相似性。代碼相似性計(jì)算主要關(guān)注移動(dòng)應(yīng)用代碼層面的相似性,需要對(duì)應(yīng)用中所有的實(shí)現(xiàn)代碼進(jìn)行遍歷和分析,有計(jì)算復(fù)雜且耗時(shí)等缺點(diǎn)。元數(shù)據(jù)相似性計(jì)算是通過(guò)分析移動(dòng)應(yīng)用的元數(shù)據(jù),例如應(yīng)用名,應(yīng)用描述,用戶(hù)評(píng)論等。此類(lèi)方法無(wú)法利用應(yīng)用內(nèi)部的信息,在比較相似移動(dòng)應(yīng)用時(shí)不一定準(zhǔn)確。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是針對(duì)上述問(wèn)題,提供一種基于移動(dòng)應(yīng)用界面元素的相似性計(jì)算方法,其包括以下步驟:
1)對(duì)apk文件進(jìn)行反編譯,獲得應(yīng)用代碼文件、界面布局文件、Manifest,找到計(jì)算相似性所需的特征,包括resources、assets,permissions;
2)相似性計(jì)算將所述特征,根據(jù)不同特征性質(zhì)進(jìn)行計(jì)算,三個(gè)不同特征計(jì)算所得相似性通過(guò)不同權(quán)重進(jìn)行加權(quán)結(jié)合,最終獲得兩個(gè)應(yīng)用間的相似性值。
進(jìn)一步的,利用反編譯工具Apktool對(duì)apk文件進(jìn)行反編譯。
進(jìn)一步的,對(duì)于所述特征resources和assets,使用Pearson相關(guān)系數(shù)計(jì)算不同應(yīng)用間的相似性。
進(jìn)一步的,對(duì)于所述特征resources計(jì)算不同應(yīng)用間的相似性具體公式如下:
其中ri和rj分別表示應(yīng)用i和應(yīng)用j的resources特征,n表示resources特征的維度。
進(jìn)一步的,對(duì)于所述特征assets計(jì)算不同應(yīng)用間的相似性具體公式如下:
其中ei和ej分別表示應(yīng)用i和應(yīng)用j的assets特征,m表示assets特征的維度。
進(jìn)一步的,對(duì)于所述特征permissions,使用Jaccard系數(shù)計(jì)算不同應(yīng)用間的相似性。
進(jìn)一步的,對(duì)于所述特征permissions計(jì)算不同應(yīng)用間的相似性具體公式如下:
其中pi和pj分別表示應(yīng)用i和應(yīng)用j的permissions特征,|pi∩pj|表示兩個(gè)應(yīng)用同時(shí)都申請(qǐng)的permissions數(shù)量,|pi∪pj|表示兩個(gè)應(yīng)用中所有申請(qǐng)的permissions類(lèi)別的數(shù)量。
進(jìn)一步的,所述三個(gè)不同特征計(jì)算所得相似性通過(guò)不同權(quán)重進(jìn)行加權(quán)結(jié)合,最終獲得兩個(gè)應(yīng)用間的相似性值,計(jì)算公式如下:
sim(ai,aj)=asim(ri,rj)+βsim(ei,ej)+γsim(pi,pj)
α+β+γ=1
其中sim(ri,rj)、sim(ei,ej)和sim(pi,pj)分別是由上述公式求得的resources、assets和permissions特征的相似性,α、β和γ用來(lái)權(quán)衡不同特征相似性間的比重,可以根據(jù)實(shí)際場(chǎng)景進(jìn)行調(diào)整。
附圖說(shuō)明
圖1為Android應(yīng)用界面上的resources和assets圖;
圖2為Android應(yīng)用文件中的resources圖;
圖3為Android應(yīng)用文件中的assets圖;
圖4為Android應(yīng)用中Manifest文件下的權(quán)限申請(qǐng)列表圖。
具體實(shí)施方式
以下對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。
一種基于移動(dòng)應(yīng)用界面元素的相似性計(jì)算方法,其包括以下步驟:
1)對(duì)apk文件進(jìn)行反編譯,獲得應(yīng)用代碼文件、界面布局文件、Manifest,找到計(jì)算相似性所需的特征,包括resources、assets,permissions;
2)相似性計(jì)算將所述特征,根據(jù)不同特征性質(zhì)進(jìn)行計(jì)算,三個(gè)不同特征計(jì)算所得相似性通過(guò)不同權(quán)重進(jìn)行加權(quán)結(jié)合,最終獲得兩個(gè)應(yīng)用間的相似性值。
為清楚描述移動(dòng)應(yīng)用相似性,本發(fā)明先給出應(yīng)用相似性定義。
定義:給定一個(gè)應(yīng)用集合A,相似性計(jì)算的目標(biāo)函數(shù)是其中函數(shù)f(ai,aj)表示應(yīng)用αi和應(yīng)用aj之間的相似性。
本發(fā)明以移動(dòng)應(yīng)用界面元素作為關(guān)鍵特征進(jìn)行相似性計(jì)算。對(duì)于兩個(gè)應(yīng)用是否相似,人類(lèi)可以通過(guò)觀(guān)察應(yīng)用的界面和截圖,很直觀(guān)地判斷出來(lái)。在Android應(yīng)用中,可視模式的數(shù)據(jù)是通過(guò)資源文件進(jìn)行存儲(chǔ)的,包括兩種類(lèi)型,分別是resources和assets。如圖1所示,左邊是一個(gè)Android應(yīng)用的界面,紅色方框表示的是界面上的元素,右邊分別列舉了resources和assets的資源數(shù)據(jù)。其中,resources是存儲(chǔ)在一個(gè)叫做R類(lèi)的層次文件中,包含了Android應(yīng)用中基本的布局資源,如Button、EditText、ListView等。如圖2所示,左側(cè)是Android應(yīng)用的文件列表,右側(cè)是R文件中存儲(chǔ)的布局資源數(shù)據(jù),每個(gè)資源都有一個(gè)獨(dú)立的編號(hào)。而assets是一組資源文件列表,包含圖片、音頻、視頻等文件。如圖3所示,在命名為assets的文件夾下,包括了各種圖片、音頻、視頻等文件,可以遍歷這些文件來(lái)提取assets特征。除可視模式信息除外,相似性應(yīng)用在權(quán)限申請(qǐng)上同樣具有一定的相似性。因此,本文會(huì)將permissions申請(qǐng)情況也作為應(yīng)用特征。Android應(yīng)用的permissions申請(qǐng)都在Manifest文件中申明,圖4展了一個(gè)permissions申明的例子。將所有分析所得特征進(jìn)行綜合,就可以形成每個(gè)應(yīng)用獨(dú)有的特征值。
Android應(yīng)用都被打包成apk格式的工程文件在各個(gè)應(yīng)用市場(chǎng)上發(fā)布。為分析應(yīng)用界面元素,本發(fā)明利用反編譯工具Apktool對(duì)apk文件進(jìn)行發(fā)編譯,反編譯后可以獲得應(yīng)用代碼文件、界面布局文件、Manifest等。在這些文件中,可以找到計(jì)算相似性所需的resources、assets,permissions,因而就可以為每個(gè)應(yīng)用構(gòu)建特征向量,并以此計(jì)算相似性。
相似性計(jì)算將對(duì)上述所得特征值,根據(jù)不同特征性質(zhì)進(jìn)行計(jì)算。Resources特征表征了應(yīng)用所使用的不同界面元素,因此使用次數(shù)體現(xiàn)了不同元素在應(yīng)用中的使用頻率,可以作為應(yīng)用偏好特征。
因此,進(jìn)一步的,對(duì)resources特征,本發(fā)明使用Pearson相關(guān)系數(shù)計(jì)算不同應(yīng)用間的相似性,具體公式如下:
其中ri和rj分別表示應(yīng)用i和應(yīng)用j的resources特征,n表示resources特征的維度。
Assets特征是不同資源文件在應(yīng)用中使用的數(shù)據(jù),包括圖片、音頻、視頻等文件,文件格式代表了所使用的的文件類(lèi)型,出現(xiàn)的次數(shù)即不同資源文件的特征。因此,進(jìn)一步的,對(duì)assets特征,本發(fā)明使用Pearson相關(guān)系數(shù)計(jì)算不同應(yīng)用間的相似性,具體公式如下:
其中ei和ej分別表示應(yīng)用i和應(yīng)用j的assets特征,m表示assets特征的維度。
Android系統(tǒng)官方文件給出了152個(gè)permissions選項(xiàng),應(yīng)用可以根據(jù)實(shí)際需求進(jìn)行申請(qǐng)。每一個(gè)permissions申請(qǐng)代表了應(yīng)用在permissions特征中的一維特征,且用0或1表示,即申請(qǐng)了就是1,沒(méi)有申請(qǐng)是0。所以,進(jìn)一步的,對(duì)permissions特征而言,本發(fā)明使用Jaccard系數(shù)計(jì)算不同應(yīng)用間的相似性,具體公式如下:
其中pi和pj分別表示應(yīng)用i和應(yīng)用j的permissions特征,|pi∩pj|表示兩個(gè)應(yīng)用同時(shí)都申請(qǐng)的permissions數(shù)量,|pi∪pj|表示兩個(gè)應(yīng)用中所有申請(qǐng)的permissions類(lèi)別的數(shù)量。
進(jìn)一步的,三個(gè)不同特征計(jì)算所得相似性通過(guò)不同權(quán)重進(jìn)行加權(quán)結(jié)合,最終獲得兩個(gè)應(yīng)用間的相似性值,計(jì)算公式如下:
sim(ai,aj)=αsim(ri,rj)+βsim(ei,ej)+γsim(pi,pj)
α+β+γ=1
其中sim(ri,rj)、sim(ei,ej)和sim(pi,pj)分別是由上述公式求得的resources、assets和permissions特征的相似性,α、β和γ用來(lái)權(quán)衡不同特征相似性間的比重,可以根據(jù)實(shí)際場(chǎng)景進(jìn)行調(diào)整。
上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。