陳其龍
摘要:隨著我國(guó)科學(xué)技術(shù)的不斷發(fā)展,移動(dòng)設(shè)備得到了全面的普及。人們利用移動(dòng)設(shè)備中的應(yīng)用,實(shí)現(xiàn)了大量的功能,為人們的生活、工作等提供了許多的便利。但是惡意的軟件開發(fā)者,將正版的應(yīng)用破譯,并進(jìn)行相應(yīng)的增減改操作,將應(yīng)用程序進(jìn)行重新打包后發(fā)布到市場(chǎng)中。重打包應(yīng)用在法律意義上損害了原來(lái)開發(fā)者的利益,侵犯了其版權(quán)權(quán)益,而且對(duì)重打包應(yīng)用程序的使用者帶來(lái)了隱私信息的安全問(wèn)題。該文對(duì)重打包應(yīng)用進(jìn)行分析,并提出了一種基于代碼克隆檢測(cè)技術(shù)的Android應(yīng)用重打包檢測(cè)技術(shù)。
關(guān)鍵詞:代碼克隆;檢測(cè)技術(shù);Android;重打包;安全
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2014)08-1698-02
隨著移動(dòng)設(shè)備的普及,智能手機(jī)、平板電腦等移動(dòng)設(shè)備為人們提供了許多的便利,這些便利的實(shí)現(xiàn)主要是通過(guò)應(yīng)用程序來(lái)實(shí)現(xiàn)的,目前這些移動(dòng)設(shè)備中Android平臺(tái)是移動(dòng)市場(chǎng)中主要的部分。經(jīng)過(guò)對(duì)Android平臺(tái)系統(tǒng)的應(yīng)用,人們實(shí)現(xiàn)了友好的體驗(yàn),現(xiàn)在已發(fā)展成為人們生活中必不可少的一部分。但是Android應(yīng)用很容易被惡意的開發(fā)者所利用,他們首先將應(yīng)用進(jìn)行破譯,然后進(jìn)行增刪改等操作,將應(yīng)用進(jìn)行重新打包,最后投入市場(chǎng)以謀取利益。
1 Android應(yīng)用程序以及重打包應(yīng)用概述
Android應(yīng)用程序一般都是由開發(fā)者將相關(guān)的源碼以及資源進(jìn)行打包,壓縮成APK文件,這樣用戶就能夠進(jìn)行下載使用。
將APK文件進(jìn)行解壓后,可以得到很多內(nèi)容,主要包括UI資源以及布局、配置文件、簽名信息、應(yīng)用的具體DK(Dalvik,下同)字節(jié)碼等。利用Java編程語(yǔ)言來(lái)實(shí)現(xiàn)應(yīng)用程度,將其編寫成DK字節(jié)碼。Android應(yīng)用程序中一般不包含本地代碼,但實(shí)際上本地代碼是可以包含在應(yīng)用程序中的,對(duì)于惡意的重打包操作中,開發(fā)者也很少對(duì)包含在應(yīng)用中的本地代碼進(jìn)行變動(dòng)。應(yīng)用簽名是每一個(gè)開發(fā)者獨(dú)有的,每一個(gè)簽名配有一個(gè)獨(dú)有的密鑰,在應(yīng)用程序進(jìn)行打包前以及發(fā)布過(guò)程中都需要進(jìn)行簽名。
根其他的應(yīng)用程序相比,Android平臺(tái)上的應(yīng)用程序有一些獨(dú)特的性質(zhì),這也是其能得到廣泛推廣應(yīng)用的主要原因之一。其特性主要表現(xiàn)在以下幾個(gè)方面:1)Android應(yīng)用的入口點(diǎn)很多,這主要是由于組成Android應(yīng)用程序的構(gòu)件很多,并且每一個(gè)構(gòu)件都需要至少一個(gè)入口點(diǎn),Android應(yīng)用中的構(gòu)件間通過(guò)intent就可以實(shí)現(xiàn)相互通信的功能;2)在Android應(yīng)用程序中的代碼庫(kù)中,有一部分為第三方庫(kù),第三方庫(kù)所占代碼庫(kù)的比重一般較大。常見的第三方庫(kù)有Admob、Facebook、Google Analytics等;3)大部分的Android應(yīng)用程序在發(fā)布到市場(chǎng)之前,都進(jìn)行了代碼混淆,這樣做得目的是增加逆向操作的難度,維護(hù)開發(fā)者的版權(quán)等權(quán)益。進(jìn)行應(yīng)用代碼的混淆操作,一般都是用Proguard工具,通過(guò)這一工具,可以將原先應(yīng)用程序代碼中的方法名、類名等進(jìn)行更改,將原先那些無(wú)用的代碼去除,這樣達(dá)到代碼混淆的目的。
應(yīng)用重打包就是惡意的開發(fā)者將原先應(yīng)用程序進(jìn)行破譯,對(duì)非核心的代碼資料進(jìn)行惡意的改動(dòng),并對(duì)應(yīng)用進(jìn)行重新的打包,發(fā)布到市場(chǎng)中,我們將應(yīng)用重新打包后產(chǎn)生的應(yīng)用稱為重打包應(yīng)用。如果將重打包應(yīng)用進(jìn)行分類,可以根據(jù)其重打包的目的以及其它因素將其分為替換廣告庫(kù)版、漢化版、功能擴(kuò)充版。
2 基于代碼克隆檢測(cè)技術(shù)的Android應(yīng)用重打包檢測(cè)
Android應(yīng)用重打包檢測(cè)技術(shù)對(duì)應(yīng)用程序的檢測(cè),主要包括預(yù)處理、提取特征、分析相似度三個(gè)階段。
在應(yīng)用程序的預(yù)處理階段,主要工作就是通過(guò)相應(yīng)的技術(shù)手段,將應(yīng)用程序進(jìn)行反編譯,并且進(jìn)行過(guò)濾操作,從而可以得到被檢測(cè)應(yīng)用的核心代碼。由于Android應(yīng)用程序一般都具有第三方代碼庫(kù),并且都進(jìn)行了代碼的混淆,所以給預(yù)處理階段帶來(lái)了很大的困難。比如第三方庫(kù)中的有些代碼與核心代碼相似度較高,進(jìn)行過(guò)濾操作中不容易進(jìn)行區(qū)別等。利用Android應(yīng)用重打包檢測(cè)技術(shù),可以事先列舉第三方庫(kù)白名單,這樣就能避免很多的麻煩。
特征提取階段是整個(gè)Android應(yīng)用重打包檢測(cè)中最關(guān)鍵的步驟,特征提取的準(zhǔn)確性,關(guān)系著對(duì)特征的描述,關(guān)系著后續(xù)的對(duì)比分析結(jié)果的準(zhǔn)確性?;诳寺〈a檢測(cè)方法的Android應(yīng)用重打包檢測(cè)中的特征提取,主要是對(duì)不同的計(jì)數(shù)環(huán)境下變量出現(xiàn)次數(shù)當(dāng)做特征,然后通過(guò)相關(guān)的計(jì)算,得到每一個(gè)變量的特征向量,通過(guò)矩陣的構(gòu)建,將應(yīng)用程序的特征表示出來(lái),然后就能進(jìn)行抽象的描述。
在分析相似度階段,主要是通過(guò)對(duì)正版的應(yīng)用程序以及檢測(cè)的應(yīng)用程序之間的相似代碼所占比重進(jìn)行計(jì)算,通過(guò)兩個(gè)應(yīng)用程序代碼塊特征技術(shù)矩陣的比對(duì),判斷兩者代碼塊的相似途徑。其中,計(jì)算特征向量間的相似度,可以實(shí)現(xiàn)對(duì)特征矩陣的比對(duì)。對(duì)于每一個(gè)變量的特征計(jì)數(shù)向量相似度的計(jì)算,一般都是對(duì)向量余弦值的計(jì)算比對(duì)得到的,向量余弦值就是兩個(gè)向量之間的夾角余弦。對(duì)于代碼塊相似度的分析就是對(duì)于兩個(gè)代碼塊,通過(guò)計(jì)數(shù)矩陣以及最大匹配度等的計(jì)算、對(duì)比得到。通過(guò)對(duì)特征向量以及代碼塊的相似度分析,就能夠?qū)?yīng)用程序的相似度進(jìn)行分析,判斷重打包應(yīng)用程序的存在,并分析其進(jìn)行惡意改動(dòng)的內(nèi)容。
通過(guò)Android應(yīng)用重打包檢測(cè)技術(shù),可以實(shí)現(xiàn)對(duì)重打包應(yīng)用程序的檢測(cè),很大程度上凈化了移動(dòng)市場(chǎng),確保了移動(dòng)用戶使用應(yīng)用程序時(shí)的信息、隱私等的安全。相信隨著我國(guó)科學(xué)技術(shù)的不斷發(fā)展,這項(xiàng)檢測(cè)技術(shù)會(huì)不斷的被完善,發(fā)揮其更大的作用,為我國(guó)應(yīng)用程序的發(fā)展提供更優(yōu)越的環(huán)境。
3 總結(jié)
隨著我國(guó)社會(huì)經(jīng)濟(jì)的快速發(fā)展,特別是科學(xué)技術(shù)水平的提高,移動(dòng)設(shè)備已經(jīng)逐漸成為人類生活、工作等方面必不可少的一部分,為人類活動(dòng)提供了很大的便利。移動(dòng)設(shè)備中各項(xiàng)功能的實(shí)現(xiàn)使用是通過(guò)應(yīng)用程序,目前Android應(yīng)用程序在移動(dòng)市場(chǎng)中所占的比重很大。由于Android應(yīng)用程序的特征以及優(yōu)越性,很多惡意的開發(fā)者,對(duì)應(yīng)用進(jìn)行了重新打包,并將重打包應(yīng)用發(fā)布到市場(chǎng)中,影響了原來(lái)開發(fā)者的版權(quán)利益的同時(shí),也給應(yīng)用使用者的信息等隱私帶來(lái)了安全隱患。該文提出的基于克隆代碼檢測(cè)方法的Android應(yīng)用重打包檢測(cè)技術(shù),可以準(zhǔn)確的檢測(cè)出移動(dòng)市場(chǎng)中的重打包應(yīng)用,對(duì)維護(hù)市場(chǎng)穩(wěn)定具有重大的意義。
參考文獻(xiàn):
[1] 王浩宇,王仲禹,郭耀,等.基于代碼克隆檢測(cè)技術(shù)的Android應(yīng)用重打包檢測(cè)[J].軟件維護(hù)與演化技術(shù)???014,44(1):142-157.
[2] 任浩,史慶慶,張麗萍,等.克隆代碼檢測(cè)方法綜述[J].軟件開發(fā)與設(shè)計(jì),2011,25(11):19-20.
[3] 王菲飛.基于Android平臺(tái)的手機(jī)惡意代碼檢測(cè)與防護(hù)技術(shù)研究[J].北京交通大學(xué)學(xué)報(bào),2012,29(5):326-327.