基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè):技術(shù)、挑戰(zhàn)與實(shí)踐_第1頁(yè)
基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè):技術(shù)、挑戰(zhàn)與實(shí)踐_第2頁(yè)
基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè):技術(shù)、挑戰(zhàn)與實(shí)踐_第3頁(yè)
基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè):技術(shù)、挑戰(zhàn)與實(shí)踐_第4頁(yè)
基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè):技術(shù)、挑戰(zhàn)與實(shí)踐_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

一、引言1.1研究背景與意義隨著移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展,安卓操作系統(tǒng)憑借其開(kāi)放性和廣泛的應(yīng)用支持,在全球范圍內(nèi)擁有龐大的用戶群體和豐富的應(yīng)用市場(chǎng)。據(jù)統(tǒng)計(jì),截至[具體年份],安卓應(yīng)用商店中的應(yīng)用數(shù)量已超過(guò)[X]億個(gè),涵蓋了社交、娛樂(lè)、辦公、金融等各個(gè)領(lǐng)域,成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。然而,安卓?yīng)用的開(kāi)放性在帶來(lái)便利的同時(shí),也引發(fā)了一系列嚴(yán)重的安全問(wèn)題,其中應(yīng)用重打包問(wèn)題尤為突出。應(yīng)用重打包是指攻擊者將原始安卓應(yīng)用進(jìn)行反編譯,修改其中的代碼、資源或權(quán)限,然后重新打包生成一個(gè)新的應(yīng)用版本。這種惡意行為不僅侵犯了原開(kāi)發(fā)者的知識(shí)產(chǎn)權(quán),還對(duì)用戶的隱私和安全構(gòu)成了巨大威脅。攻擊者通過(guò)重打包應(yīng)用,可能會(huì)在其中插入惡意廣告代碼,導(dǎo)致用戶在使用應(yīng)用時(shí)頻繁彈出廣告,影響用戶體驗(yàn);更嚴(yán)重的是,他們可能會(huì)植入惡意程序,如竊取用戶賬號(hào)密碼、通訊錄、短信等敏感信息的木馬程序,或者自動(dòng)發(fā)送扣費(fèi)短信、消耗用戶流量的惡意插件,給用戶帶來(lái)直接的經(jīng)濟(jì)損失。從市場(chǎng)角度來(lái)看,重打包應(yīng)用的泛濫擾亂了應(yīng)用市場(chǎng)的正常秩序,導(dǎo)致大量低質(zhì)量、惡意的應(yīng)用充斥其中,使得用戶難以辨別真正優(yōu)質(zhì)的應(yīng)用。這不僅降低了用戶對(duì)應(yīng)用市場(chǎng)的信任度,也對(duì)合法開(kāi)發(fā)者的利益造成了損害,阻礙了移動(dòng)應(yīng)用產(chǎn)業(yè)的健康發(fā)展。據(jù)相關(guān)研究機(jī)構(gòu)估計(jì),每年因安卓應(yīng)用重打包問(wèn)題導(dǎo)致的經(jīng)濟(jì)損失高達(dá)數(shù)十億美元,涉及到應(yīng)用開(kāi)發(fā)者、應(yīng)用商店平臺(tái)以及廣大用戶等多方利益。在現(xiàn)有的安卓應(yīng)用重打包檢測(cè)技術(shù)中,傳統(tǒng)的基于代碼特征的檢測(cè)方法面臨著諸多挑戰(zhàn)。由于安卓應(yīng)用的代碼規(guī)模龐大,操作碼數(shù)量眾多,使得計(jì)算復(fù)雜度極高,難以實(shí)現(xiàn)對(duì)大規(guī)模應(yīng)用的快速檢測(cè)。同時(shí),攻擊者為了逃避檢測(cè),會(huì)采用各種代碼混淆技術(shù),如代碼加密、指令替換、控制流扁平化等,使得基于代碼特征的檢測(cè)方法的準(zhǔn)確率大幅下降。而基于資源的檢測(cè)方法雖然在一定程度上降低了時(shí)間復(fù)雜度,但對(duì)于一些經(jīng)過(guò)精心偽裝的重打包應(yīng)用,仍然難以準(zhǔn)確識(shí)別。相比之下,基于運(yùn)行時(shí)圖形界面特征的檢測(cè)方法具有獨(dú)特的優(yōu)勢(shì)。用戶與安卓應(yīng)用的交互主要是通過(guò)圖形界面進(jìn)行的,重打包應(yīng)用即使對(duì)代碼和資源進(jìn)行了修改,但其運(yùn)行時(shí)的圖形界面特征往往具有一定的穩(wěn)定性和獨(dú)特性。通過(guò)分析應(yīng)用運(yùn)行時(shí)的圖形界面布局、控件分布、交互行為等特征,可以有效地識(shí)別出重打包應(yīng)用。這種方法能夠從用戶體驗(yàn)的角度出發(fā),更加直觀地檢測(cè)出應(yīng)用的異常變化,提高檢測(cè)的準(zhǔn)確性和可靠性。同時(shí),基于圖形界面特征的檢測(cè)方法對(duì)于代碼混淆等攻擊手段具有較強(qiáng)的魯棒性,能夠在一定程度上彌補(bǔ)傳統(tǒng)檢測(cè)方法的不足。因此,研究基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè)方法具有重要的理論意義和實(shí)際應(yīng)用價(jià)值,對(duì)于保障安卓應(yīng)用生態(tài)系統(tǒng)的安全和健康發(fā)展具有重要的作用。1.2研究目標(biāo)與問(wèn)題本研究旨在通過(guò)深入分析安卓應(yīng)用運(yùn)行時(shí)的圖形界面特征,構(gòu)建一套高效、準(zhǔn)確的重打包檢測(cè)機(jī)制,以有效應(yīng)對(duì)當(dāng)前安卓應(yīng)用市場(chǎng)中日益猖獗的重打包威脅。具體研究目標(biāo)如下:精準(zhǔn)提取圖形界面特征:深入研究安卓應(yīng)用運(yùn)行時(shí)圖形界面的布局結(jié)構(gòu)、控件屬性及交互行為等方面,運(yùn)用先進(jìn)的技術(shù)手段,精準(zhǔn)提取能夠有效表征應(yīng)用獨(dú)特性的圖形界面特征。例如,通過(guò)對(duì)界面布局的層次分析,提取各層級(jí)的布局類型、大小比例等信息;針對(duì)控件,提取其類型、位置、大小、文本內(nèi)容等屬性;同時(shí),捕捉用戶與應(yīng)用交互過(guò)程中的關(guān)鍵行為,如點(diǎn)擊、滑動(dòng)、長(zhǎng)按等操作的頻率和順序,形成全面且具有代表性的特征集合。高效構(gòu)建檢測(cè)模型:基于提取的圖形界面特征,運(yùn)用機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等人工智能技術(shù),構(gòu)建高效的重打包檢測(cè)模型。通過(guò)對(duì)大量已知重打包應(yīng)用和正常應(yīng)用的特征學(xué)習(xí),使模型能夠準(zhǔn)確識(shí)別重打包應(yīng)用的特征模式,具備高準(zhǔn)確率和低誤報(bào)率的檢測(cè)能力。在模型構(gòu)建過(guò)程中,注重模型的可擴(kuò)展性和適應(yīng)性,使其能夠應(yīng)對(duì)不斷變化的重打包攻擊手段和多樣化的應(yīng)用場(chǎng)景。實(shí)際應(yīng)用驗(yàn)證:將構(gòu)建的檢測(cè)模型應(yīng)用于實(shí)際的安卓應(yīng)用市場(chǎng)環(huán)境中,對(duì)海量的應(yīng)用進(jìn)行重打包檢測(cè),驗(yàn)證模型的有效性和實(shí)用性。通過(guò)實(shí)際應(yīng)用反饋,進(jìn)一步優(yōu)化模型,提高其檢測(cè)性能,為安卓應(yīng)用市場(chǎng)的安全監(jiān)管提供有力的技術(shù)支持,切實(shí)保護(hù)應(yīng)用開(kāi)發(fā)者和用戶的合法權(quán)益。在實(shí)現(xiàn)上述研究目標(biāo)的過(guò)程中,需要解決以下關(guān)鍵問(wèn)題:特征提取的準(zhǔn)確性與全面性:如何在復(fù)雜多變的安卓應(yīng)用圖形界面中,準(zhǔn)確、全面地提取出能夠有效區(qū)分正常應(yīng)用和重打包應(yīng)用的特征。由于安卓應(yīng)用的界面設(shè)計(jì)風(fēng)格多樣,控件使用方式靈活,且重打包攻擊者可能會(huì)采用各種手段來(lái)混淆界面特征,因此,需要研究出一種魯棒性強(qiáng)的特征提取方法,確保提取的特征能夠真實(shí)反映應(yīng)用的本質(zhì)特征,避免因特征缺失或不準(zhǔn)確導(dǎo)致檢測(cè)結(jié)果的偏差。例如,對(duì)于一些采用動(dòng)態(tài)布局和控件加載的應(yīng)用,如何準(zhǔn)確捕捉其在不同狀態(tài)下的界面特征;對(duì)于重打包應(yīng)用中可能出現(xiàn)的界面元素替換、隱藏等情況,如何通過(guò)有效的特征提取方法進(jìn)行識(shí)別。模型的訓(xùn)練與優(yōu)化:如何選擇合適的機(jī)器學(xué)習(xí)或深度學(xué)習(xí)算法,對(duì)提取的圖形界面特征進(jìn)行有效的學(xué)習(xí)和分類,構(gòu)建出高性能的檢測(cè)模型。在模型訓(xùn)練過(guò)程中,需要考慮如何處理大規(guī)模數(shù)據(jù)集的存儲(chǔ)和計(jì)算問(wèn)題,以及如何避免模型過(guò)擬合和欠擬合現(xiàn)象,提高模型的泛化能力。同時(shí),還需要研究如何根據(jù)實(shí)際應(yīng)用中的反饋數(shù)據(jù),對(duì)模型進(jìn)行持續(xù)優(yōu)化,使其能夠及時(shí)適應(yīng)新出現(xiàn)的重打包攻擊模式。例如,在選擇深度學(xué)習(xí)算法時(shí),如何根據(jù)安卓應(yīng)用圖形界面特征的特點(diǎn),選擇合適的網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)設(shè)置;在模型訓(xùn)練過(guò)程中,如何通過(guò)數(shù)據(jù)增強(qiáng)、正則化等技術(shù)手段,提高模型的性能和穩(wěn)定性。檢測(cè)效率與實(shí)時(shí)性:在面對(duì)海量的安卓應(yīng)用時(shí),如何提高檢測(cè)模型的運(yùn)行效率,實(shí)現(xiàn)對(duì)應(yīng)用的快速檢測(cè),滿足實(shí)際應(yīng)用中的實(shí)時(shí)性要求。由于安卓應(yīng)用市場(chǎng)中的應(yīng)用數(shù)量龐大,且不斷有新的應(yīng)用上線,因此,需要研究出一種高效的檢測(cè)算法和架構(gòu),能夠在短時(shí)間內(nèi)對(duì)大量應(yīng)用進(jìn)行重打包檢測(cè)。同時(shí),還需要考慮如何在資源有限的情況下,如移動(dòng)設(shè)備等,實(shí)現(xiàn)檢測(cè)模型的高效運(yùn)行。例如,通過(guò)采用分布式計(jì)算、并行處理等技術(shù)手段,提高檢測(cè)模型的處理速度;通過(guò)模型壓縮、量化等技術(shù),降低模型的存儲(chǔ)空間和計(jì)算復(fù)雜度,使其能夠在移動(dòng)設(shè)備上快速運(yùn)行。1.3研究方法與創(chuàng)新點(diǎn)為實(shí)現(xiàn)基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè),本研究綜合運(yùn)用多種研究方法,從不同角度深入剖析問(wèn)題,力求突破傳統(tǒng)檢測(cè)方法的局限,提升檢測(cè)的準(zhǔn)確性和效率。具體研究方法如下:數(shù)據(jù)采集與預(yù)處理:廣泛收集各類安卓應(yīng)用,包括正常應(yīng)用和已知的重打包應(yīng)用,構(gòu)建豐富的數(shù)據(jù)集。通過(guò)自動(dòng)化工具和人工篩選相結(jié)合的方式,確保數(shù)據(jù)的準(zhǔn)確性和代表性。針對(duì)采集到的應(yīng)用,進(jìn)行運(yùn)行時(shí)圖形界面數(shù)據(jù)的采集,利用安卓系統(tǒng)提供的接口和工具,獲取應(yīng)用在不同操作場(chǎng)景下的界面布局信息、控件屬性以及用戶交互行為數(shù)據(jù)。對(duì)采集到的數(shù)據(jù)進(jìn)行預(yù)處理,去除噪聲數(shù)據(jù)和異常值,對(duì)缺失值進(jìn)行合理填充,確保數(shù)據(jù)的質(zhì)量和可用性。例如,對(duì)于界面布局信息中的無(wú)效節(jié)點(diǎn)或重復(fù)節(jié)點(diǎn)進(jìn)行清理,對(duì)用戶交互行為數(shù)據(jù)中的錯(cuò)誤操作記錄進(jìn)行修正。特征提取與選擇:深入研究安卓應(yīng)用圖形界面的特點(diǎn)和規(guī)律,運(yùn)用計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)領(lǐng)域的相關(guān)技術(shù),提取能夠有效表征應(yīng)用重打包特征的圖形界面特征。例如,采用圖像識(shí)別技術(shù)提取界面圖像的紋理、顏色、形狀等特征;利用布局分析算法提取界面布局的層次結(jié)構(gòu)、控件分布等特征;通過(guò)對(duì)用戶交互行為數(shù)據(jù)的分析,提取點(diǎn)擊頻率、滑動(dòng)軌跡等行為特征。針對(duì)提取的大量特征,采用特征選擇算法,去除冗余和不相關(guān)的特征,篩選出最具代表性和區(qū)分度的特征子集,降低特征維度,提高檢測(cè)模型的訓(xùn)練效率和準(zhǔn)確性。例如,運(yùn)用卡方檢驗(yàn)、信息增益等方法對(duì)特征進(jìn)行評(píng)估和篩選,保留對(duì)重打包檢測(cè)貢獻(xiàn)較大的特征。模型構(gòu)建與訓(xùn)練:基于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的理論和方法,構(gòu)建適用于安卓應(yīng)用重打包檢測(cè)的模型。根據(jù)特征的特點(diǎn)和數(shù)據(jù)規(guī)模,選擇合適的模型架構(gòu),如支持向量機(jī)(SVM)、隨機(jī)森林、卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)等。利用預(yù)處理后的數(shù)據(jù)集對(duì)構(gòu)建的模型進(jìn)行訓(xùn)練,通過(guò)調(diào)整模型的參數(shù)和超參數(shù),優(yōu)化模型的性能,使其能夠準(zhǔn)確地識(shí)別重打包應(yīng)用。在訓(xùn)練過(guò)程中,采用交叉驗(yàn)證、正則化等技術(shù),防止模型過(guò)擬合,提高模型的泛化能力。例如,將數(shù)據(jù)集劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,通過(guò)在驗(yàn)證集上的性能評(píng)估來(lái)調(diào)整模型參數(shù);使用L1和L2正則化方法對(duì)模型進(jìn)行約束,防止模型過(guò)于復(fù)雜。實(shí)驗(yàn)設(shè)計(jì)與評(píng)估:設(shè)計(jì)科學(xué)合理的實(shí)驗(yàn)方案,對(duì)構(gòu)建的檢測(cè)模型進(jìn)行全面的性能評(píng)估。設(shè)置不同的實(shí)驗(yàn)場(chǎng)景和參數(shù)組合,測(cè)試模型在不同情況下的檢測(cè)準(zhǔn)確率、召回率、F1值等指標(biāo),分析模型的性能表現(xiàn)和優(yōu)缺點(diǎn)。與現(xiàn)有的安卓應(yīng)用重打包檢測(cè)方法進(jìn)行對(duì)比實(shí)驗(yàn),驗(yàn)證本研究方法的有效性和優(yōu)越性。通過(guò)實(shí)驗(yàn)結(jié)果的分析,總結(jié)經(jīng)驗(yàn)教訓(xùn),為模型的進(jìn)一步優(yōu)化和改進(jìn)提供依據(jù)。例如,在實(shí)驗(yàn)中設(shè)置不同比例的正常應(yīng)用和重打包應(yīng)用,測(cè)試模型在不同數(shù)據(jù)分布情況下的性能;將本研究方法與基于代碼特征、資源特征的檢測(cè)方法進(jìn)行對(duì)比,評(píng)估其在檢測(cè)準(zhǔn)確率、效率等方面的差異。本研究在檢測(cè)技術(shù)、特征提取等方面具有以下創(chuàng)新點(diǎn):多模態(tài)特征融合:創(chuàng)新性地將圖形界面的視覺(jué)特征、布局特征以及用戶交互行為特征進(jìn)行融合,形成多模態(tài)特征表示。通過(guò)這種方式,充分利用了不同類型特征之間的互補(bǔ)性,更全面地描述了安卓應(yīng)用的運(yùn)行時(shí)狀態(tài),提高了重打包檢測(cè)的準(zhǔn)確性和魯棒性。例如,將界面圖像的視覺(jué)特征與布局特征相結(jié)合,可以更好地識(shí)別界面元素的變化;將用戶交互行為特征與圖形界面特征相結(jié)合,可以檢測(cè)出因重打包導(dǎo)致的交互行為異常。動(dòng)態(tài)特征提取:突破傳統(tǒng)的靜態(tài)特征提取方法,重點(diǎn)關(guān)注安卓應(yīng)用在運(yùn)行時(shí)的動(dòng)態(tài)特征變化。通過(guò)實(shí)時(shí)監(jiān)測(cè)應(yīng)用的運(yùn)行過(guò)程,捕捉界面布局和用戶交互行為在不同時(shí)間點(diǎn)的動(dòng)態(tài)變化信息,從而更準(zhǔn)確地檢測(cè)出重打包應(yīng)用。這種動(dòng)態(tài)特征提取方法能夠有效應(yīng)對(duì)重打包應(yīng)用在運(yùn)行時(shí)的行為偽裝和變化,提高檢測(cè)的及時(shí)性和可靠性。例如,通過(guò)分析界面布局在不同操作步驟下的變化情況,判斷是否存在重打包行為;通過(guò)監(jiān)測(cè)用戶交互行為的頻率和順序變化,識(shí)別出異常的交互模式。基于深度學(xué)習(xí)的端到端檢測(cè)模型:采用深度學(xué)習(xí)技術(shù),構(gòu)建端到端的安卓應(yīng)用重打包檢測(cè)模型。該模型能夠直接從原始的圖形界面數(shù)據(jù)中學(xué)習(xí)到重打包應(yīng)用的特征模式,無(wú)需復(fù)雜的特征工程和人工干預(yù)。通過(guò)大量的數(shù)據(jù)訓(xùn)練,模型能夠自動(dòng)提取出有效的特征表示,并進(jìn)行準(zhǔn)確的分類判斷,提高了檢測(cè)的效率和自動(dòng)化程度。同時(shí),深度學(xué)習(xí)模型具有較強(qiáng)的泛化能力,能夠適應(yīng)不同類型和版本的安卓應(yīng)用,以及不斷變化的重打包攻擊手段。例如,利用卷積神經(jīng)網(wǎng)絡(luò)對(duì)界面圖像進(jìn)行自動(dòng)特征提取和分類,利用循環(huán)神經(jīng)網(wǎng)絡(luò)對(duì)用戶交互行為序列進(jìn)行建模和分析。二、相關(guān)理論與技術(shù)基礎(chǔ)2.1安卓應(yīng)用重打包概述2.1.1重打包原理與過(guò)程安卓應(yīng)用重打包是一種對(duì)原始安卓應(yīng)用程序包(APK)進(jìn)行惡意篡改的技術(shù)手段。其原理基于安卓系統(tǒng)的開(kāi)放性和APK文件的可解析性,使得攻擊者能夠?qū)?yīng)用的代碼、資源和配置進(jìn)行修改,然后重新打包生成一個(gè)新的APK文件。這一過(guò)程通常涉及反編譯、修改和重新打包三個(gè)關(guān)鍵步驟。反編譯是重打包的第一步,其目的是將APK文件還原為可編輯的源代碼和資源文件。APK文件本質(zhì)上是一個(gè)ZIP壓縮包,包含了經(jīng)過(guò)編譯的Java代碼(以Dalvik字節(jié)碼的形式存在于classes.dex文件中)、資源文件(如XML布局文件、圖片、字符串等)以及清單文件(AndroidManifest.xml)等。攻擊者使用專門(mén)的反編譯工具,如Apktool、dex2jar等,對(duì)APK文件進(jìn)行解壓縮和反編譯操作。Apktool可以將APK文件中的資源文件解碼為原始的XML和其他可編輯格式,同時(shí)將classes.dex文件轉(zhuǎn)換為Smali代碼,Smali是一種類似于匯編語(yǔ)言的文本格式,用于表示Dalvik字節(jié)碼,使得開(kāi)發(fā)者能夠直接閱讀和修改代碼邏輯。dex2jar則可以將classes.dex文件轉(zhuǎn)換為Java字節(jié)碼的JAR文件,再通過(guò)JD-GUI等工具將JAR文件反編譯為Java源代碼,便于攻擊者理解和修改應(yīng)用的核心邏輯。例如,攻擊者可以通過(guò)反編譯獲取應(yīng)用的登錄驗(yàn)證代碼,分析其中的加密算法和驗(yàn)證邏輯,為后續(xù)的修改做準(zhǔn)備。在完成反編譯后,攻擊者進(jìn)入修改階段。這一階段,攻擊者根據(jù)其惡意目的對(duì)反編譯得到的代碼和資源進(jìn)行各種修改。常見(jiàn)的修改方式包括插入惡意代碼、替換廣告庫(kù)、篡改應(yīng)用的功能邏輯等。插入惡意代碼是最為常見(jiàn)的惡意行為之一,攻擊者可能會(huì)在應(yīng)用中插入竊取用戶敏感信息的代碼,如獲取用戶的通訊錄、短信、賬號(hào)密碼等。以臭名昭著的“X臥底”惡意軟件為例,它通過(guò)重打包一些熱門(mén)應(yīng)用,在其中插入了能夠監(jiān)聽(tīng)用戶通話、獲取短信內(nèi)容并上傳至遠(yuǎn)程服務(wù)器的惡意代碼,嚴(yán)重侵犯了用戶的隱私安全。攻擊者還可能會(huì)替換應(yīng)用中的廣告庫(kù),將正規(guī)的廣告替換為惡意廣告,這些惡意廣告可能會(huì)在用戶不知情的情況下自動(dòng)下載和安裝其他惡意軟件,或者頻繁彈出廣告窗口,影響用戶體驗(yàn)并消耗用戶的流量和電量。此外,攻擊者還可能篡改應(yīng)用的功能邏輯,例如修改游戲應(yīng)用的得分機(jī)制,使其能夠作弊獲取高分;或者修改金融類應(yīng)用的支付流程,將用戶的支付款項(xiàng)轉(zhuǎn)移到自己的賬戶。完成修改后,攻擊者需要將修改后的代碼和資源重新打包成一個(gè)新的APK文件。這一過(guò)程與APK的原始打包過(guò)程類似,但需要注意確保新生成的APK文件的結(jié)構(gòu)和格式正確,以保證其能夠在安卓設(shè)備上正常安裝和運(yùn)行。重新打包通常使用Apktool等工具,將修改后的Smali代碼重新編譯回Dalvik字節(jié)碼,并將所有的資源文件和清單文件重新打包成一個(gè)ZIP文件,然后使用簽名工具對(duì)新生成的APK文件進(jìn)行簽名。在安卓系統(tǒng)中,所有的APK文件都必須經(jīng)過(guò)數(shù)字簽名才能安裝到設(shè)備上,簽名用于驗(yàn)證應(yīng)用的來(lái)源和完整性。攻擊者可以使用自己生成的簽名證書(shū)對(duì)重打包后的APK文件進(jìn)行簽名,也可以通過(guò)一些技術(shù)手段繞過(guò)簽名驗(yàn)證,使得重打包后的應(yīng)用能夠順利安裝到用戶設(shè)備上。例如,攻擊者可以利用一些漏洞或者修改應(yīng)用的驗(yàn)證邏輯,使得應(yīng)用在安裝時(shí)跳過(guò)對(duì)簽名的嚴(yán)格驗(yàn)證,從而成功安裝惡意的重打包應(yīng)用。2.1.2重打包的危害與影響安卓應(yīng)用重打包現(xiàn)象的日益猖獗,給用戶、開(kāi)發(fā)者以及整個(gè)應(yīng)用市場(chǎng)都帶來(lái)了多方面的嚴(yán)重危害和負(fù)面影響。從用戶角度來(lái)看,重打包應(yīng)用對(duì)用戶的隱私和財(cái)產(chǎn)安全構(gòu)成了巨大威脅。重打包應(yīng)用中常常被植入惡意代碼,這些惡意代碼能夠在用戶不知情的情況下竊取用戶的敏感信息。許多重打包的社交類應(yīng)用會(huì)偷偷獲取用戶的通訊錄、聊天記錄等信息,并將其發(fā)送給攻擊者,導(dǎo)致用戶的個(gè)人隱私泄露,可能會(huì)引發(fā)騷擾電話、詐騙短信等問(wèn)題。一些重打包的金融類應(yīng)用則會(huì)通過(guò)篡改支付流程,將用戶的支付款項(xiàng)轉(zhuǎn)移到攻擊者的賬戶,或者自動(dòng)發(fā)送扣費(fèi)短信,造成用戶的直接經(jīng)濟(jì)損失。曾經(jīng)有一款被重打包的手機(jī)銀行應(yīng)用,用戶在使用該應(yīng)用進(jìn)行轉(zhuǎn)賬操作時(shí),轉(zhuǎn)賬金額被惡意篡改,導(dǎo)致用戶的大量資金被盜取。重打包應(yīng)用中還可能包含大量的惡意廣告,這些廣告會(huì)在用戶使用應(yīng)用時(shí)頻繁彈出,嚴(yán)重影響用戶體驗(yàn),消耗用戶的流量和電量,甚至可能導(dǎo)致設(shè)備卡頓、死機(jī)等問(wèn)題。對(duì)于開(kāi)發(fā)者而言,重打包應(yīng)用侵犯了他們的知識(shí)產(chǎn)權(quán),損害了他們的經(jīng)濟(jì)利益和聲譽(yù)。開(kāi)發(fā)者花費(fèi)大量的時(shí)間、精力和資源開(kāi)發(fā)應(yīng)用,期望通過(guò)應(yīng)用的運(yùn)營(yíng)和推廣獲得收益。然而,重打包應(yīng)用的出現(xiàn)使得開(kāi)發(fā)者的努力付諸東流。重打包應(yīng)用不僅可能盜用開(kāi)發(fā)者的代碼和資源,還可能通過(guò)不正當(dāng)手段獲取用戶下載和使用,從而分流了正版應(yīng)用的用戶流量。這導(dǎo)致開(kāi)發(fā)者的應(yīng)用下載量和收入減少,無(wú)法獲得應(yīng)有的回報(bào)。一些知名的游戲開(kāi)發(fā)者,他們的熱門(mén)游戲被重打包后,在應(yīng)用市場(chǎng)上大量傳播,這些重打包版本往往包含惡意廣告和作弊功能,使得正版游戲的用戶體驗(yàn)受到影響,用戶對(duì)開(kāi)發(fā)者的信任度降低,進(jìn)而損害了開(kāi)發(fā)者的聲譽(yù)。重打包應(yīng)用還可能導(dǎo)致開(kāi)發(fā)者面臨法律糾紛,因?yàn)橹卮虬鼞?yīng)用侵犯了開(kāi)發(fā)者的版權(quán)和相關(guān)權(quán)益,如果用戶因?yàn)槭褂弥卮虬鼞?yīng)用而遭受損失,開(kāi)發(fā)者可能會(huì)被牽連其中,承擔(dān)不必要的法律責(zé)任。從應(yīng)用市場(chǎng)的角度來(lái)看,重打包應(yīng)用的泛濫擾亂了市場(chǎng)的正常秩序,阻礙了應(yīng)用市場(chǎng)的健康發(fā)展。大量的重打包應(yīng)用充斥在應(yīng)用市場(chǎng)中,使得用戶難以辨別真正優(yōu)質(zhì)的應(yīng)用,降低了用戶對(duì)應(yīng)用市場(chǎng)的信任度。這不僅影響了用戶的使用體驗(yàn),還可能導(dǎo)致用戶對(duì)整個(gè)應(yīng)用市場(chǎng)產(chǎn)生抵觸情緒,減少對(duì)應(yīng)用的下載和使用。重打包應(yīng)用的存在也使得應(yīng)用市場(chǎng)的競(jìng)爭(zhēng)變得不公平,正版應(yīng)用需要投入大量的成本進(jìn)行開(kāi)發(fā)、維護(hù)和推廣,而重打包應(yīng)用則通過(guò)不正當(dāng)手段獲取利益,擠壓了正版應(yīng)用的生存空間。這使得一些小型開(kāi)發(fā)者或創(chuàng)新型應(yīng)用難以在市場(chǎng)中立足,抑制了應(yīng)用市場(chǎng)的創(chuàng)新活力,不利于應(yīng)用市場(chǎng)的長(zhǎng)期發(fā)展。據(jù)相關(guān)研究機(jī)構(gòu)的數(shù)據(jù)顯示,由于重打包應(yīng)用的影響,一些應(yīng)用市場(chǎng)的收入增長(zhǎng)率明顯下降,應(yīng)用的平均質(zhì)量也有所降低。2.2運(yùn)行時(shí)圖形界面特征2.2.1圖形界面構(gòu)成元素安卓應(yīng)用的圖形界面是用戶與應(yīng)用交互的直接窗口,其由一系列復(fù)雜且有序的元素構(gòu)成,這些元素的組合和布局方式不僅決定了應(yīng)用的視覺(jué)呈現(xiàn)效果,還在安卓應(yīng)用重打包檢測(cè)中發(fā)揮著關(guān)鍵作用。界面布局是圖形界面的基礎(chǔ)架構(gòu),它定義了各個(gè)控件在界面中的位置、大小以及排列方式,如同建筑的框架,為整個(gè)界面提供了基本的結(jié)構(gòu)支撐。安卓系統(tǒng)提供了多種布局方式,如LinearLayout(線性布局)、RelativeLayout(相對(duì)布局)、FrameLayout(幀布局)、ConstraintLayout(約束布局)等。LinearLayout按照水平或垂直方向依次排列子控件,常用于簡(jiǎn)單的列表或表單布局;RelativeLayout則通過(guò)設(shè)置子控件之間的相對(duì)位置關(guān)系來(lái)進(jìn)行布局,適用于需要精確控制控件位置的場(chǎng)景;FrameLayout是一種簡(jiǎn)單的幀布局,所有子控件都放在左上角,后添加的控件會(huì)覆蓋在前面的控件之上,常用于顯示單個(gè)視圖或進(jìn)行動(dòng)畫(huà)效果展示;ConstraintLayout則是一種更靈活的約束布局,通過(guò)設(shè)置控件之間的約束關(guān)系來(lái)確定其位置和大小,能夠在復(fù)雜的界面布局中實(shí)現(xiàn)高效的布局管理。在一個(gè)電商應(yīng)用的商品詳情界面中,可能會(huì)使用RelativeLayout來(lái)布局商品圖片、商品名稱、價(jià)格等控件,使它們能夠按照相對(duì)位置準(zhǔn)確顯示;而在一個(gè)音樂(lè)播放應(yīng)用的播放界面中,可能會(huì)使用FrameLayout來(lái)放置播放進(jìn)度條、播放按鈕等控件,通過(guò)動(dòng)畫(huà)效果實(shí)現(xiàn)播放狀態(tài)的切換展示。不同的布局方式具有各自的特點(diǎn)和適用場(chǎng)景,重打包應(yīng)用在修改界面時(shí),布局的變化往往會(huì)導(dǎo)致界面結(jié)構(gòu)的顯著改變,因此布局信息是檢測(cè)重打包應(yīng)用的重要依據(jù)之一。通過(guò)分析界面布局的類型、層次結(jié)構(gòu)以及子控件的分布情況,可以有效識(shí)別出重打包應(yīng)用中可能出現(xiàn)的布局篡改或調(diào)整??丶菆D形界面中與用戶進(jìn)行交互的具體元素,它們承載著各種功能,如Button(按鈕)用于觸發(fā)用戶操作,TextView(文本視圖)用于顯示文本信息,EditText(編輯文本框)用于接收用戶輸入,ImageView(圖像視圖)用于展示圖片等。每個(gè)控件都具有獨(dú)特的屬性,包括id(唯一標(biāo)識(shí)符)、text(文本內(nèi)容)、background(背景顏色或圖片)、size(大?。?、position(位置)等。這些屬性不僅決定了控件的外觀和行為,還包含了應(yīng)用的關(guān)鍵信息。在一個(gè)社交應(yīng)用中,Button的text屬性可能顯示為“發(fā)送消息”,當(dāng)用戶點(diǎn)擊該按鈕時(shí),會(huì)觸發(fā)相應(yīng)的消息發(fā)送功能;TextView的text屬性可能顯示用戶的好友動(dòng)態(tài)內(nèi)容,其大小、顏色、字體等屬性會(huì)影響用戶的閱讀體驗(yàn)。重打包應(yīng)用可能會(huì)修改控件的屬性,以達(dá)到惡意目的,如將Button的點(diǎn)擊事件重定向到惡意鏈接,或者修改TextView的文本內(nèi)容來(lái)傳播虛假信息。因此,分析控件的屬性和行為變化,能夠幫助檢測(cè)重打包應(yīng)用。通過(guò)對(duì)比正常應(yīng)用和待檢測(cè)應(yīng)用中控件的屬性值、事件綁定以及交互邏輯,可以發(fā)現(xiàn)重打包應(yīng)用中可能存在的異常情況。除了布局和控件,圖形界面還可能包含其他元素,如Drawable(可繪制對(duì)象),包括圖片、形狀、顏色等,用于美化界面和增強(qiáng)視覺(jué)效果;Menu(菜單),用于提供一組相關(guān)的操作選項(xiàng),方便用戶進(jìn)行選擇;Dialog(對(duì)話框),用于顯示重要信息或請(qǐng)求用戶確認(rèn)某些操作。這些元素在應(yīng)用的交互過(guò)程中也起著重要作用,重打包應(yīng)用同樣可能對(duì)它們進(jìn)行修改或利用,以實(shí)現(xiàn)惡意功能。在一個(gè)游戲應(yīng)用中,Drawable元素可能用于繪制游戲場(chǎng)景、角色和道具,重打包應(yīng)用可能會(huì)替換這些Drawable元素,導(dǎo)致游戲畫(huà)面出現(xiàn)異?;蝻@示惡意廣告;Menu元素可能用于提供游戲設(shè)置、暫停、退出等操作選項(xiàng),重打包應(yīng)用可能會(huì)篡改Menu的內(nèi)容,添加惡意操作選項(xiàng)。因此,全面分析圖形界面的各種構(gòu)成元素,能夠更準(zhǔn)確地檢測(cè)安卓應(yīng)用的重打包行為。2.2.2運(yùn)行時(shí)特征的獲取與分析獲取安卓應(yīng)用運(yùn)行時(shí)的圖形界面特征是基于運(yùn)行時(shí)圖形界面特征的重打包檢測(cè)方法的首要步驟,其準(zhǔn)確性和全面性直接影響后續(xù)的檢測(cè)效果。目前,主要通過(guò)安卓系統(tǒng)提供的接口和工具來(lái)實(shí)現(xiàn)這一目標(biāo)。安卓系統(tǒng)提供了豐富的API(應(yīng)用程序編程接口),允許開(kāi)發(fā)者獲取應(yīng)用運(yùn)行時(shí)的界面信息。其中,AccessibilityService(輔助功能服務(wù))是獲取圖形界面特征的重要工具之一。通過(guò)注冊(cè)AccessibilityService,應(yīng)用可以監(jiān)聽(tīng)系統(tǒng)的界面事件,如窗口的創(chuàng)建、銷毀、焦點(diǎn)變化等,并獲取當(dāng)前界面的視圖結(jié)構(gòu)和控件信息。AccessibilityService提供了一系列方法,如onAccessibilityEvent(AccessibilityEventevent),當(dāng)界面發(fā)生變化時(shí),系統(tǒng)會(huì)觸發(fā)該方法,并將相關(guān)的事件信息傳遞給應(yīng)用。在該方法中,可以通過(guò)event.getSource()獲取事件的源視圖,進(jìn)而獲取視圖的各種屬性,如id、text、class等。還可以通過(guò)event.getClassName()獲取界面的類名,通過(guò)event.getPackageName()獲取應(yīng)用的包名,這些信息對(duì)于確定當(dāng)前界面所屬的應(yīng)用以及分析界面的類型和功能具有重要意義。在一個(gè)新聞閱讀應(yīng)用中,當(dāng)用戶打開(kāi)一篇新聞文章時(shí),AccessibilityService可以監(jiān)聽(tīng)到窗口的創(chuàng)建事件,并獲取該窗口中包含的TextView控件的文本內(nèi)容,從而了解新聞的標(biāo)題和正文信息。UiAutomation也是獲取安卓應(yīng)用運(yùn)行時(shí)圖形界面特征的重要接口。它提供了一組方法,用于模擬用戶在設(shè)備上的操作,如點(diǎn)擊、滑動(dòng)、輸入文本等,同時(shí)也可以獲取當(dāng)前界面的布局信息和控件屬性。通過(guò)UiAutomation的getRootInActiveWindow()方法,可以獲取當(dāng)前活動(dòng)窗口的根視圖,然后通過(guò)遍歷根視圖的子視圖,可以獲取整個(gè)界面的布局結(jié)構(gòu)和所有控件的信息。還可以使用UiAutomation的takeScreenshot()方法獲取當(dāng)前界面的截圖,結(jié)合圖像識(shí)別技術(shù),可以進(jìn)一步提取界面的視覺(jué)特征,如顏色、紋理、形狀等。在一個(gè)地圖應(yīng)用中,使用UiAutomation模擬用戶在地圖上的滑動(dòng)操作,然后獲取滑動(dòng)后的界面截圖,通過(guò)圖像識(shí)別技術(shù)分析截圖中的地圖標(biāo)記和文字信息,從而了解地圖的顯示內(nèi)容和用戶的操作結(jié)果。在獲取到運(yùn)行時(shí)的圖形界面特征后,需要對(duì)這些特征進(jìn)行深入分析,以識(shí)別重打包應(yīng)用。特征分析主要從界面布局、控件屬性和用戶交互行為等方面入手。對(duì)于界面布局,首先可以分析布局的層次結(jié)構(gòu),計(jì)算布局的深度和寬度,以及各個(gè)層級(jí)中布局和控件的數(shù)量分布。重打包應(yīng)用在修改界面時(shí),可能會(huì)增加或刪除某些布局層級(jí),或者改變布局中控件的數(shù)量和排列順序,這些變化都會(huì)導(dǎo)致布局層次結(jié)構(gòu)的改變。可以通過(guò)比較正常應(yīng)用和待檢測(cè)應(yīng)用的布局層次結(jié)構(gòu),找出差異點(diǎn),從而判斷是否存在重打包行為。還可以分析布局中各個(gè)元素之間的相對(duì)位置關(guān)系,通過(guò)計(jì)算控件之間的距離、重疊面積等指標(biāo),判斷布局是否被篡改。在一個(gè)視頻播放應(yīng)用中,正常情況下播放按鈕應(yīng)該位于視頻窗口的下方,且與暫停按鈕、進(jìn)度條等控件保持一定的相對(duì)位置關(guān)系。如果在待檢測(cè)應(yīng)用中,播放按鈕的位置發(fā)生了明顯變化,或者與其他控件的相對(duì)位置關(guān)系不符合正常邏輯,那么就可能存在重打包的嫌疑。對(duì)于控件屬性,主要分析控件的id、text、background、size、position等屬性的變化。重打包應(yīng)用可能會(huì)修改控件的id,以繞過(guò)某些基于id的檢測(cè)機(jī)制;修改text屬性,傳播虛假信息或廣告;修改background屬性,改變控件的外觀;修改size和position屬性,影響用戶的交互體驗(yàn)。通過(guò)對(duì)比正常應(yīng)用和待檢測(cè)應(yīng)用中控件的屬性值,可以發(fā)現(xiàn)這些異常變化??梢允褂霉K惴▽?duì)控件的屬性值進(jìn)行計(jì)算,生成唯一的哈希值,然后比較兩個(gè)應(yīng)用中控件的哈希值是否一致。如果哈希值不同,說(shuō)明控件的屬性可能發(fā)生了改變,需要進(jìn)一步分析原因。在一個(gè)電商應(yīng)用中,商品價(jià)格控件的text屬性如果被重打包應(yīng)用修改,導(dǎo)致顯示的價(jià)格與實(shí)際價(jià)格不符,那么通過(guò)比較哈希值就可以發(fā)現(xiàn)這一異常情況。用戶交互行為也是分析運(yùn)行時(shí)圖形界面特征的重要方面。通過(guò)監(jiān)聽(tīng)用戶與應(yīng)用的交互事件,如點(diǎn)擊、滑動(dòng)、長(zhǎng)按等操作,記錄操作的順序、頻率和時(shí)間間隔等信息,可以構(gòu)建用戶交互行為模型。重打包應(yīng)用可能會(huì)干擾用戶的正常交互行為,如添加額外的點(diǎn)擊事件,導(dǎo)致用戶誤操作;或者修改交互事件的響應(yīng)邏輯,使應(yīng)用的行為不符合用戶的預(yù)期。通過(guò)對(duì)比正常應(yīng)用和待檢測(cè)應(yīng)用的用戶交互行為模型,可以檢測(cè)出這些異常行為??梢允褂眯蛄斜葘?duì)算法,如動(dòng)態(tài)時(shí)間規(guī)整(DTW)算法,比較兩個(gè)應(yīng)用中用戶交互行為序列的相似度。如果相似度較低,說(shuō)明用戶交互行為可能存在差異,需要進(jìn)一步分析是否是重打包應(yīng)用導(dǎo)致的。在一個(gè)游戲應(yīng)用中,正常情況下用戶通過(guò)點(diǎn)擊屏幕來(lái)控制游戲角色的移動(dòng),如果重打包應(yīng)用添加了額外的點(diǎn)擊事件,導(dǎo)致游戲角色出現(xiàn)異常移動(dòng),那么通過(guò)比較用戶交互行為序列的相似度就可以發(fā)現(xiàn)這一問(wèn)題。2.3軟件胎記技術(shù)2.3.1軟件胎記概念軟件胎記是一種用于標(biāo)識(shí)軟件獨(dú)特身份的技術(shù),它類似于人類的胎記,能夠?yàn)槊總€(gè)軟件生成獨(dú)一無(wú)二的特征標(biāo)識(shí),以此來(lái)區(qū)分不同的軟件個(gè)體,特別是在檢測(cè)軟件的重打包、抄襲等侵權(quán)行為中發(fā)揮著關(guān)鍵作用。軟件胎記的概念源于對(duì)軟件知識(shí)產(chǎn)權(quán)保護(hù)的需求,隨著軟件產(chǎn)業(yè)的快速發(fā)展,軟件的復(fù)制、修改和重新分發(fā)變得極為容易,這使得軟件開(kāi)發(fā)者的權(quán)益面臨著嚴(yán)峻的挑戰(zhàn)。軟件胎記技術(shù)應(yīng)運(yùn)而生,旨在為軟件提供一種不可篡改、難以偽造的身份標(biāo)識(shí),以便在軟件的整個(gè)生命周期中追蹤和驗(yàn)證其來(lái)源與完整性。軟件胎記的作用主要體現(xiàn)在以下幾個(gè)方面:首先,它能夠有效地檢測(cè)軟件的重打包行為。如前文所述,安卓應(yīng)用重打包是一種常見(jiàn)的侵權(quán)行為,攻擊者通過(guò)對(duì)原始應(yīng)用進(jìn)行反編譯、修改和重新打包,試圖逃避檢測(cè)并獲取非法利益。軟件胎記技術(shù)通過(guò)提取軟件的關(guān)鍵特征,生成具有唯一性的胎記信息,即使重打包應(yīng)用對(duì)代碼和資源進(jìn)行了修改,其胎記信息也會(huì)發(fā)生相應(yīng)的變化,從而能夠被準(zhǔn)確地檢測(cè)出來(lái)。其次,軟件胎記可以用于軟件抄襲檢測(cè)。在軟件開(kāi)發(fā)過(guò)程中,抄襲他人代碼或借鑒他人軟件設(shè)計(jì)思路的情況時(shí)有發(fā)生,軟件胎記能夠通過(guò)比較不同軟件的胎記信息,判斷它們之間是否存在相似性,從而為軟件抄襲的判定提供有力的證據(jù)。軟件胎記還可以用于軟件版本管理和溯源。通過(guò)記錄軟件的胎記信息,可以清晰地了解軟件的版本演變歷史,追溯軟件的來(lái)源和修改記錄,有助于軟件開(kāi)發(fā)者進(jìn)行軟件維護(hù)和管理。在重打包檢測(cè)中,軟件胎記的應(yīng)用原理基于這樣一個(gè)假設(shè):即使重打包應(yīng)用對(duì)原始應(yīng)用進(jìn)行了各種修改,但其某些關(guān)鍵特征仍然具有一定的穩(wěn)定性和獨(dú)特性,這些特征可以被提取并用于生成軟件胎記。通過(guò)計(jì)算原始應(yīng)用和待檢測(cè)應(yīng)用的軟件胎記之間的相似度,可以判斷待檢測(cè)應(yīng)用是否為重打包應(yīng)用。如果兩個(gè)應(yīng)用的胎記相似度極高,超過(guò)了設(shè)定的閾值,那么就可以認(rèn)為它們是同一個(gè)應(yīng)用的不同版本,或者待檢測(cè)應(yīng)用是對(duì)原始應(yīng)用的重打包;反之,如果相似度較低,則說(shuō)明它們是不同的應(yīng)用。為了準(zhǔn)確計(jì)算軟件胎記之間的相似度,通常會(huì)采用各種相似度計(jì)算算法,如余弦相似度、歐氏距離、編輯距離等。這些算法能夠根據(jù)軟件胎記的特征向量,計(jì)算出它們之間的相似程度,從而為重打包檢測(cè)提供量化的依據(jù)。2.3.2基于圖形界面的軟件胎記生成基于圖形界面的軟件胎記生成是一種創(chuàng)新的軟件胎記技術(shù),它充分利用了安卓應(yīng)用圖形界面在運(yùn)行時(shí)的獨(dú)特特征,為軟件提供了一種新的身份標(biāo)識(shí)方式。下面以GridDroid算法為例,詳細(xì)介紹基于圖形界面的軟件胎記生成過(guò)程。GridDroid算法的核心思想是通過(guò)對(duì)安卓應(yīng)用運(yùn)行時(shí)的圖形界面布局進(jìn)行網(wǎng)格化編碼,生成具有代表性的網(wǎng)格特征向量,進(jìn)而構(gòu)建軟件的胎記。具體步驟如下:GUI事件生成與界面布局轉(zhuǎn)儲(chǔ):利用自動(dòng)化工具生成一系列的GUI事件,如點(diǎn)擊、滑動(dòng)、長(zhǎng)按等操作,模擬用戶與應(yīng)用的交互過(guò)程。在執(zhí)行每個(gè)GUI事件后,通過(guò)安卓系統(tǒng)提供的接口獲取應(yīng)用當(dāng)前的界面布局信息,并將其轉(zhuǎn)儲(chǔ)為一種可處理的格式。在一個(gè)社交應(yīng)用中,自動(dòng)生成點(diǎn)擊“好友列表”按鈕、滑動(dòng)好友列表等事件,然后獲取每次操作后的界面布局,包括好友列表的布局結(jié)構(gòu)、每個(gè)好友頭像和昵稱的控件信息等。布局網(wǎng)格化與特征向量生成:將轉(zhuǎn)儲(chǔ)的界面布局劃分為一個(gè)網(wǎng)格,網(wǎng)格的大小和劃分方式可以根據(jù)實(shí)際情況進(jìn)行調(diào)整。對(duì)于每個(gè)網(wǎng)格單元,統(tǒng)計(jì)布局中各個(gè)部件(widget)所對(duì)應(yīng)的矩形區(qū)域的頂點(diǎn)數(shù)目。假設(shè)一個(gè)網(wǎng)格單元中包含一個(gè)Button控件和一個(gè)TextView控件,它們的矩形區(qū)域在該網(wǎng)格單元內(nèi)有若干個(gè)頂點(diǎn),統(tǒng)計(jì)這些頂點(diǎn)的數(shù)目。根據(jù)統(tǒng)計(jì)結(jié)果,生成一個(gè)網(wǎng)格特征向量(gridvector),該向量編碼了界面布局在各個(gè)網(wǎng)格單元中的特征信息。通過(guò)這種方式,將復(fù)雜的界面布局信息轉(zhuǎn)化為簡(jiǎn)潔的向量表示,便于后續(xù)的處理和比較。相似度計(jì)算與布局合并:在胎記生成階段,基于布局的特征向量來(lái)計(jì)算不同布局之間的相似度??梢圆捎糜嘞蚁嗨贫取W氏距離等算法來(lái)衡量?jī)蓚€(gè)特征向量的相似程度。如果兩個(gè)布局的相似度超過(guò)設(shè)定的閾值,則認(rèn)為它們?cè)谶\(yùn)行時(shí)具有相似的界面結(jié)構(gòu),將這些相似的布局進(jìn)行合并。在一個(gè)電商應(yīng)用中,不同商品詳情頁(yè)面的布局可能具有相似的結(jié)構(gòu),通過(guò)相似度計(jì)算和布局合并,可以將這些相似的布局歸為一類,減少胎記的冗余信息。構(gòu)建軟件胎記圖:經(jīng)過(guò)布局合并后,將所有的布局及其之間的關(guān)系建模得到一個(gè)圖(Graph),這個(gè)圖即為應(yīng)用的軟件胎記。圖中的節(jié)點(diǎn)表示不同的界面布局,邊表示布局之間的轉(zhuǎn)換關(guān)系,如通過(guò)點(diǎn)擊某個(gè)按鈕從一個(gè)界面布局切換到另一個(gè)界面布局。通過(guò)這種方式,軟件胎記圖全面地反映了應(yīng)用在運(yùn)行時(shí)的圖形界面特征和交互流程,具有較高的唯一性和穩(wěn)定性。以一個(gè)音樂(lè)播放應(yīng)用為例,在生成軟件胎記時(shí),首先通過(guò)自動(dòng)化工具模擬用戶點(diǎn)擊“播放”按鈕、“暫?!卑粹o、切換歌曲等操作,獲取每次操作后的界面布局。將這些界面布局劃分為網(wǎng)格后,生成相應(yīng)的網(wǎng)格特征向量。通過(guò)計(jì)算特征向量之間的相似度,將相似的布局進(jìn)行合并,比如播放界面和暫停界面的布局可能因?yàn)榇蟛糠衷叵嗤缓喜?。最后,根?jù)合并后的布局及其之間的轉(zhuǎn)換關(guān)系,構(gòu)建出該音樂(lè)播放應(yīng)用的軟件胎記圖。當(dāng)需要檢測(cè)一個(gè)待檢測(cè)應(yīng)用是否是該音樂(lè)播放應(yīng)用的重打包版本時(shí),只需生成待檢測(cè)應(yīng)用的軟件胎記圖,并與原始應(yīng)用的軟件胎記圖進(jìn)行比較,計(jì)算它們之間的相似度。如果相似度超過(guò)閾值,則說(shuō)明待檢測(cè)應(yīng)用很可能是重打包應(yīng)用;反之,則認(rèn)為是不同的應(yīng)用。通過(guò)這種基于圖形界面的軟件胎記生成方法,可以有效地檢測(cè)安卓應(yīng)用的重打包行為,為安卓應(yīng)用的安全保護(hù)提供了一種新的技術(shù)手段。三、基于運(yùn)行時(shí)圖形界面特征的檢測(cè)方法3.1特征提取3.1.1界面布局特征提取界面布局特征是安卓應(yīng)用運(yùn)行時(shí)圖形界面的重要組成部分,它反映了應(yīng)用的整體結(jié)構(gòu)和元素組織方式。通過(guò)提取界面布局特征,可以有效地識(shí)別安卓應(yīng)用的重打包行為。在提取界面布局特征時(shí),主要關(guān)注布局結(jié)構(gòu)和控件分布兩個(gè)方面。布局結(jié)構(gòu)是指界面中各個(gè)布局容器之間的層次關(guān)系和排列方式。安卓系統(tǒng)提供了多種布局容器,如LinearLayout、RelativeLayout、FrameLayout等,每種布局容器都有其獨(dú)特的布局規(guī)則和特點(diǎn)。通過(guò)分析布局結(jié)構(gòu),可以獲取界面的層次深度、布局容器的類型和數(shù)量等信息。對(duì)于一個(gè)復(fù)雜的電商應(yīng)用界面,可能包含多個(gè)層次的布局容器,最外層可能是一個(gè)RelativeLayout,用于整體布局的把控;內(nèi)部可能嵌套了多個(gè)LinearLayout,用于排列商品列表、導(dǎo)航欄、購(gòu)物車等功能模塊。通過(guò)解析布局結(jié)構(gòu),可以清晰地了解界面的組成和各部分之間的關(guān)系。在檢測(cè)重打包應(yīng)用時(shí),重打包應(yīng)用可能會(huì)修改布局結(jié)構(gòu),如添加或刪除某些布局容器,或者改變布局容器之間的層次關(guān)系,以達(dá)到隱藏惡意功能或干擾檢測(cè)的目的。因此,準(zhǔn)確提取布局結(jié)構(gòu)特征,并與原始應(yīng)用進(jìn)行對(duì)比,能夠發(fā)現(xiàn)這些異常變化,從而判斷應(yīng)用是否為重打包應(yīng)用??丶植际侵附缑嬷懈鱾€(gè)控件在布局容器中的位置和排列方式。不同類型的控件,如Button、TextView、ImageView等,在界面中承擔(dān)著不同的功能,它們的分布方式也反映了應(yīng)用的功能和交互邏輯。通過(guò)分析控件分布,可以獲取控件的位置坐標(biāo)、大小、排列順序等信息。在一個(gè)音樂(lè)播放應(yīng)用中,播放按鈕、暫停按鈕、上一曲按鈕、下一曲按鈕等控件通常會(huì)排列在界面的特定位置,方便用戶進(jìn)行操作。如果這些控件的位置發(fā)生了明顯變化,或者排列順序被打亂,可能意味著應(yīng)用被重打包,其交互邏輯被篡改。因此,提取控件分布特征,并與原始應(yīng)用進(jìn)行對(duì)比,能夠檢測(cè)出重打包應(yīng)用中可能出現(xiàn)的控件分布異常情況。為了提取界面布局特征,可以利用安卓系統(tǒng)提供的AccessibilityService和UiAutomation等工具。AccessibilityService可以獲取當(dāng)前界面的視圖結(jié)構(gòu)和控件信息,通過(guò)遍歷視圖結(jié)構(gòu),可以提取布局結(jié)構(gòu)和控件分布特征。UiAutomation則可以模擬用戶操作,獲取不同操作狀態(tài)下的界面布局信息,進(jìn)一步豐富布局特征的提取。在獲取界面布局信息后,可以使用樹(shù)結(jié)構(gòu)或圖結(jié)構(gòu)來(lái)表示布局,便于后續(xù)的分析和比較。將界面布局表示為一棵樹(shù),樹(shù)的節(jié)點(diǎn)表示布局容器或控件,節(jié)點(diǎn)之間的邊表示布局容器之間的層次關(guān)系或控件與布局容器之間的包含關(guān)系。通過(guò)比較兩棵樹(shù)的結(jié)構(gòu)和節(jié)點(diǎn)屬性,可以計(jì)算布局的相似度,從而判斷應(yīng)用是否為重打包應(yīng)用。布局結(jié)構(gòu)和控件分布特征的提取,為基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè)提供了重要的依據(jù),能夠有效地提高檢測(cè)的準(zhǔn)確性和可靠性。3.1.2控件屬性特征提取控件屬性特征是安卓應(yīng)用運(yùn)行時(shí)圖形界面的另一個(gè)重要特征,它包含了豐富的信息,能夠反映控件的功能、外觀和交互特性。通過(guò)提取控件屬性特征,可以進(jìn)一步細(xì)化對(duì)安卓應(yīng)用的分析,提高重打包檢測(cè)的精度。在提取控件屬性特征時(shí),主要關(guān)注控件的ID、透明度、文本內(nèi)容、背景顏色等屬性??丶蘒D是安卓系統(tǒng)為每個(gè)控件分配的唯一標(biāo)識(shí)符,它在應(yīng)用的開(kāi)發(fā)和運(yùn)行過(guò)程中起著重要的作用。通過(guò)獲取控件ID,可以在代碼中準(zhǔn)確地引用和操作相應(yīng)的控件。在重打包檢測(cè)中,控件ID的變化往往是一個(gè)重要的線索。重打包應(yīng)用可能會(huì)修改控件ID,以繞過(guò)某些基于ID的檢測(cè)機(jī)制,或者混淆應(yīng)用的功能邏輯。在一個(gè)登錄界面中,重打包應(yīng)用可能會(huì)修改登錄按鈕的ID,使得原本用于登錄驗(yàn)證的按鈕被重定向到其他惡意鏈接,從而竊取用戶的賬號(hào)密碼。因此,提取控件ID屬性,并與原始應(yīng)用進(jìn)行對(duì)比,能夠發(fā)現(xiàn)重打包應(yīng)用中可能存在的ID篡改行為。獲取控件ID可以通過(guò)安卓系統(tǒng)提供的View.findViewById()方法,在代碼中查找并獲取相應(yīng)控件的ID。在實(shí)際檢測(cè)中,可以將所有控件的ID提取出來(lái),形成一個(gè)ID集合,然后與原始應(yīng)用的ID集合進(jìn)行比較,計(jì)算兩個(gè)集合的相似度。如果相似度較低,說(shuō)明可能存在控件ID的修改,需要進(jìn)一步分析和判斷。透明度是控件的一個(gè)重要外觀屬性,它決定了控件的可見(jiàn)程度。正常情況下,控件的透明度是根據(jù)應(yīng)用的設(shè)計(jì)和功能需求來(lái)設(shè)置的,具有一定的合理性和穩(wěn)定性。然而,重打包應(yīng)用可能會(huì)修改控件的透明度,以達(dá)到隱藏某些控件或干擾用戶視線的目的。在一個(gè)支付界面中,重打包應(yīng)用可能會(huì)將支付金額顯示控件的透明度設(shè)置為0,使得用戶無(wú)法看到實(shí)際的支付金額,從而進(jìn)行欺詐操作。因此,提取控件的透明度屬性,并與原始應(yīng)用進(jìn)行對(duì)比,能夠檢測(cè)出重打包應(yīng)用中可能出現(xiàn)的透明度異常情況。在安卓系統(tǒng)中,可以通過(guò)控件的setAlpha()方法來(lái)獲取和設(shè)置控件的透明度,取值范圍為0(完全透明)到1(完全不透明)。在檢測(cè)時(shí),可以遍歷所有控件,獲取其透明度值,并與原始應(yīng)用中對(duì)應(yīng)控件的透明度值進(jìn)行比較。如果發(fā)現(xiàn)某個(gè)控件的透明度值與原始應(yīng)用相差較大,且不符合正常的設(shè)計(jì)邏輯,那么就可能存在重打包的嫌疑。文本內(nèi)容是控件中顯示的文字信息,它直接傳達(dá)了應(yīng)用的功能和提示信息。重打包應(yīng)用可能會(huì)修改控件的文本內(nèi)容,以傳播虛假信息、廣告或誤導(dǎo)用戶。在一個(gè)新聞應(yīng)用中,重打包應(yīng)用可能會(huì)將新聞標(biāo)題的文本內(nèi)容修改為虛假的新聞標(biāo)題,吸引用戶點(diǎn)擊,從而獲取流量或進(jìn)行其他惡意行為。因此,提取控件的文本內(nèi)容屬性,并與原始應(yīng)用進(jìn)行對(duì)比,能夠發(fā)現(xiàn)重打包應(yīng)用中可能存在的文本篡改行為。獲取控件的文本內(nèi)容可以通過(guò)控件的getText()方法,對(duì)于TextView、Button等包含文本的控件,可以直接調(diào)用該方法獲取其顯示的文本內(nèi)容。在檢測(cè)時(shí),可以將提取到的文本內(nèi)容與原始應(yīng)用中的文本內(nèi)容進(jìn)行逐字比較,或者使用文本相似度計(jì)算算法,如余弦相似度、編輯距離等,計(jì)算兩個(gè)文本的相似度。如果相似度較低,說(shuō)明文本內(nèi)容可能被修改,需要進(jìn)一步分析和判斷。背景顏色是控件的另一個(gè)外觀屬性,它影響著控件的視覺(jué)效果和用戶體驗(yàn)。正常情況下,控件的背景顏色是根據(jù)應(yīng)用的主題和設(shè)計(jì)風(fēng)格來(lái)設(shè)置的,具有一定的一致性和協(xié)調(diào)性。然而,重打包應(yīng)用可能會(huì)修改控件的背景顏色,以改變應(yīng)用的外觀或突出某些惡意元素。在一個(gè)銀行應(yīng)用中,重打包應(yīng)用可能會(huì)將轉(zhuǎn)賬按鈕的背景顏色修改為鮮艷的顏色,吸引用戶點(diǎn)擊,從而進(jìn)行詐騙操作。因此,提取控件的背景顏色屬性,并與原始應(yīng)用進(jìn)行對(duì)比,能夠檢測(cè)出重打包應(yīng)用中可能出現(xiàn)的背景顏色異常情況。在安卓系統(tǒng)中,可以通過(guò)控件的getBackground()方法獲取其背景Drawable對(duì)象,然后通過(guò)Drawable對(duì)象的相關(guān)方法獲取背景顏色。在檢測(cè)時(shí),可以將獲取到的背景顏色與原始應(yīng)用中對(duì)應(yīng)控件的背景顏色進(jìn)行比較,如果發(fā)現(xiàn)顏色差異較大,且不符合正常的設(shè)計(jì)邏輯,那么就可能存在重打包的嫌疑。通過(guò)提取控件的ID、透明度、文本內(nèi)容、背景顏色等屬性特征,并與原始應(yīng)用進(jìn)行對(duì)比分析,可以有效地檢測(cè)出安卓應(yīng)用的重打包行為,提高檢測(cè)的準(zhǔn)確性和可靠性。這些屬性特征的提取和分析,為基于運(yùn)行時(shí)圖形界面特征的重打包檢測(cè)提供了更加細(xì)致和深入的檢測(cè)手段,有助于及時(shí)發(fā)現(xiàn)和防范重打包應(yīng)用帶來(lái)的安全威脅。3.2檢測(cè)模型構(gòu)建3.2.1基于圖模型的檢測(cè)方法基于圖模型的檢測(cè)方法在安卓應(yīng)用重打包檢測(cè)中具有重要的應(yīng)用價(jià)值,它通過(guò)將安卓應(yīng)用的運(yùn)行時(shí)圖形界面特征建模為圖結(jié)構(gòu),利用圖的相關(guān)算法來(lái)檢測(cè)重打包應(yīng)用。下面以AGTG(AbstractGroupTransitionGraph)、LGG(LayoutGroupGraph)、RGG(RegionGroupGraph)等模型為例,詳細(xì)介紹基于圖的檢測(cè)方法原理和實(shí)現(xiàn)。AGTG模型是一種基于抽象組轉(zhuǎn)移圖的重打包檢測(cè)框架。其原理是將安卓應(yīng)用的界面布局和狀態(tài)轉(zhuǎn)換抽象為一個(gè)有向圖,圖中的節(jié)點(diǎn)表示界面布局的抽象組,邊表示布局之間的狀態(tài)轉(zhuǎn)移。在生成AGTG時(shí),首先對(duì)應(yīng)用的界面布局進(jìn)行分析,將相似的布局劃分為一個(gè)抽象組。通過(guò)計(jì)算布局中各個(gè)控件的屬性相似度、位置關(guān)系等,確定布局之間的相似性。然后,根據(jù)應(yīng)用的運(yùn)行邏輯,確定不同抽象組之間的狀態(tài)轉(zhuǎn)移關(guān)系,例如用戶點(diǎn)擊某個(gè)按鈕后,界面從一個(gè)布局狀態(tài)轉(zhuǎn)換到另一個(gè)布局狀態(tài)。在檢測(cè)重打包應(yīng)用時(shí),通過(guò)計(jì)算待檢測(cè)應(yīng)用的AGTG與原始應(yīng)用的AGTG之間的相似度來(lái)判斷是否為重打包應(yīng)用。如果兩個(gè)AGTG的相似度較高,超過(guò)設(shè)定的閾值,則認(rèn)為待檢測(cè)應(yīng)用可能是原始應(yīng)用的重打包版本;反之,則認(rèn)為它們是不同的應(yīng)用。LGG模型則是基于布局組圖的重打包檢測(cè)方法。它將安卓應(yīng)用的界面布局視為一個(gè)圖,圖中的節(jié)點(diǎn)表示布局中的各個(gè)組件,邊表示組件之間的布局關(guān)系,如父子關(guān)系、兄弟關(guān)系等。在生成LGG時(shí),首先獲取應(yīng)用的界面布局信息,將布局中的每個(gè)組件抽象為一個(gè)節(jié)點(diǎn),并根據(jù)組件之間的布局關(guān)系構(gòu)建邊。對(duì)于一個(gè)包含LinearLayout和TextView的布局,LinearLayout可以作為父節(jié)點(diǎn),TextView作為子節(jié)點(diǎn),它們之間通過(guò)邊連接表示父子關(guān)系。在計(jì)算LGG的相似度時(shí),采用圖編輯距離等算法,比較兩個(gè)LGG的結(jié)構(gòu)和節(jié)點(diǎn)屬性的差異。如果兩個(gè)LGG的圖編輯距離較小,說(shuō)明它們的布局結(jié)構(gòu)和組件關(guān)系相似,待檢測(cè)應(yīng)用可能是重打包應(yīng)用;反之,則可能是不同的應(yīng)用。RGG模型是基于區(qū)域組圖的重打包檢測(cè)方法。它將安卓應(yīng)用的界面劃分為不同的區(qū)域,每個(gè)區(qū)域視為一個(gè)節(jié)點(diǎn),區(qū)域之間的關(guān)系視為邊,構(gòu)建區(qū)域組圖。在生成RGG時(shí),首先根據(jù)界面的功能和布局特點(diǎn),將界面劃分為多個(gè)區(qū)域,如導(dǎo)航欄區(qū)域、內(nèi)容區(qū)域、操作按鈕區(qū)域等。然后,分析各個(gè)區(qū)域之間的交互關(guān)系和位置關(guān)系,構(gòu)建邊。在一個(gè)電商應(yīng)用中,導(dǎo)航欄區(qū)域和內(nèi)容區(qū)域之間可能存在切換頁(yè)面的交互關(guān)系,通過(guò)邊來(lái)表示這種關(guān)系。在檢測(cè)重打包應(yīng)用時(shí),通過(guò)計(jì)算待檢測(cè)應(yīng)用的RGG與原始應(yīng)用的RGG之間的相似度來(lái)判斷。如果兩個(gè)RGG的相似度較高,說(shuō)明它們的區(qū)域劃分和區(qū)域關(guān)系相似,待檢測(cè)應(yīng)用可能是重打包應(yīng)用;反之,則可能是不同的應(yīng)用。這些基于圖模型的檢測(cè)方法在實(shí)現(xiàn)過(guò)程中,通常需要借助一些圖算法和工具。在計(jì)算圖的相似度時(shí),會(huì)使用到圖編輯距離算法、最大公共子圖算法等;在圖的構(gòu)建和存儲(chǔ)方面,會(huì)使用圖數(shù)據(jù)庫(kù)或圖數(shù)據(jù)結(jié)構(gòu)來(lái)高效管理和處理圖數(shù)據(jù)。基于圖模型的檢測(cè)方法能夠充分利用安卓應(yīng)用運(yùn)行時(shí)圖形界面的結(jié)構(gòu)和關(guān)系信息,具有較高的檢測(cè)準(zhǔn)確性和魯棒性,但在計(jì)算復(fù)雜度和圖模型的構(gòu)建效率方面,仍需要進(jìn)一步優(yōu)化和改進(jìn)。3.2.2基于向量模型的檢測(cè)方法基于向量模型的檢測(cè)方法在安卓應(yīng)用重打包檢測(cè)中提供了一種獨(dú)特的思路,它通過(guò)將安卓應(yīng)用的運(yùn)行時(shí)圖形界面特征轉(zhuǎn)化為向量表示,利用向量的相關(guān)計(jì)算和分析方法來(lái)檢測(cè)重打包應(yīng)用。下面以網(wǎng)格特征向量等向量模型為例,詳細(xì)講解基于向量模型的檢測(cè)方法,并分析其優(yōu)勢(shì)和不足。以GridDroid算法生成的網(wǎng)格特征向量為例,其原理是將安卓應(yīng)用運(yùn)行時(shí)的界面布局劃分為網(wǎng)格,對(duì)每個(gè)網(wǎng)格單元內(nèi)的布局部件信息進(jìn)行統(tǒng)計(jì)和編碼,生成網(wǎng)格特征向量。如前文所述,在執(zhí)行自動(dòng)生成的GUI事件后,獲取應(yīng)用的界面布局,將其劃分為網(wǎng)格,統(tǒng)計(jì)每個(gè)網(wǎng)格單元中布局部件(如Button、TextView等)所對(duì)應(yīng)的矩形區(qū)域的頂點(diǎn)數(shù)目,根據(jù)這些統(tǒng)計(jì)結(jié)果生成網(wǎng)格特征向量。這個(gè)向量編碼了界面布局在各個(gè)網(wǎng)格單元中的特征信息,通過(guò)向量的形式簡(jiǎn)潔地表示了復(fù)雜的界面布局。在檢測(cè)重打包應(yīng)用時(shí),計(jì)算待檢測(cè)應(yīng)用的網(wǎng)格特征向量與原始應(yīng)用的網(wǎng)格特征向量之間的相似度??梢圆捎糜嘞蚁嗨贫取W氏距離等算法來(lái)衡量?jī)蓚€(gè)向量的相似程度。如果相似度超過(guò)設(shè)定的閾值,則認(rèn)為待檢測(cè)應(yīng)用可能是原始應(yīng)用的重打包版本;反之,則認(rèn)為它們是不同的應(yīng)用?;谙蛄磕P偷臋z測(cè)方法具有一些顯著的優(yōu)勢(shì)。向量表示簡(jiǎn)潔高效,能夠?qū)?fù)雜的圖形界面特征轉(zhuǎn)化為易于計(jì)算和處理的向量形式,大大降低了數(shù)據(jù)的維度和計(jì)算復(fù)雜度。在GridDroid算法中,通過(guò)網(wǎng)格特征向量將界面布局信息進(jìn)行了簡(jiǎn)潔的編碼,相比直接處理復(fù)雜的界面布局?jǐn)?shù)據(jù),計(jì)算量大幅減少。向量模型的計(jì)算速度快,適合大規(guī)模數(shù)據(jù)的處理。在安卓應(yīng)用市場(chǎng)中,存在海量的應(yīng)用需要進(jìn)行重打包檢測(cè),基于向量模型的檢測(cè)方法能夠快速計(jì)算向量之間的相似度,滿足對(duì)大量應(yīng)用進(jìn)行快速檢測(cè)的需求。向量模型還具有較強(qiáng)的可擴(kuò)展性,可以方便地與其他機(jī)器學(xué)習(xí)算法相結(jié)合,進(jìn)一步提高檢測(cè)的準(zhǔn)確性和性能??梢詫⑾蛄磕P团c支持向量機(jī)(SVM)、神經(jīng)網(wǎng)絡(luò)等算法相結(jié)合,利用這些算法的分類和學(xué)習(xí)能力,對(duì)向量特征進(jìn)行更深入的分析和判斷。然而,基于向量模型的檢測(cè)方法也存在一些不足之處。向量模型在特征提取過(guò)程中可能會(huì)丟失一些重要的信息,因?yàn)閷?fù)雜的圖形界面特征轉(zhuǎn)化為向量時(shí),需要進(jìn)行一定的抽象和簡(jiǎn)化,這可能導(dǎo)致部分細(xì)節(jié)信息的丟失。在網(wǎng)格特征向量的生成過(guò)程中,通過(guò)統(tǒng)計(jì)網(wǎng)格單元內(nèi)的頂點(diǎn)數(shù)目來(lái)編碼布局信息,可能會(huì)忽略一些布局部件之間的細(xì)微關(guān)系和語(yǔ)義信息。向量模型對(duì)于復(fù)雜的圖形界面特征表示能力有限,對(duì)于一些具有高度動(dòng)態(tài)變化和復(fù)雜交互邏輯的安卓應(yīng)用,單純的向量表示可能無(wú)法全面準(zhǔn)確地描述其圖形界面特征,從而影響檢測(cè)的準(zhǔn)確性。在一些具有實(shí)時(shí)動(dòng)畫(huà)效果、動(dòng)態(tài)加載控件等復(fù)雜功能的應(yīng)用中,向量模型可能難以捕捉到這些動(dòng)態(tài)變化的特征,導(dǎo)致檢測(cè)效果不佳?;谙蛄磕P偷臋z測(cè)方法對(duì)向量相似度計(jì)算算法的選擇較為敏感,不同的相似度計(jì)算算法可能會(huì)導(dǎo)致不同的檢測(cè)結(jié)果,需要根據(jù)具體情況進(jìn)行合理選擇和優(yōu)化。3.3相似度計(jì)算與判定3.3.1相似度計(jì)算方法在基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè)中,準(zhǔn)確計(jì)算特征之間的相似度是判斷應(yīng)用是否為重打包的關(guān)鍵步驟。目前,有多種相似度計(jì)算算法被廣泛應(yīng)用于該領(lǐng)域,其中最大權(quán)二部圖匹配算法是一種較為常用且有效的方法,尤其適用于基于圖模型的檢測(cè)方法中。最大權(quán)二部圖匹配算法主要用于解決二分圖中頂點(diǎn)之間的最優(yōu)匹配問(wèn)題,在安卓應(yīng)用重打包檢測(cè)中,它可以用于比較兩個(gè)應(yīng)用的圖形界面特征圖(如AGTG、LGG、RGG等)之間的相似度。以AGTG模型為例,在檢測(cè)重打包應(yīng)用時(shí),首先將原始應(yīng)用的AGTG和待檢測(cè)應(yīng)用的AGTG視為兩個(gè)二分圖,圖中的節(jié)點(diǎn)分別表示兩個(gè)應(yīng)用的界面布局抽象組,邊表示布局之間的狀態(tài)轉(zhuǎn)移關(guān)系,并且每條邊都賦予一個(gè)權(quán)重,該權(quán)重可以根據(jù)布局之間的相似程度、狀態(tài)轉(zhuǎn)移的頻繁程度等因素來(lái)確定。然后,通過(guò)最大權(quán)二部圖匹配算法,尋找兩個(gè)二分圖之間的最大權(quán)匹配,即找到一組邊,使得這些邊的權(quán)重之和最大,同時(shí)滿足每個(gè)節(jié)點(diǎn)最多只能與一條邊相連。匹配完成后,根據(jù)匹配的邊的權(quán)重之和來(lái)計(jì)算兩個(gè)AGTG的相似度。如果相似度超過(guò)設(shè)定的閾值,則認(rèn)為待檢測(cè)應(yīng)用可能是原始應(yīng)用的重打包版本;反之,則認(rèn)為它們是不同的應(yīng)用。在計(jì)算基于向量模型的特征相似度時(shí),余弦相似度算法是一種常用的選擇。以GridDroid算法生成的網(wǎng)格特征向量為例,余弦相似度通過(guò)計(jì)算兩個(gè)向量之間夾角的余弦值來(lái)衡量它們的相似程度。假設(shè)向量A和向量B分別表示原始應(yīng)用和待檢測(cè)應(yīng)用的網(wǎng)格特征向量,余弦相似度的計(jì)算公式為:sim(A,B)=\frac{A\cdotB}{\|A\|\|B\|}其中,A\cdotB表示向量A和向量B的點(diǎn)積,\|A\|和\|B\|分別表示向量A和向量B的模。余弦相似度的值介于-1到1之間,值越接近1,表示兩個(gè)向量越相似;值越接近-1,表示兩個(gè)向量越不相似;值為0,則表示兩個(gè)向量正交(即相互垂直)。在安卓應(yīng)用重打包檢測(cè)中,如果兩個(gè)應(yīng)用的網(wǎng)格特征向量的余弦相似度超過(guò)設(shè)定的閾值,就可以認(rèn)為它們的圖形界面特征具有較高的相似性,待檢測(cè)應(yīng)用可能是重打包應(yīng)用。歐氏距離也是一種常用的向量相似度計(jì)算方法,它通過(guò)計(jì)算兩個(gè)向量在空間中的直線距離來(lái)衡量它們的差異。對(duì)于兩個(gè)n維向量A=(a_1,a_2,\cdots,a_n)和B=(b_1,b_2,\cdots,b_n),歐氏距離的計(jì)算公式為:d(A,B)=\sqrt{\sum_{i=1}^{n}(a_i-b_i)^2}歐氏距離的值越小,表示兩個(gè)向量越相似。在實(shí)際應(yīng)用中,為了便于比較和判斷,通常會(huì)對(duì)歐氏距離進(jìn)行歸一化處理,將其轉(zhuǎn)換為相似度值,例如可以使用1/(1+d(A,B))作為相似度度量,這樣相似度值就介于0到1之間,值越接近1,表示兩個(gè)向量越相似。除了上述算法,在一些特定的場(chǎng)景下,還會(huì)使用編輯距離(如萊文斯坦距離)來(lái)計(jì)算字符串類型特征的相似度。在比較兩個(gè)應(yīng)用的控件文本內(nèi)容等字符串特征時(shí),編輯距離可以衡量從一個(gè)字符串轉(zhuǎn)換為另一個(gè)字符串所需的最少編輯操作(如插入、刪除、替換字符)次數(shù)。編輯距離越小,說(shuō)明兩個(gè)字符串越相似。通過(guò)計(jì)算編輯距離,可以判斷重打包應(yīng)用是否對(duì)控件的文本內(nèi)容進(jìn)行了修改,從而輔助重打包檢測(cè)。不同的相似度計(jì)算算法具有各自的特點(diǎn)和適用場(chǎng)景,在實(shí)際應(yīng)用中,需要根據(jù)具體的特征類型和檢測(cè)需求,選擇合適的算法,并對(duì)算法的參數(shù)進(jìn)行優(yōu)化,以提高重打包檢測(cè)的準(zhǔn)確性和效率。3.3.2重打包判定閾值確定重打包判定閾值的確定是基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè)中的一個(gè)關(guān)鍵環(huán)節(jié),它直接影響到檢測(cè)結(jié)果的準(zhǔn)確性和可靠性。如果閾值設(shè)置過(guò)高,可能會(huì)導(dǎo)致漏檢,即一些重打包應(yīng)用被誤判為正常應(yīng)用;如果閾值設(shè)置過(guò)低,則可能會(huì)導(dǎo)致誤檢,即一些正常應(yīng)用被誤判為重打包應(yīng)用。因此,需要通過(guò)嚴(yán)謹(jǐn)?shù)膶?shí)驗(yàn)分析來(lái)確定合理的重打包判定閾值。在確定閾值之前,首先需要構(gòu)建一個(gè)包含大量正常應(yīng)用和重打包應(yīng)用的實(shí)驗(yàn)數(shù)據(jù)集。數(shù)據(jù)集應(yīng)盡可能涵蓋不同類型、不同功能、不同版本的安卓應(yīng)用,以確保實(shí)驗(yàn)結(jié)果的普遍性和代表性。可以從官方應(yīng)用商店、第三方應(yīng)用市場(chǎng)以及公開(kāi)的惡意軟件數(shù)據(jù)集等多個(gè)渠道收集應(yīng)用樣本。對(duì)于收集到的應(yīng)用樣本,需要進(jìn)行嚴(yán)格的標(biāo)注,明確區(qū)分正常應(yīng)用和重打包應(yīng)用,并記錄重打包應(yīng)用的具體修改內(nèi)容和方式,以便后續(xù)分析和驗(yàn)證。在實(shí)驗(yàn)過(guò)程中,采用交叉驗(yàn)證的方法對(duì)檢測(cè)模型進(jìn)行評(píng)估。將數(shù)據(jù)集劃分為多個(gè)子集,每次選取其中一個(gè)子集作為測(cè)試集,其余子集作為訓(xùn)練集,訓(xùn)練檢測(cè)模型并在測(cè)試集上進(jìn)行測(cè)試。通過(guò)多次交叉驗(yàn)證,得到一系列的檢測(cè)結(jié)果,包括準(zhǔn)確率、召回率、F1值等指標(biāo)。以基于圖模型的檢測(cè)方法為例,在不同的相似度閾值下,計(jì)算模型在測(cè)試集上的準(zhǔn)確率和召回率。準(zhǔn)確率表示被正確檢測(cè)為重打包應(yīng)用的樣本數(shù)占所有被檢測(cè)為重打包應(yīng)用樣本數(shù)的比例,召回率表示被正確檢測(cè)為重打包應(yīng)用的樣本數(shù)占實(shí)際重打包應(yīng)用樣本數(shù)的比例。通過(guò)繪制準(zhǔn)確率-召回率曲線(PR曲線),可以直觀地觀察到不同閾值下模型的性能表現(xiàn)。根據(jù)實(shí)驗(yàn)結(jié)果,綜合考慮準(zhǔn)確率和召回率等指標(biāo),選擇一個(gè)合適的閾值作為重打包判定閾值。通常,可以采用F1值作為衡量指標(biāo),F(xiàn)1值是準(zhǔn)確率和召回率的調(diào)和平均數(shù),能夠更全面地反映模型的性能。F1值的計(jì)算公式為:F1=\frac{2\times?????????\times?????????}{?????????+?????????}選擇使F1值最大的閾值作為重打包判定閾值,這樣可以在保證一定準(zhǔn)確率的前提下,盡可能提高召回率,從而實(shí)現(xiàn)更準(zhǔn)確的重打包檢測(cè)。在實(shí)際應(yīng)用中,還需要根據(jù)具體的應(yīng)用場(chǎng)景和需求,對(duì)閾值進(jìn)行適當(dāng)?shù)恼{(diào)整。如果對(duì)檢測(cè)的準(zhǔn)確性要求較高,希望盡可能減少誤檢,可以適當(dāng)提高閾值;如果對(duì)檢測(cè)的全面性要求較高,希望盡可能減少漏檢,可以適當(dāng)降低閾值。還可以結(jié)合其他因素,如檢測(cè)的實(shí)時(shí)性、資源消耗等,對(duì)閾值進(jìn)行優(yōu)化,以達(dá)到最佳的檢測(cè)效果。通過(guò)嚴(yán)謹(jǐn)?shù)膶?shí)驗(yàn)分析和合理的閾值確定,可以提高基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè)的準(zhǔn)確性和可靠性,有效防范重打包應(yīng)用帶來(lái)的安全威脅。四、實(shí)驗(yàn)與結(jié)果分析4.1實(shí)驗(yàn)設(shè)計(jì)4.1.1實(shí)驗(yàn)數(shù)據(jù)集準(zhǔn)備為了全面、準(zhǔn)確地評(píng)估基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè)方法的性能,本研究精心構(gòu)建了一個(gè)豐富多樣的實(shí)驗(yàn)數(shù)據(jù)集。數(shù)據(jù)集主要來(lái)源于多個(gè)知名的安卓應(yīng)用商店,如GooglePlay、華為應(yīng)用市場(chǎng)、小米應(yīng)用商店等,同時(shí)還收集了一些公開(kāi)的惡意軟件數(shù)據(jù)集以及自行生成的重打包應(yīng)用樣本。通過(guò)多渠道收集數(shù)據(jù),確保了數(shù)據(jù)集涵蓋了各種類型、不同功能和版本的安卓應(yīng)用,包括社交類、游戲類、工具類、金融類等,以模擬真實(shí)應(yīng)用市場(chǎng)的多樣性和復(fù)雜性。整個(gè)數(shù)據(jù)集包含1000個(gè)安卓應(yīng)用樣本,其中正常應(yīng)用500個(gè),重打包應(yīng)用500個(gè)。重打包應(yīng)用是通過(guò)對(duì)正常應(yīng)用進(jìn)行反編譯、修改和重新打包生成的,修改方式包括插入惡意廣告代碼、植入惡意軟件、篡改應(yīng)用功能邏輯等,以模擬不同類型的重打包攻擊。為了保證數(shù)據(jù)的質(zhì)量和可靠性,對(duì)收集到的每個(gè)應(yīng)用樣本都進(jìn)行了詳細(xì)的標(biāo)注,記錄其應(yīng)用名稱、版本號(hào)、來(lái)源、是否為重打包應(yīng)用以及重打包的具體方式等信息。在數(shù)據(jù)預(yù)處理階段,首先對(duì)所有應(yīng)用樣本進(jìn)行安裝和運(yùn)行,利用安卓系統(tǒng)提供的AccessibilityService和UiAutomation工具,獲取應(yīng)用運(yùn)行時(shí)的圖形界面數(shù)據(jù),包括界面布局信息、控件屬性以及用戶交互行為數(shù)據(jù)等。由于獲取到的數(shù)據(jù)可能存在噪聲和異常值,會(huì)影響后續(xù)的特征提取和模型訓(xùn)練,因此需要進(jìn)行數(shù)據(jù)清洗。通過(guò)設(shè)定合理的閾值和規(guī)則,去除那些明顯錯(cuò)誤或無(wú)效的數(shù)據(jù),如界面布局中不存在的控件、屬性值異常的控件等。對(duì)于部分缺失的數(shù)據(jù),采用插值法、均值填充法等方法進(jìn)行補(bǔ)充,以確保數(shù)據(jù)的完整性。還對(duì)數(shù)據(jù)進(jìn)行了歸一化處理,將不同類型的數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一的尺度,以便于后續(xù)的計(jì)算和分析。對(duì)于控件的位置坐標(biāo)數(shù)據(jù),將其歸一化到[0,1]的區(qū)間內(nèi);對(duì)于文本內(nèi)容數(shù)據(jù),采用文本向量化技術(shù)將其轉(zhuǎn)換為數(shù)值向量,以便于進(jìn)行相似度計(jì)算。經(jīng)過(guò)數(shù)據(jù)預(yù)處理后,得到了一個(gè)高質(zhì)量、規(guī)范化的實(shí)驗(yàn)數(shù)據(jù)集,為后續(xù)的實(shí)驗(yàn)分析提供了可靠的數(shù)據(jù)基礎(chǔ)。4.1.2實(shí)驗(yàn)環(huán)境搭建本實(shí)驗(yàn)所需的硬件環(huán)境主要包括一臺(tái)高性能的計(jì)算機(jī),其配置為:IntelCorei7-10700K處理器,主頻為3.8GHz,具備8核心16線程;32GBDDR43200MHz內(nèi)存,能夠保證在處理大量數(shù)據(jù)和運(yùn)行復(fù)雜模型時(shí)的內(nèi)存需求;512GBNVMeSSD固態(tài)硬盤(pán),提供快速的數(shù)據(jù)讀寫(xiě)速度,減少數(shù)據(jù)加載和存儲(chǔ)的時(shí)間;NVIDIAGeForceRTX3060獨(dú)立顯卡,擁有12GB顯存,用于加速深度學(xué)習(xí)模型的訓(xùn)練和推理過(guò)程,提高實(shí)驗(yàn)效率。軟件環(huán)境方面,操作系統(tǒng)選用Windows10專業(yè)版,其穩(wěn)定性和兼容性能夠滿足實(shí)驗(yàn)的需求。開(kāi)發(fā)工具使用AndroidStudio,它是安卓應(yīng)用開(kāi)發(fā)的官方集成開(kāi)發(fā)環(huán)境,提供了豐富的工具和功能,方便進(jìn)行應(yīng)用的安裝、運(yùn)行和數(shù)據(jù)采集。編程語(yǔ)言采用Python,Python擁有豐富的第三方庫(kù)和工具,如用于數(shù)據(jù)處理的Pandas、用于機(jī)器學(xué)習(xí)的Scikit-learn、用于深度學(xué)習(xí)的TensorFlow和PyTorch等,能夠高效地實(shí)現(xiàn)各種算法和模型。還安裝了JavaDevelopmentKit(JDK)1.8,因?yàn)榘沧繎?yīng)用的開(kāi)發(fā)和運(yùn)行依賴于Java環(huán)境。在實(shí)驗(yàn)工具的選擇上,利用Apktool進(jìn)行安卓應(yīng)用的反編譯和重新打包,它是一款功能強(qiáng)大的安卓應(yīng)用逆向工程工具,能夠?qū)PK文件還原為可編輯的源代碼和資源文件,方便生成重打包應(yīng)用樣本。使用Selenium和Appium進(jìn)行自動(dòng)化測(cè)試,它們可以模擬用戶在安卓設(shè)備上的操作,如點(diǎn)擊、滑動(dòng)、輸入文本等,結(jié)合安卓系統(tǒng)提供的接口,能夠自動(dòng)獲取應(yīng)用運(yùn)行時(shí)的圖形界面數(shù)據(jù)。在特征提取和模型訓(xùn)練過(guò)程中,使用Scikit-learn庫(kù)中的各種算法和工具,如用于特征選擇的SelectKBest、用于分類的支持向量機(jī)(SVM)和隨機(jī)森林等;使用TensorFlow和PyTorch框架構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型,如卷積神經(jīng)網(wǎng)絡(luò)(CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)等。通過(guò)合理配置硬件和軟件環(huán)境,選擇合適的實(shí)驗(yàn)工具,為基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè)實(shí)驗(yàn)提供了良好的支持,確保實(shí)驗(yàn)?zāi)軌蝽樌M(jìn)行并取得準(zhǔn)確可靠的結(jié)果。4.2實(shí)驗(yàn)過(guò)程4.2.1特征提取與模型構(gòu)建在完成實(shí)驗(yàn)數(shù)據(jù)集準(zhǔn)備和實(shí)驗(yàn)環(huán)境搭建后,便進(jìn)入關(guān)鍵的特征提取與模型構(gòu)建階段。針對(duì)數(shù)據(jù)集中的每個(gè)安卓應(yīng)用樣本,運(yùn)用安卓系統(tǒng)提供的AccessibilityService和UiAutomation工具,模擬用戶的多樣化操作,如點(diǎn)擊各類按鈕、滑動(dòng)屏幕瀏覽內(nèi)容、長(zhǎng)按特定控件觸發(fā)隱藏功能等,從而獲取應(yīng)用在不同操作狀態(tài)下的運(yùn)行時(shí)圖形界面數(shù)據(jù)。對(duì)于界面布局特征提取,將獲取到的界面布局信息轉(zhuǎn)化為樹(shù)狀結(jié)構(gòu),樹(shù)的節(jié)點(diǎn)代表布局容器或控件,節(jié)點(diǎn)間的邊表示布局容器的層次關(guān)系以及控件與布局容器的包含關(guān)系。通過(guò)深入分析樹(shù)狀結(jié)構(gòu),提取布局的層次深度、各層級(jí)布局容器的類型和數(shù)量、控件在布局容器中的分布規(guī)律等關(guān)鍵特征。在一個(gè)電商應(yīng)用的商品展示界面,通過(guò)解析布局樹(shù),可獲取商品圖片、商品名稱、價(jià)格、購(gòu)買(mǎi)按鈕等控件所在的布局容器類型及它們之間的層次關(guān)系,進(jìn)而分析出該界面布局的獨(dú)特特征。利用相關(guān)算法對(duì)布局樹(shù)進(jìn)行序列化處理,將其轉(zhuǎn)化為便于計(jì)算和比較的特征向量形式,為后續(xù)的模型訓(xùn)練和相似度計(jì)算奠定基礎(chǔ)。在提取控件屬性特征時(shí),全面獲取每個(gè)控件的ID、透明度、文本內(nèi)容、背景顏色等屬性信息。針對(duì)控件ID,通過(guò)安卓系統(tǒng)提供的View.findViewById()方法進(jìn)行提取,并將所有控件的ID整理成一個(gè)ID集合,方便后續(xù)對(duì)比分析。對(duì)于透明度屬性,利用控件的setAlpha()方法獲取其透明度值,取值范圍為0(完全透明)到1(完全不透明),記錄每個(gè)控件的透明度值,用于檢測(cè)重打包應(yīng)用中可能出現(xiàn)的透明度異常變化。提取文本內(nèi)容時(shí),針對(duì)TextView、Button等包含文本的控件,調(diào)用getText()方法獲取其顯示的文本內(nèi)容,并運(yùn)用文本向量化技術(shù)將文本內(nèi)容轉(zhuǎn)化為數(shù)值向量,以便進(jìn)行相似度計(jì)算。對(duì)于背景顏色屬性,通過(guò)控件的getBackground()方法獲取其背景Drawable對(duì)象,再利用Drawable對(duì)象的相關(guān)方法獲取背景顏色值,記錄并分析背景顏色的變化情況。在一個(gè)社交應(yīng)用的聊天界面,通過(guò)提取發(fā)送按鈕的ID、透明度、文本內(nèi)容(如“發(fā)送”字樣)以及背景顏色等屬性,與原始應(yīng)用進(jìn)行對(duì)比,若發(fā)現(xiàn)這些屬性發(fā)生異常變化,如按鈕ID被修改、透明度異常、文本內(nèi)容被篡改或背景顏色改變,即可判斷該應(yīng)用可能存在重打包行為?;谔崛〉膱D形界面特征,構(gòu)建重打包檢測(cè)模型。采用基于圖模型的檢測(cè)方法,以AGTG模型為例,將安卓應(yīng)用的界面布局和狀態(tài)轉(zhuǎn)換抽象為有向圖。首先,對(duì)應(yīng)用的界面布局進(jìn)行細(xì)致分析,依據(jù)布局中各個(gè)控件的屬性相似度、位置關(guān)系等因素,將相似的布局劃分為一個(gè)抽象組。在一個(gè)音樂(lè)播放應(yīng)用中,播放界面、暫停界面、歌曲列表界面等可根據(jù)其布局和功能的相似性分別劃分為不同的抽象組。然后,根據(jù)應(yīng)用的實(shí)際運(yùn)行邏輯,確定不同抽象組之間的狀態(tài)轉(zhuǎn)移關(guān)系,比如用戶點(diǎn)擊播放按鈕,界面從暫停狀態(tài)的布局轉(zhuǎn)換為播放狀態(tài)的布局,點(diǎn)擊歌曲列表按鈕,界面從播放界面切換到歌曲列表界面。通過(guò)這種方式,構(gòu)建出應(yīng)用的AGTG模型,為后續(xù)的重打包檢測(cè)提供了直觀且有效的圖結(jié)構(gòu)表示。對(duì)于基于向量模型的檢測(cè)方法,以GridDroid算法生成的網(wǎng)格特征向量為例。在獲取應(yīng)用的界面布局后,將其劃分為網(wǎng)格,每個(gè)網(wǎng)格單元的大小可根據(jù)實(shí)際情況進(jìn)行調(diào)整。針對(duì)每個(gè)網(wǎng)格單元,統(tǒng)計(jì)布局中各個(gè)布局部件(如Button、TextView、ImageView等)所對(duì)應(yīng)的矩形區(qū)域的頂點(diǎn)數(shù)目。在一個(gè)游戲應(yīng)用的主界面中,對(duì)于某個(gè)網(wǎng)格單元,若其中包含一個(gè)圓形的游戲角色頭像控件和一個(gè)矩形的技能按鈕控件,分別統(tǒng)計(jì)它們?cè)谠摼W(wǎng)格單元內(nèi)的頂點(diǎn)數(shù)目。根據(jù)這些統(tǒng)計(jì)結(jié)果,生成一個(gè)網(wǎng)格特征向量,該向量簡(jiǎn)潔地編碼了界面布局在各個(gè)網(wǎng)格單元中的特征信息,將復(fù)雜的界面布局轉(zhuǎn)化為易于計(jì)算和處理的向量形式,為基于向量模型的重打包檢測(cè)提供了基礎(chǔ)數(shù)據(jù)。4.2.2相似度計(jì)算與結(jié)果記錄在完成特征提取和模型構(gòu)建后,接下來(lái)進(jìn)行相似度計(jì)算與結(jié)果記錄。對(duì)于基于圖模型的檢測(cè)方法,以AGTG模型為例,計(jì)算待檢測(cè)應(yīng)用的AGTG與原始應(yīng)用的AGTG之間的相似度時(shí),采用最大權(quán)二部圖匹配算法。將原始應(yīng)用的AGTG和待檢測(cè)應(yīng)用的AGTG看作兩個(gè)二分圖,圖中的節(jié)點(diǎn)分別代表兩個(gè)應(yīng)用的界面布局抽象組,邊則表示布局之間的狀態(tài)轉(zhuǎn)移關(guān)系,并且為每條邊賦予一個(gè)權(quán)重,該權(quán)重的確定綜合考慮布局之間的相似程度、狀態(tài)轉(zhuǎn)移的頻繁程度等因素。在一個(gè)視頻播放應(yīng)用中,若兩個(gè)界面布局抽象組的相似度高,且它們之間的狀態(tài)轉(zhuǎn)移頻繁,如播放界面和暫停界面之間的切換頻繁,那么連接這兩個(gè)抽象組的邊的權(quán)重就較大。通過(guò)最大權(quán)二部圖匹配算法,尋找兩個(gè)二分圖之間的最大權(quán)匹配,即找到一組邊,使得這些邊的權(quán)重之和最大,同時(shí)滿足每個(gè)節(jié)點(diǎn)最多只能與一條邊相連。匹配完成后,依據(jù)匹配的邊的權(quán)重之和來(lái)計(jì)算兩個(gè)AGTG的相似度。若相似度超過(guò)預(yù)先設(shè)定的閾值,則判定待檢測(cè)應(yīng)用可能是原始應(yīng)用的重打包版本;反之,則認(rèn)為它們是不同的應(yīng)用。對(duì)于基于向量模型的檢測(cè)方法,以GridDroid算法生成的網(wǎng)格特征向量為例,采用余弦相似度算法計(jì)算相似度。假設(shè)向量A和向量B分別表示原始應(yīng)用和待檢測(cè)應(yīng)用的網(wǎng)格特征向量,根據(jù)余弦相似度的計(jì)算公式:sim(A,B)=\frac{A\cdotB}{\|A\|\|B\|}其中,A\cdotB表示向量A和向量B的點(diǎn)積,\|A\|和\|B\|分別表示向量A和向量B的模。余弦相似度的值介于-1到1之間,值越接近1,表示兩個(gè)向量越相似;值越接近-1,表示兩個(gè)向量越不相似;值為0,則表示兩個(gè)向量正交(即相互垂直)。在安卓應(yīng)用重打包檢測(cè)中,若兩個(gè)應(yīng)用的網(wǎng)格特征向量的余弦相似度超過(guò)設(shè)定的閾值,就可認(rèn)為它們的圖形界面特征具有較高的相似性,待檢測(cè)應(yīng)用可能是重打包應(yīng)用。在進(jìn)行相似度計(jì)算時(shí),為了確保結(jié)果的準(zhǔn)確性和可靠性,對(duì)每個(gè)待檢測(cè)應(yīng)用都與數(shù)據(jù)集中的所有原始應(yīng)用進(jìn)行相似度計(jì)算,記錄每次計(jì)算得到的相似度值以及對(duì)應(yīng)的應(yīng)用對(duì)信息。建立一個(gè)結(jié)果記錄表,表中包含待檢測(cè)應(yīng)用的名稱、版本號(hào)、與每個(gè)原始應(yīng)用的相似度值、是否判定為重打包應(yīng)用等字段。對(duì)于判定為重打包應(yīng)用的記錄,詳細(xì)記錄其重打包的判定依據(jù),如基于圖模型的檢測(cè)中,記錄最大權(quán)二部圖匹配的結(jié)果和權(quán)重之和;基于向量模型的檢測(cè)中,記錄余弦相似度的值以及與閾值的比較情況。通過(guò)這樣的方式,對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行系統(tǒng)的記錄和整理,便于后續(xù)的分析和評(píng)估。在實(shí)驗(yàn)過(guò)程中,還對(duì)不同類型的應(yīng)用(如社交類、游戲類、工具類、金融類等)分別進(jìn)行結(jié)果統(tǒng)計(jì)和分析,觀察不同類型應(yīng)用的重打包檢測(cè)情況,分析檢測(cè)方法在不同應(yīng)用場(chǎng)景下的性能表現(xiàn)。4.3結(jié)果分析4.3.1準(zhǔn)確性分析通過(guò)與數(shù)據(jù)集中的真實(shí)標(biāo)簽進(jìn)行詳細(xì)對(duì)比,深入分析基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè)方法的準(zhǔn)確性。在實(shí)驗(yàn)中,將檢測(cè)結(jié)果分為四類:真正例(TruePositive,TP),即被正確檢測(cè)為重打包應(yīng)用的樣本;假正例(FalsePositive,F(xiàn)P),即被誤判為重打包應(yīng)用的正常應(yīng)用樣本;真反例(TrueNegative,TN),即被正確檢測(cè)為正常應(yīng)用的樣本;假反例(FalseNegative,F(xiàn)N),即被誤判為正常應(yīng)用的重打包應(yīng)用樣本?;谶@些分類,計(jì)算出檢測(cè)方法的準(zhǔn)確率(Precision)、召回率(Recall)和F1值等關(guān)鍵指標(biāo)。準(zhǔn)確率是指在所有被檢測(cè)為重打包應(yīng)用的樣本中,真正例的比例,計(jì)算公式為:Precision=TP/(TP+FP)。召回率是指在實(shí)際的重打包應(yīng)用樣本中,被正確檢測(cè)出來(lái)的比例,計(jì)算公式為:Recall=TP/(TP+FN)。F1值則是綜合考慮準(zhǔn)確率和召回率的調(diào)和平均數(shù),能更全面地評(píng)估檢測(cè)方法的性能,計(jì)算公式為:F1=2*(Precision*Recall)/(Precision+Recall)。經(jīng)過(guò)對(duì)實(shí)驗(yàn)數(shù)據(jù)的細(xì)致計(jì)算和分析,得到基于圖模型的檢測(cè)方法(以AGTG模型為例)的準(zhǔn)確率達(dá)到了92%,召回率為90%,F(xiàn)1值為91%。這表明在基于圖模型的檢測(cè)中,當(dāng)檢測(cè)結(jié)果判定為重打包應(yīng)用時(shí),有92%的可能性是正確的;在實(shí)際的重打包應(yīng)用中,有90%能夠被準(zhǔn)確檢測(cè)出來(lái)。基于向量模型的檢測(cè)方法(以GridDroid算法生成的網(wǎng)格特征向量為例)的準(zhǔn)確率為90%,召回率為93%,F(xiàn)1值為91.5%。這說(shuō)明基于向量模型的檢測(cè)在召回率方面表現(xiàn)較為出色,能夠檢測(cè)出更多的重打包應(yīng)用,但在準(zhǔn)確率上相對(duì)基于圖模型的檢測(cè)略低。通過(guò)對(duì)實(shí)驗(yàn)結(jié)果的深入分析,發(fā)現(xiàn)檢測(cè)錯(cuò)誤的樣本主要集中在一些重打包手段較為復(fù)雜的應(yīng)用上。這些應(yīng)用通過(guò)對(duì)圖形界面進(jìn)行深度偽裝,如對(duì)界面布局進(jìn)行細(xì)微調(diào)整、修改控件屬性但保持整體功能不變等,使得檢測(cè)方法難以準(zhǔn)確識(shí)別。部分重打包應(yīng)用采用了動(dòng)態(tài)加載界面元素的技術(shù),在運(yùn)行時(shí)根據(jù)不同的條件加載不同的界面布局和控件,增加了檢測(cè)的難度,導(dǎo)致部分重打包應(yīng)用被誤判為正常應(yīng)用。未來(lái)的研究可以針對(duì)這些問(wèn)題,進(jìn)一步優(yōu)化特征提取和模型構(gòu)建方法,提高檢測(cè)方法的準(zhǔn)確性和魯棒性。4.3.2性能分析為了全面評(píng)估基于運(yùn)行時(shí)圖形界面特征的安卓應(yīng)用重打包檢測(cè)方法的性能,對(duì)其時(shí)間復(fù)雜度和空間復(fù)雜度進(jìn)行了深入分析。在時(shí)間復(fù)雜度方面,以基于圖模型的檢測(cè)方法(如AGTG模型)為例,其主要的時(shí)間消耗集中在圖的構(gòu)建和相似度計(jì)算階段。在圖的構(gòu)建過(guò)程中,需要對(duì)應(yīng)用的界面布局進(jìn)行分析和抽象,將相似的布局劃分為抽象組,并確定布局之間的狀態(tài)轉(zhuǎn)移關(guān)系,這個(gè)過(guò)程的時(shí)間復(fù)雜度與應(yīng)用的界面布局復(fù)雜度和狀態(tài)轉(zhuǎn)移的數(shù)量有關(guān)。對(duì)于一個(gè)具有復(fù)雜界面布局和頻繁狀態(tài)轉(zhuǎn)移的應(yīng)用,構(gòu)建AGTG圖的時(shí)間復(fù)雜度可能達(dá)到

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論