一種apk的快速檢測及提高單位資源利用率的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于信息安全技術(shù)領(lǐng)域,尤其涉及一種Android移動應(yīng)用程序(Android applicationpackage,APK)的快速檢測及提高檢測系統(tǒng)單位資源利用率的方法。
【背景技術(shù)】
[0002] 隨著移動互聯(lián)網(wǎng)的高速發(fā)展,基于Android系統(tǒng)的各類應(yīng)用被大量開發(fā)。與此同 時(shí),出現(xiàn)了眾多垃圾應(yīng)用、惡意應(yīng)用等,使得移動終端面臨的安全問題也隨之增多,導(dǎo)致開 發(fā)者和用戶利益受損。因此需要對Android的應(yīng)用程序進(jìn)行安全檢測。
[0003] 現(xiàn)有的檢測方法大致包括:靜態(tài)檢測、動態(tài)檢測以及病毒檢測。靜態(tài)檢測是在APK 執(zhí)行前進(jìn)行檢測;動態(tài)檢測是在APK運(yùn)行時(shí)進(jìn)行檢測;病毒檢測是針對APK進(jìn)行病毒樣本 識別殺毒。不同檢測方法所需的檢測速率及消耗檢測系統(tǒng)資源的能力不盡相同。
[0004]目前基于云計(jì)算的APK檢測,其步驟主要是:首先,上傳待測APK文件;其次,根據(jù) 上傳APK的先后次序,依次分配到指定的虛擬機(jī)中進(jìn)行檢測。面對大量不同大小、類型、不 同檢測需求的待測APK時(shí),由于沒有考慮到合理分配系統(tǒng)的檢測資源,必然會存在一定的 檢測效率低以及資源利用率低等問題。
[0005] 因此需要一種Android移動應(yīng)用程序的快速檢測及提高檢測系統(tǒng)單位資源利用 率的方法來解決現(xiàn)有技術(shù)存在的問題。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的目的是針對現(xiàn)有技術(shù)的不足,提出一種Android移動應(yīng)用程序的快速檢 測及提高單位資源利用率的方法,該方法有效提高APK的檢測速度以及檢測資源利用率。
[0007] 本發(fā)明所述技術(shù)方案關(guān)注的不是將哪些待檢測APK分配到某個(gè)虛擬機(jī)中最優(yōu),而 是如何將所有待檢測APK分配到不同的虛擬機(jī)中,使得檢測系統(tǒng)以最優(yōu)的方式快速檢測 APK〇
[0008] 本發(fā)明所述技術(shù)方案的技術(shù)思路為:運(yùn)行虛擬機(jī)的計(jì)算機(jī)確定待檢測APK占用每 臺虛擬機(jī)資源的最小值①:以及確定當(dāng)前時(shí)間段未被檢測APK優(yōu)先級屬性之和與被檢測 APK優(yōu)先級屬性之和的比值Φ2,并利用拉格朗日加權(quán)法對(^和Φ2進(jìn)行加權(quán)處理形成Φ 值;然后利用遺傳算法確定待檢測ΑΡΚ最優(yōu)分配方案,即通過在遺傳算法中通過加入適應(yīng) 度Ρ來實(shí)現(xiàn),所述適應(yīng)度Ρ為所有虛擬機(jī)的Φ之和,由此實(shí)現(xiàn)關(guān)注整個(gè)檢測系統(tǒng)的最優(yōu); 另外,在本發(fā)明使用的遺傳算法中,通過交叉、選擇等操作實(shí)現(xiàn)對整個(gè)檢測系統(tǒng)實(shí)現(xiàn)最優(yōu)分 配,從而達(dá)到提高檢測資源利用率以實(shí)現(xiàn)快速檢測ΑΡΚ的目的。
[0009] 實(shí)現(xiàn)本發(fā)明所述技術(shù)效果的具體如下: 一種ΑΡΚ的快速檢測及提高單位資源利用率的方法: 包括一臺運(yùn)行虛擬機(jī)的計(jì)算機(jī); 所述運(yùn)行虛擬機(jī)的計(jì)算機(jī)從檢測隊(duì)列中批量獲取待檢測ΑΡΚ; 所述運(yùn)行虛擬機(jī)的計(jì)算機(jī)獲取待檢測ΑΡΚ屬性和虛擬機(jī)資源屬性; 所述運(yùn)行虛擬機(jī)的計(jì)算機(jī)檢測并確定待檢測APK屬性值及虛擬機(jī)資源屬性值; 所述運(yùn)行虛擬機(jī)的計(jì)算機(jī)確定ΑΡΚ的屬性對應(yīng)的虛擬機(jī)資源的權(quán)重,所述權(quán)重用于標(biāo) 識ΑΡΚ的屬性對虛擬機(jī)資源的影響程度; 所述運(yùn)行虛擬機(jī)的計(jì)算機(jī)建立并計(jì)算待檢測ΑΡΚ屬性值與虛擬機(jī)資源屬性值函數(shù); 所述運(yùn)行虛擬機(jī)的計(jì)算機(jī)利用遺傳算法確定最優(yōu)ΑΡΚ分配方案; 所述運(yùn)行虛擬機(jī)的計(jì)算機(jī)根據(jù)最優(yōu)ΑΡΚ分配方案將待檢測ΑΡΚ分配給虛擬機(jī)。
[0010] 進(jìn)一步的,所述ΑΡΚ屬性包括:ΑΡΚ文件的大小、DEX文件的大小、ΑΡΚ文件中代碼 復(fù)雜度、ΑΡΚ文件中界面復(fù)雜度、ΑΡΚ文件中資源文件復(fù)雜度和ΑΡΚ檢測優(yōu)先級,其中, 所述ΑΡΚ文件的大小是指ΑΡΚ文件本身占用存儲空間的大小,單位為Mb; 所述DEX文件的大小是指ΑΡΚ文件中的擴(kuò)展名為.dex文件的大小,單位Mb; 所述ΑΡΚ文件中代碼復(fù)雜度是指dex文件中代碼的目錄深度與文件數(shù)的關(guān)系,代碼復(fù) 雜度設(shè)置范圍為(1,100),APK文件目錄深度為(1,10],超過10的以10計(jì),APK的文件數(shù) (1,1000],超過 1000 的以 1000 計(jì); 所述APK文件中界面復(fù)雜度是指APK在運(yùn)行過程中的界面數(shù)與界面中所使用控件的關(guān) 系,界面復(fù)雜度指設(shè)置范圍為(1,100),APK界面總數(shù)為(1,100],超過100的以100計(jì),單 個(gè)界面的控件總數(shù)(1,10],超過10的以10計(jì); 所述APK文件中資源文件復(fù)雜度是指APK中res目錄下目錄的層級與下面目錄和文件 數(shù)之間的關(guān)系,所述資源文件的復(fù)雜度設(shè)置范圍為(1,1〇〇),目錄深度為(1,5],每級最大 目錄數(shù)(1,10],每個(gè)目錄的最大文件數(shù)(1,100]; 所述APK檢測優(yōu)先級是指APK所要滿足的最晚檢測開始時(shí)間,所需資源的最大數(shù)等條 件,包括但不限于上述條件,可根據(jù)實(shí)際情況動態(tài)調(diào)整; 所述虛擬機(jī)資源屬性包括CPU指數(shù)、內(nèi)存指數(shù)和線程指數(shù),其中, 所述CPU指數(shù)指的是CPU當(dāng)前可被使用的資源與CPU原始可使用資源的比率; 所述內(nèi)存指數(shù)指的是內(nèi)存當(dāng)前空閑資源與內(nèi)存原始可使用資源的比率, 所述線程指數(shù)指的是當(dāng)前超線程中線程空閑數(shù)與原始線程數(shù)。
[0011] 進(jìn)一步的,所述APK屬性值包括APK文件的大小屬性值、DEX文件的大小屬性值、 APK文件中代碼復(fù)雜度屬性值、APK文件中界面復(fù)雜度屬性值、APK文件中資源文件復(fù)雜度 屬性值和APK檢測優(yōu)先級屬性值,其中, APK文件的大小屬性值,具體為APK實(shí)際大小與可檢測APK文件最大值之比乘以100 ;APK文件中DEX文件的大小屬性值,具體為APK中DEX的實(shí)際大小與可檢測DEX文件的 最大值之比乘以100 ; APK文件中代碼復(fù)雜度屬性值,具體為DEX文件中代碼的目錄深度乘以可檢測DEX文件 的最大值30后除以最大目錄深度10并加上DEX文件中文件總數(shù)乘以70后除以文件最大 數(shù)1000得到; APK文件中界面復(fù)雜度屬性值,具體為APK文件的總界面數(shù)乘以單個(gè)界面控件的最多 數(shù)除以設(shè)定的界面最大數(shù)與界面中控件的最大數(shù)的積,然后再乘100得到APK文件中界面 復(fù)雜度屬性值; APK文件中資源文件復(fù)雜度屬性值,具體為APK文件中Res文件下實(shí)際目錄深度與實(shí)際 目錄最大數(shù)及實(shí)際目錄文件的最大數(shù)之積除以設(shè)定的Res文件下的目錄深度最大值與目 錄數(shù)最大值及目錄中最大文件數(shù)的積,然后再乘以100得到PK文件中資源文件復(fù)雜度屬性 值; ΑΡΚ檢測優(yōu)先級屬性值,具體為最晚待檢時(shí)間10減去最晚設(shè)定檢測時(shí)間除以10后乘以 100確定; 所述虛擬機(jī)資源屬性值包括CPU指數(shù)值、內(nèi)存指數(shù)值和線程指數(shù)值,其中, 所述CPU指數(shù)值具體為CPU核心數(shù)與CPU主頻及當(dāng)前CPU未被使用率的乘積; 所述內(nèi)存指數(shù)值具體為CPU內(nèi)存大小與當(dāng)前內(nèi)存未被使用率的乘積; 所述線程指數(shù)值具體為線程數(shù)與當(dāng)前線程未被使用率的乘積。
[0012] 所述APK屬性對應(yīng)的虛擬機(jī)資源的權(quán)重確定方式為: 每個(gè)APK具有某些屬性,而每個(gè)虛擬機(jī)擁有有限的資源,APK的屬性決定了其在虛擬機(jī) 中的分配結(jié)果; 設(shè)影響APK分配的屬性如下: 每個(gè)虛擬機(jī)的剩余資源種類如下: 由于虛擬機(jī)的某種資源與ΑΡΚ的某些屬性相關(guān)聯(lián),從而決定ΑΡΚ的分配方式,所述關(guān)聯(lián) 的表達(dá)式為:
其中, s=l, 2, 3, 4, 5, 6t=l, 2, 3, 4, 5, 6 表示資源s與屬性t之間關(guān)系,需同時(shí)滿足〇 ??和% +? +…+^? =1 兩個(gè)條件;&表示某個(gè)APK分配到虛擬機(jī)后所占用的虛擬機(jī)S類資源。