一種識別Android APP加固的方法及檢測方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明屬于網(wǎng)絡(luò)信息安全技術(shù)領(lǐng)域,特別涉及一種識別Android APP加固的方法。
【背景技術(shù)】
[0002]隨著Android移動終端設(shè)備的普及,應(yīng)用于Android上的APP (Applicat1n,應(yīng)用程序)也隨之被大量開發(fā),各種不同類型APP的應(yīng)用有效提升了人們?nèi)粘I钚省?br>[0003]但由此也帶來了各種風(fēng)險,APP在安裝過程中會從Android移動終端設(shè)備上獲取各種權(quán)限,一旦惡意APP獲得相應(yīng)權(quán)限,Android移動終端系統(tǒng)防護將會失效,由此導(dǎo)致各種風(fēng)險的發(fā)生,比如存在移動終端設(shè)備被他人冒用、設(shè)備上的惡意APP可以隨意運行、設(shè)備上的網(wǎng)絡(luò)接入和USB、藍牙、紅外等端口可以被隨意連接使用等問題。這些問題嚴(yán)重影響了移動終端系統(tǒng)的安全性,容易導(dǎo)致使用者重要信息的泄露等諸多問題。
[0004]為避免正常的APP被反編譯、惡意二次打包及插入惡意代碼的發(fā)生,通常APP開發(fā)完成后對其進行加固,然后形成安裝包;另外,有些惡意軟件通過加固后偽裝成正常的APP安裝包提供給用戶使用。由此導(dǎo)致正常APP安裝包與偽裝的APP安裝包混雜在各類Android應(yīng)用商城中。
[0005]普通使用者無法辨別安裝的APP安裝包是否為正常應(yīng)用程序,因此,需要殺毒軟件對APP安裝包進行掃描。而殺毒廠商對加固APP和非加固APP采取不同的查殺方式,在進行查殺APP病毒之前,先識別APP加固,可對待測APP進行快速分類,提高查殺速率。對企圖采用APP加固方式逃過殺毒軟件檢測的惡意軟件,若先識別APP加固,可提高查殺的準(zhǔn)確率。
[0006]另外,如果APP能夠快速被識別是否加固,逆向分析人員即可及時的根據(jù)不同的APP類型,采取不同的分析方式,能有效提高工作效率。
[0007]現(xiàn)有識別APP加固通常是采用人工的方式,其識別方式較慢,而且還存在一定的誤判,工作效率低且成本高。
[0008]因此需要一種能夠智能識別APP是否加固的技術(shù)來解決現(xiàn)有技術(shù)存在的問題。
【發(fā)明內(nèi)容】
[0009]本發(fā)明針對現(xiàn)有技術(shù)的不足,提出一種識別Android APP加固的方法,該方法能夠準(zhǔn)確識別Android APP是否經(jīng)過加固處理。
[0010]本發(fā)明所述的一種識別Android APP加固的方法具體如下:
實現(xiàn)該方法的系統(tǒng)為一監(jiān)控解析單元,所述監(jiān)控解析單元包括APP程序識別獲取模塊、APP解析模塊、組件名提取模塊、信息匹配模塊及數(shù)據(jù)庫;
所述APP程序識別獲取模塊用于讀取待檢測的Android APP程序包,并判斷待檢測的Android APP程序包的有效性;
所述APP解析模塊用于對Android APP程序包進行解析并提取Androidmainfest.xml文件和classes, dex文件; 所述組件名提取模塊用于從Androidmainfest.xml文件中獲取注冊組件列表名及從classes, dex文件中獲取聲明組件列表名;
所述信息匹配模塊用于比較所述注冊組件列表名與所述聲明組件列表名,并將比較結(jié)果存入數(shù)據(jù)庫中;
所述數(shù)據(jù)庫用于存儲識別信息及結(jié)果;
所述方法包括如下步驟:
(1)APP程序識別獲取模塊獲取待識別的AndroidAPP程序包;
(2)APP解析模塊對待識別的Android APP程序包進行解析,并從解析文件中提取Androidmainfest.xml 文件和 classes, dex 文件;
(3)組件名提取模塊從Androidmainfest.xml文件中獲取注冊組件列表名及從classes, dex文件中獲取聲明組件列表名;
(4)信息匹配模塊比較組件名提取模塊提取的注冊組件列表名及聲明組件列表名,如注冊組件列表名及聲明組件列表名相同,則確認(rèn)Android APP程序包沒有加固,如注冊組件列表名及聲明組件列表名不同,則確認(rèn)Android APP程序包被加固;
(5)信息匹配模塊將識別信息及比較結(jié)果存入數(shù)據(jù)庫中。
[0011]具體的,所述識別信息包括Android APP程序包、提取的Androidmainfest.xml文件和classes, dex文件、提取的注冊組件列表名及聲明組件列表名。
[0012]根據(jù)上述識別Android APP加固的方法,本發(fā)明還提出了一種APP加固檢測流程,具體如下:
(1)APP程序識別獲取模塊獲取待檢測的Andrο i d APP程序包,并判定待檢測的Android APP程序包是否為有效文件,如果待檢測的Android APP程序包為非有效文件,則直接轉(zhuǎn)入步驟(8),即結(jié)束檢測并將檢測結(jié)果保存到數(shù)據(jù)庫;否則進行步驟(2);
(2)APP程序識別獲取模塊判斷待檢測的Android APP程序包是否加密,如已經(jīng)加密,則直接準(zhǔn)入步驟(7);否則進行步驟(3);
(3)APP解析模塊對待識別的Android APP程序包進行解析,并從解析文件中提取Androidmainfest.xml 文件和 classes, dex 文件;
(4)APP解析模塊解析Androidmainfeast.xml文件和classes, dex文件,并判斷Androidmainfeast.xml 文件和 classes, dex 文件是否加密,如果 Androidmainfeast.xml 文件和classes, dex文件經(jīng)過加密,則直接進入步驟(7),否則進行步驟(5);
(5)組件名提取模塊從Androidmainfest.xml文件中獲取注冊組件列表名及從classes, dex文件中獲取聲明組件列表名;
(6)信息匹配模塊比較組件名提取模塊提取的注冊組件列表名及聲明組件列表名,如注冊組件列表名及聲明組件列表名相同,則確認(rèn)Android APP程序包沒有加固,如注冊組件列表名及聲明組件列表名不同,則確認(rèn)Android APP程序包被加固;
(7)信息匹配模塊確認(rèn)待檢測的AndroidAPP程序包加固并生成的檢測結(jié)果;
(8 )結(jié)束檢測,信息匹配模塊將識別信息及比較結(jié)果存入數(shù)據(jù)庫中。
[0013]本發(fā)明所述技術(shù)方案的有益效果在于:通過靜態(tài)解析APP的方式獲取APP內(nèi)的Androidmainfest.xml 和 classes, dex 文件,如果 Androidmainfeast.xml 文件和 classes,dex文件沒有加密則對其進行解析,獲取其中的注冊組件列表和聲明組件列表進行對比判斷,該種方式彌補了人工識別的所造成的誤判和時間成本,在對抗代碼混淆,敏感信息加密方面有顯著的效果。
【附圖說明】
[0014]圖1 一種識別Android APP加固的方法流程示意圖;
圖2 —種APP加固檢測流程示意圖。
【具體實施方式】
[0015]本發(fā)明主要提供了一種識別Android APP加固的方法,為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下參照附圖并舉實例對本發(fā)明做進一步說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0016]本發(fā)明涉及的相關(guān)技術(shù)術(shù)語的解釋如下:
DEX替換加固:即加固廠商通過一定的技術(shù)手段將APP中原始classes, dex加密隱藏,用加固廠商自己的classes, dex替換APP中原始classes, dex。
[0017]解密文件:加固APP運行時將原始DEX解密時所需用到的加固廠商的解密文件。
[0018]解包:即解析APP文件,獲取APP中所包含的所有文件名。
[0019]Androidmainfest.xml加固:即加固廠商通過一定的技術(shù)手段將APP中原始Androidmainfest.xml的關(guān)鍵字段進行修改,使其無法正常解析。
[0020]DEX加固:即加固廠商通過一定的技術(shù)手段將APP中原始classes, dex文件的關(guān)鍵字段進行修改,使其無法正常解析。
[0021]本發(fā)明所述技術(shù)方案是根據(jù)APP加固技術(shù)為基礎(chǔ)而提出的一種APP加固識別方法,該識別方法總體是通過對識別APP自身加密、識別Androidmainfest.xml加固、識別DEX本身加固及識別DEX替換等四個維度進行綜合分析和比較形成的,具體技術(shù)手段如下:
如圖1所示,本發(fā)明所述的一種識別Android APP加固的方法,具體如下:
實現(xiàn)該方法的系統(tǒng)為一監(jiān)控解析單元,所述監(jiān)控解析單元包括APP程序識別獲取模塊、APP解析模塊