鬼佬大哥大
  • / 12
  • 下載費用:30 金幣  

一種基于APK加殼軟件動態行為的查殼方法.pdf

摘要
申請專利號:

CN201510740551.6

申請日:

2015.11.04

公開號:

CN105205398A

公開日:

2015.12.30

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 21/56申請日:20151104|||公開
IPC分類號: G06F21/56(2013.01)I 主分類號: G06F21/56
申請人: 北京鼎源科技有限公司
發明人: 文偉平
地址: 100086 北京市海淀區知春路113號銀網中心A座606室
優先權:
專利代理機構: 北京萬象新悅知識產權代理事務所(普通合伙) 11360 代理人: 張肖琪
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510740551.6

授權公告號:

||||||

法律狀態公告日:

2018.03.09|||2016.01.27|||2015.12.30

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

本發明公布了一種基于APK加殼軟件動態行為的查殼方法,通過安卓系統的Hook函數,針對殼程序對系統函數和特征函數的調用進行動態行為監控,當被監控的函數被調用,則跳轉到Hook函數進行記錄,再通過特征比對得到相應的殼程序的類型;其中,通過Hook函數分別檢測APK加殼軟件對通用系統函數和特征函數的調用行為,構造得到加殼調用通用系統函數特征和加殼調用特征函數特征;再建立相應的特征庫。查殼時,啟動某一加殼的程序;通過Hook函數對加殼程序的函數調用進行動態行為監控,記錄函數調用特征與特征庫進行匹配,得出查殼結果。本發明可有效地對主流APK殼的類型進行檢測,提高分析加殼惡意代碼的準確性和效率。

權利要求書

權利要求書
1.  一種基于APK加殼軟件動態行為的查殼方法,所述查殼方法通過安卓系統的Hook函數,針對殼程序對系統函數和特征函數的調用進行動態行為監控,一旦被監控的函數被調用,則跳轉到Hook函數中進行記錄,再通過特征比對,得到加殼的程序相應的殼程序的類型;具體包括如下步驟:
1)通過Hook函數對加殼軟件的函數調用進行動態行為監控,分別檢測APK加殼軟件對通用系統函數和特征函數的調用行為,構造得到所述APK加殼軟件的加殼函數調用特征,包括加殼調用通用系統函數特征和加殼調用特征函數特征;
2)啟動某一加殼的程序;
3)針對步驟2)所述加殼的程序,通過Hook函數對加殼程序的函數調用進行動態行為監控,判斷加殼程序調用的函數是否是特征函數;
4)如果加殼程序調用的函數是特征函數,則將所述特征函數的名稱與特征函數特征庫中的加殼調用特征函數特征進行匹配,若找到特征匹配項,則輸出相應的殼類型,結束操作;若未找到特征匹配項,則返回步驟3),通過Hook函數繼續監控被調用的函數;
5)如果加殼程序調用的函數不是特征函數,記錄所述被調用函數的函數調用序列和函數調用參數;返回步驟3),通過Hook函數繼續監控被調用的函數;
6)所述APK加殼的程序(原程序)成功啟動后,將步驟5)記錄的函數調用序列和函數調用參數與步驟1)中的通用系統函數特征庫中的加殼調用通用系統函數特征進行匹配,匹配成功則得出加殼軟件的類型;匹配不成功則輸出未知殼。

2.  如權利要求1所述基于APK加殼軟件動態行為的查殼方法,其特征是,步驟1)所述檢測APK加殼軟件對通用系統函數的調用行為,構造通用系統函數特征庫包括如下步驟:
1A)殼程序一啟動即進入Hook函數,記錄即將加載殼程序的動態鏈接庫a.so;
1B)加載殼程序的動態鏈接庫a.so;
1C)進入Hook函數,記錄即將加載殼程序的動態鏈接庫b.so;
1D)加載殼程序的動態鏈接庫b.so;
1E)原程序正常啟動;
1F)得到函數調用序列,作為加殼調用通用系統函數特征;
1G)將1F)所述函數調用序列加入到通用系統函數特征庫。

3.  如權利要求1所述基于APK加殼軟件動態行為的查殼方法,其特征是,步驟1)所 述檢測加殼軟件對特征函數的調用行為,具體為:使用IDA逆向工具對加殼軟件的主程序或動態鏈接程序進行逆向,通過人工分析匯編代碼邏輯,定位涉及核心算法的函數,得到加殼軟件在解密原程序前調用的特征函數,將所述特征函數的名稱作為加殼調用特征函數特征。

4.  如權利要求1所述基于APK加殼軟件動態行為的查殼方法,其特征是,步驟1)所述檢測APK加殼軟件具體為通過分別檢測多種類型的加殼軟件,得到所述多種類型加殼軟件的加殼調用通用系統函數特征和加殼調用特征函數特征,建立多種類型加殼軟件的加殼調用通用系統函數特征和加殼調用特征函數特征數據庫。

說明書

說明書一種基于APK加殼軟件動態行為的查殼方法
技術領域
本發明屬于移動客戶端App安全技術,涉及安卓應用程序安裝包(APK,AndroidPackage)的加殼,尤其涉及一種基于APK加殼軟件動態行為的查殼方法。
背景技術
隨著移動端技術應用的日益普及,移動軟件產業得以飛速發展,與此同時,針對移動端的木馬、病毒惡意代碼軟件也越來越多。獵豹移動安全數據顯示,2014年全球感染病毒的安卓手機達2.8億部,平均每天80萬部安卓手機中毒,中國以近1.2億部手機中毒高居榜首。據360互聯網安全中心的報告顯示,2014全年僅360互聯網安全中心累計截獲Android平臺新增惡意程序樣本326萬個,為2013年的近4倍。
安卓手機的應用采用java開發,惡意代碼也不例外。由于java解釋語言的特性,在應用程序不加殼的情況下,通過靜態分析技術可以較為容易的逆向得出木馬和病毒的源碼,然后通過分析檢測斷定是否存在木馬病毒的特征,從而對木馬病毒進行查殺。殼程序是一種可以對第三方軟件進行加密或是變換結構而不影響其運行功能以達到躲避被惡意逆向分析的軟件程序。加殼操作基于被保護程序的二進制代碼,與被保護程序的邏輯相分離,因而穩定性高,適用度廣。殼程序除了可以用于保護軟件,在惡意代碼反檢測領域中也有廣泛的應用。在惡意代碼反檢測領域,為了對加殼的惡意代碼進行逆向分析,就必須先進行脫殼,針對不同的殼程序必須使用對應的脫殼程序進行脫殼,所以脫殼的第一步就是對殼進行檢測,即查殼。
現有查殼方法大多基于靜態文件特征進行查殼,如查殼工具PEID,是針對殼程序的二進制代碼的特征碼來進行查殼。這種基于靜態文件特征進行查殼的方法存在較大的局限性,其存在的問題是可通過修改二進制文件抹去特征碼或修改特征碼來混淆查殼的結果,使得查殼結果的準確性低,查殼效率低。
發明內容
為了克服上述現有技術的不足,本發明提供一種基于APK加殼軟件動態行為的查殼方法,通過安卓系統的Hook函數針對殼程序對系統函數和特征函數的調用進行監控,使加殼的程序運行在部署了監控程序的環境中,一旦被監控的函數被調用,則跳轉到Hook函數中進行記錄,從而獲得加殼軟件對系統函數和特征函數的調用特征,作為檢測特征;再通過特征比 對,得到加殼的程序相應的殼程序的類型;本發明可有效地對主流APK殼的類型進行檢測,提高分析加殼惡意代碼的準確性和效率。
本發明提供的技術方案是:
一種基于APK加殼軟件動態行為的查殼方法,所述查殼方法通過安卓系統的Hook函數,針對殼程序對系統函數和特征函數的調用進行動態行為監控,一旦被監控的函數被調用,則跳轉到Hook函數中進行記錄,再通過特征比對,得到加殼的程序相應的殼程序的類型;具體包括如下步驟:
1)通過Hook函數對加殼軟件的函數調用進行動態行為監控,分別檢測APK加殼軟件對通用系統函數和特征函數的調用行為,構造得到所述APK加殼軟件的加殼函數調用特征,包括加殼調用通用系統函數特征和加殼調用特征函數特征;
2)啟動某一加殼的程序;
3)針對步驟2)所述加殼的程序,通過Hook函數對加殼程序的函數調用進行動態行為監控,判斷加殼程序調用的函數是否是特征函數;
4)如果加殼程序調用的函數是特征函數,則將所述特征函數的名稱與特征函數特征庫中的加殼調用特征函數特征進行匹配,若找到特征匹配項,則輸出相應的殼類型,結束操作;若未找到特征匹配項,則返回步驟3),通過Hook函數繼續監控被調用的函數;
5)如果加殼程序調用的函數不是特征函數,記錄所述被調用函數的函數調用序列和函數調用參數;返回步驟3),通過Hook函數繼續監控被調用的函數;
6)所述APK加殼的程序(原程序)成功啟動后,將步驟5)記錄的函數調用序列和函數調用參數與步驟1)中的通用系統函數特征庫中的加殼調用通用系統函數特征進行匹配,匹配成功則得出加殼軟件的類型;匹配不成功則輸出未知殼。
針對上述基于APK加殼軟件動態行為的查殼方法,進一步地,步驟1)所述檢測APK加殼軟件對通用系統函數的調用行為,構造通用系統函數特征庫包括如下步驟:
1A)殼程序一啟動即進入Hook函數,記錄即將加載殼程序的動態鏈接庫a.so;
1B)加載殼程序的動態鏈接庫a.so;
1C)進入Hook函數,記錄即將加載殼程序的動態鏈接庫b.so;
1D)加載殼程序的動態鏈接庫b.so;
1E)原程序正常啟動;
1F)得到函數調用序列,作為加殼調用通用系統函數特征;
1G)將1F)所述函數調用序列加入到通用系統函數特征庫。
步驟1)所述檢測加殼軟件對特征函數的調用行為,具體為:使用IDA逆向工具對加殼軟件的主程序或動態鏈接程序進行逆向,通過人工分析匯編代碼邏輯,定位涉及核心算法的函數,得到加殼軟件在解密原程序前調用的特征函數,將所述特征函數的名稱作為加殼調用特征函數特征。
步驟1)所述檢測APK加殼軟件具體為通過分別檢測多種類型的加殼軟件,得到所述多種類型加殼軟件的加殼調用通用系統函數特征和加殼調用特征函數特征,建立多種類型加殼軟件的加殼調用通用系統函數特征和加殼調用特征函數特征數據庫。
與現有技術相比,本發明的有益效果是:
現有查殼方法大多基于靜態文件特征進行查殼,基于靜態文件特征進行查殼的方法存在較大的局限性,可通過修改二進制文件抹去特征碼或修改特征碼來混淆查殼的結果,使得查殼結果的準確性低,查殼效率低。本發明提供一種基于APK加殼軟件動態行為的查殼方法,使加殼的程序運行在部署了監控程序的環境中,通過安卓系統的Hook函數針對殼程序對系統函數和特征函數調用的動態行為進行監控,一旦被監控的函數被調用,則跳轉到Hook函數中進行記錄,從而獲得加殼軟件對系統函數和特征函數的調用特征,作為檢測特征;再通過特征比對,得到加殼的程序相應的殼程序的類型。利用本發明提供的技術方案,可提高混淆殼類型的難度,由于為了繞過本發明的查殼方法,需要在獲得殼程序源碼的基礎對原有殼程序的調用流程進行修改,因此,本發明可以有效地對主流APK殼的類型進行檢測,提高分析加殼惡意代碼的準確性和效率。
附圖說明
圖1是加殼的程序正常啟動的流程框圖。
圖2是本發明實施例使用通用系統函數特征庫和特征函數特征庫進行查殼的流程框圖。
圖3是本發明實施例構造通用系統函數特征庫的流程框圖。
圖4是本發明實施例構造特征函數特征庫的流程框圖。
圖5是使用本發明提供的查殼方法部署查殼環境后,加殼的程序啟動的流程框圖。
具體實施方式
下面結合附圖,通過實施例進一步描述本發明,但不以任何方式限制本發明的范圍。
本發明提供一種基于APK加殼軟件動態行為的查殼方法,主要針對市場主流加固軟件如梆梆加固、愛加密加固、娜迦加固、通付盾、騰訊加固、360加固等,通過安卓系統的Hook函數針對殼程序對系統函數和特征函數的調用進行監控,使加殼的程序運行在部署了監控程序的環境中,一旦被監控的函數被調用,則跳轉到Hook函數中進行記錄,從而獲得加殼軟件對系統函數和特征函數的調用特征,作為檢測特征;再通過特征比對,得到加殼的程序相應的殼程序的類型;本發明可有效地對主流APK殼的類型進行檢測,提高分析加殼惡意代碼的準確性和效率。
圖1是加殼的程序正常啟動的流程框圖。一般地,加殼程序的正常啟動流程包括步驟11)和12):
11)運行殼程序(代碼),包括:
加載殼程序的動態鏈接庫a.so,運行a.so中的代碼對加密后的原程序源碼進行解密;
加載殼程序的動態鏈接庫b.so,運行b.so中的代碼對解密后的原程序源碼進行內存布局;
加載殼程序的動態鏈接庫c.so,運行c.so中的代碼對布局好的源程序源碼進行重定向,并跳轉到原程序的啟動代碼處;
12)原程序正常啟動。
在安卓系統中,Hook函數即鉤子函數,是一個處理消息的程序段,通過系統調用,把它掛入系統。每當特定的消息發出,在沒有到達目的窗口前,鉤子函數(程序)就先捕獲該消息,亦即鉤子函數先得到控制權,這時鉤子函數即可以加工處理(改變)該消息,也可以不作處理而繼續傳遞該消息,還可以強制結束消息的傳遞。本發明提供的查殼方法通過使用Hook函數針對殼程序對系統函數和特征函數的調用進行監控,讓加殼的程序運行在部署了監控程序的環境中,一旦被監控的函數被調用,則跳轉到hook函數中進行記錄,從而獲得加殼軟件對系統函數和特征函數的調用特征,作為檢測特征;再通過特征比對,得到加殼的程序相應的殼程序的類型。
圖2是本實施例基于APK加殼軟件動態行為使用通用系統函數特征庫和特征函數特征庫進行查殼的流程框圖。本發明提供的基于APK加殼軟件動態行為的查殼方法包括如下步驟:
1)分別檢測APK加殼軟件對通用系統函數和特征函數的調用行為,構造得到所述APK加殼軟件的加殼函數調用特征,包括加殼調用通用系統函數特征和加殼調用特征函數特征;
步驟1)所述檢測APK加殼軟件具體為通過分別檢測多種類型的加殼軟件,得到所述多 種類型APK加殼軟件的加殼調用通用系統函數特征和加殼調用特征函數特征,建立多種類型加殼軟件的加殼調用通用系統函數特征和加殼調用特征函數特征數據庫。
圖3是本發明實施例構造通用系統函數特征庫的流程框圖;步驟1)所述檢測APK加殼軟件對通用系統函數的調用行為,具體為:Hook函數加載動態鏈接庫函數,通過Hook函數按順序輸出所加載的動態鏈接庫序列,該序列的庫名、順序和數量即加殼調用通用系統函數特征。本實施例中,具體地,檢測APK加殼軟件對通用系統函數的調用行為,構造通用系統函數特征庫包括如下步驟:
1A)殼程序一啟動即進入Hook函數,記錄即將加載殼程序的動態鏈接庫a.so;
1B)加載殼程序的動態鏈接庫a.so;
1C)進入Hook函數,記錄即將加載殼程序的動態鏈接庫b.so;
1D)加載殼程序的動態鏈接庫b.so;
1E)原程序正常啟動;
1F)得到函數調用序列,作為加殼調用通用系統函數特征;
1G)將上述函數調用序列加入到通用系統函數特征庫。
圖4是本發明實施例構造特征函數特征庫的流程框圖;步驟1)所述檢測加殼軟件對特征函數的調用行為,具體為:使用IDA逆向工具對加殼軟件的主程序(原程序)或動態鏈接程序進行逆向,通過人工分析匯編代碼邏輯,定位涉及核心算法的函數(例如定位對加密的原程序源碼進行解密的算法時,需要定位核心算法的一個“關鍵詞”,可以采取如下操作:查找常用加解密動態鏈接庫的導出函數,找到該函數在原程序中的調用位置即可確定解密算法的位置),得到加殼軟件在解密原程序前調用的特征函數,將所述特征函數的名稱作為加殼調用特征函數特征;進一步構造獲得特征函數特征庫;
2)啟動某一加殼的程序;
所述APK加殼的程序開始啟動時首先啟動加殼軟件;
3)針對步驟2)所述加殼的程序,采用動態行為監控方法,具體通過Hook函數對加殼程序的函數調用進行監控,判斷加殼程序調用的函數是否是特征函數;
4)如果加殼程序調用的函數是特征函數,則將所述特征函數的名稱與特征函數特征庫中的加殼調用特征函數特征進行匹配,若找到特征匹配項,則輸出相應的殼類型,結束操作;若未找到特征匹配項,則返回步驟3),Hook函數繼續監控被調用的函數;
5)如果加殼程序調用的函數不是特征函數,則Hook函數繼續監控被調用的函數,記錄所述被調用函數的函數調用序列和函數調用參數;再返回步驟3),通過Hook函數繼續監控被調用的函數;
本實施例中,上述使用hook技術對系統函數和特征函數的調用進行監控,然后讓加殼的程序運行在部署了監控程序的環境中,一旦被監控的函數被調用,則跳轉到hook函數中去對該函數調用的參數進行記錄。
6)所述APK加殼的程序(原程序)成功啟動后,將步驟5)記錄的函數調用序列和函數調用參數與步驟1)中的通用系統函數特征庫中的加殼調用通用系統函數特征進行匹配,匹配成功則得出加殼軟件的類型;匹配不成功則輸出未知殼。
上述基于APK加殼軟件動態行為的查殼方法中,所述動態行為監控方法具體是修改正常函數的起始地址為Hook函數的起始地址,這樣調用正常函數的時候就會跳轉到Hook函數去執行,Hook函數執行完后跳轉到正常函數的起始地址恢復正常執行流程,當加殼的程序啟動后,一旦被監控的函數被程序調用,則跳轉到Hook函數中對所述函數的調用參數進行記錄。
本實施例中,步驟1)的具體實施方式如下,包括A和B:
A.針對加殼軟件通用系統函數調用流程制定檢測特征,主要執行以下操作:
A1.行為檢測:大部分加殼軟件為了安全性都將解密源程序的代碼寫入動態鏈接庫里,在程序執行前動態加載,由于不同加殼軟件加載的動態鏈接庫的文件名、加載的順序都不一樣,這就可以作為鑒定的依據,依靠hook技術,可以獲取加殼軟件在執行過程中加載動態鏈接庫的文件名及其加載順序,針對不同加殼程序對這部分信息進行統計;
A2.特征構造:根據行為檢測中收集的統計信息,針對某一加殼軟件的唯一函數調用序列構建檢測特征。
B.針對加殼軟件特征函數調用制定檢測特征,主要執行以下操作:
B1.行為檢測:使用IDA等逆向工具對加殼軟件的主程序或動態鏈接程序進行靜態分析,通過人工分析找到涉及核心算法的函數;
B2.特征構造:根據人工分析找到的函數,作為某一加殼軟件的特征函數,即若在解密源程序過程中調用了該函數,則可以斷定很可能就是這種殼程序。
上述步驟3)中,程序正常啟動后,說明殼程序已運行完畢,將動態監控過程中記錄的函數調用序列和參數與檢測特征進行匹配,若找到匹配項,則展示對應的殼類型,若未找到匹配項,則顯示為未知殼。
圖5是使用本發明提供的查殼方法部署查殼環境后,加殼的程序啟動的流程框圖。在部署了本發明的查殼環境后,查殼時,啟動某一加殼的程序的流程如下:
101)運行殼程序,準備加載殼程序的動態鏈接庫a.so,由于加載動態鏈接庫的函數已被hook,所以會先運行設置的hook函數,進入hook函數,通過加載動態鏈接庫的函數的參數獲知即將加載的動態鏈接庫文件名為a.so,記錄加載a.so,hook函數執行完畢,進入正常的函數流程即加載a.so,運行a.so中的代碼對加密后的原程序源碼進行解密;
102)準備加載動態鏈接庫b.so,進入hook函數,通過加載動態鏈接庫的函數的參數獲知即將加載的動態鏈接庫文件名為b.so,記錄加載b.so,hook函數執行完畢,進入正常的函數流程即加載b.so,運行b.so中的代碼對解密后的原程序源碼進行內存布局;
103)加載動態鏈接庫c.so,進入hook函數,通過加載動態鏈接庫的函數的參數獲知即將加載的動態鏈接庫文件名為c.so,記錄加載c.so,hook函數執行完畢,進入正常的函數流程即加載c.so,運行c.so中的代碼對布局好的源程序源碼進行重定向,并跳轉到原程序的啟動代碼處;
104)原程序正常啟動;
105)查殼程序將獲取的動態鏈接庫加載序列a.so、b.so、c.so與特征庫中的序列進行匹配,若找到匹配項,則輸出對應的殼類型,若未找到,輸出未知殼。
需要注意的是,公布實施例的目的在于幫助進一步理解本發明,但是本領域的技術人員可以理解:在不脫離本發明及所附權利要求的精神和范圍內,各種替換和修改都是可能的。因此,本發明不應局限于實施例所公開的內容,本發明要求保護的范圍以權利要求書界定的范圍為準。

關 鍵 詞:
一種 基于 APK 軟件 動態 行為 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種基于APK加殼軟件動態行為的查殼方法.pdf
鏈接地址:http://www.wwszu.club/p-6405709.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大