一種app應用重打包檢測方法
【技術領域】
[0001] 本發明涉及一種APP應用重打包檢測方法。
【背景技術】
[0002] 隨著移動互聯網的發展,越來越多的人在手機上進行傳統的互聯網活動,例如看 視頻、支付、購物、登陸社交網站等。智能手機在日常生活中占有越來越重要的地位,極大地 豐富和便利了大家的生活。與此同時,各種惡意手機攻擊軟件層出不窮。重打包APP是手機 惡意軟件的重要來源,破壞了Android生態系統的健康發展,導致開發者的利益受到損失, 促進了惡意軟件的傳播,危害普通用戶的安全隱私。重打包的APP和原來的APP相比,大體 上保持了不變但是會增加或者了刪除一些功能,如替換APP中的一些圖片,改掉URL中的地 址,加載釣魚網站的網頁,或者加入一些額外模塊來竊取用戶的信息。
[0003] HybridAPP是指介于WebAPP和NativeAPP這兩者之間的APP,同時米用html 語言和java語言進行開發,兼具了WebAPP和NativeAPP兩者的優勢,具有很好的跨平 臺的優勢。同時HybridAPP與NativeAPP和WebAPP又有較大的區別,HybridAPP分為 Native層和Web層,Native層主要用java語言實現,Web層主要使用HTML5實現,而Native APP主要由java代碼實現。關于NativeAPP重打包的檢測方法主要是將可疑APK與原始 APK進行比較,根據比較內容的相似性來判斷是否重打包,相似度越高,且APK的簽名不同, 那么該APK就是重打包的。HybridAPP與NativeAPP相比,反編譯更加容易,因為Native APP主要是用java代碼實現,如果想要對NativeAPP重打包必須進行反編譯為java代碼 再進行修改。而HybridAPP主要是由Html5實現,只要對APK文件進行解壓就可以看到主 要的Web實現代碼,攻擊者很容易讀懂Html和JavaScript代碼,從而輕而易舉的實現修改 以及重打包。因此HybridAPP比NativeAPP更容易被重打包。
[0004] 專利CN201210204247所述方案公開了一種安卓市場中重包裝應用的檢測方法, 該方法根據各個安卓應用的dex文件計算出所使用字符串的長度,將此作為區分不同應用 的特征碼,通過計算不同應用的特征碼之間的編輯距離得到不同安卓應用之間的相似度, 并將該相似度與給定閾值進行比較,從而確定是否為重包裝應用。本發明可以作為檢測 安卓惡意軟件的一種有效輔助手段,但這種方法主要是針對NativeAPP,不能很好地解決 HybridAPP的重打包問題,并且當找不到原始APP時,這種方法將無法檢測一個APP是不是 重打包的APP。
[0005] 專利CN201410261034所述方案公開了一種對Android重打包惡意軟件的惡意代 碼的檢測、切除和恢復的方法,通過對已知惡意程序的惡意入口點類建立由模糊哈希值構 成的特征庫,用于與反匯編后的待檢測程序的入口點類進行匹配;然后依次切除被重打包 加入的完整的惡意代碼片段以及惡意代碼的資源文件,最后找出重打包過程中對原程序實 施修改的代碼片段,恢復其原有功能。本發明針對當前Android平臺日益嚴重的惡意程序 使用的重打包植入惡意代碼這一最主要傳播特征,檢測和切除那些正常程序中植入的惡意 代碼部分。這種方法主要是針對惡意代的檢測,并不是重打包的檢測問題,這種針對惡意 代碼來對重打包進行檢測具有較大的局限性。如果重打包只是替換了原版APP中的一些圖 片或一些資源,則這種重打包檢測方法將會檢測不到,并且這種方法也是主要針對Native APP,由于HybridAPP與NativeAPP程序結構存在差異,這種方法對于HybridAPP不適用。
[0006] 專利CN201310438647所述方案公開了一種基于應用程序編程接口的安卓重打包 應用檢測方法。首先對應用程序文件進行處理,得到smali代碼文件;對于每一個文件夾, 從smali代碼中提取出安卓應用程序編程接口的使用情況,統計頻率信息;然后通過文件 夾之間的相互比較來進行聚類,將相似度高、重復數量多的文件夾視為第三方庫;去除第三 方庫干擾之后,再以應用程序文件為單位,對相似度高的程序文件進行聚類;最后結合作者 簽名信息,判斷應用程序之間是否具有重打包關系。利用本發明提供的技術方案,可以在 大規模應用市場級別的應用中對重打包應用進行自動的檢測,有很高的效率以及準確性。 但該方法主要是針對NativeAPP,沒有考慮HybridAPP與NativeAPP的差異,所以對于 HybridAPP不適用,并且當找不到原始APP時,這種方法將無法檢測一個APP是不是重打包 的APP。
[0007] 專利US2014082729A所述方案公開了一種通過風險分析來計算出一個重打包的 APP的風險度,該風險分析方法通過計算該APP中是否有惡意代碼來判斷該APP是否是經過 重打包,采用了黑名單的方法進行匹配。該方法對重打包檢測具有較大的局限性,如果重打 包時只是替換了原版APP中的一些資源文件,這種檢測方法將會很難檢測到,并且這種方 法也是主要針對NativeAPP,對于HybridAPP不適用。
【發明內容】
[0008] 本發明目的在于提出一種APP應用重打包檢測方法,以解決現有應用重打包方法 對Hybrid APP應用適用性不強的技術問題。
[0009] 為此,本發明提出一種APP應用重打包檢測方法,用于檢測APP打包生成的安裝包 是否經過重打包處理,包括以下步驟:判斷所述安裝包所含的每個文件內部是否具有一致 性和/或所含的不同文件之間是否具有一致性,若具有一致性,則判斷所述安裝包未經過 重打包處理,若不具有一致性,則判斷所述安裝包經過重打包處理。
[0010] 優選地,判斷所述安裝包所含的每個文件內部是否具有一致性和/或所含的不同 文件之間是否具有一致性可采用下述方式中的一種或幾種進行:
[0011] 方式一、判斷所述安裝包訪問的本地文件與所述安裝包所含的文件是否具有一致 性;
[0012] 方式二、判斷所述安裝包訪問的網絡文件鏈接地址與所述APP對應的主域名是否 具有一致性;
[0013] 方式三、判斷所述安裝包中網頁文件的內容是否具有一致性;
[0014] 方式四、判斷所述安裝包中不同類型文件之間的應用類別是否具有一致性。
[0015] 優選地,采用所述方式一時,所述APP重打包檢測方法包括以下步驟:
[0016] S31、獲取所述安裝包所含的所有解壓文件以及解壓文件名;
[0017]S32、獲取所述安裝包訪問的所有本地文件名;
[0018]S33、對每一個本地文件名進行如下處理:判斷所述本地文件名與每一個解壓文 件名的文件名相似度,若所述本地文件名與所有解壓文件名的文件名相似度都小于第一閾 值,則所述安裝包經過重打包處理;若所述本地文件名與某一所述解壓文件名的文件名相 似度不小于第一閾值,則所述安裝包未經過重打包處理。
[0019] 優選地,采用所述方式二時,所述APP重打包檢測方法包括以下步驟:
[0020] S41、獲取所述安裝包所含的所有解壓文件;
[0021 ] S42、獲取所述安裝包訪問的所有網絡文件鏈接地址;
[0022] S43、對每一個鏈接地址進行如下處理:判斷所述鏈接地址與白名單中每一個子域 名的域名相似度,若所述鏈接地址與所有子域名的域名相似度都小于第二閾值,則所述安 裝包經過重打包處理;若所述鏈接地址與某一子域名的域名相似度不小于第二閾值,則所 述安裝包未經過重打包處理;其中,所述白名單包括與所述APP對應的子域名。
[0023] 優選地,采用所述方式三時,所述APP重打包檢測方法包括以下步驟:
[0024]S51、獲取所述安裝包中每一個網頁文件的內容特征值,記第i個網頁文件的內容 特征值為H(i);
[0025] S52、獲取所述安裝包中所有網頁文件之間的內容