[發(fā)明專利]一種基于逆向工程的安卓閉源服務類型信息提取方法在審
| 申請?zhí)枺?/td> | 202110557657.8 | 申請日: | 2021-05-21 |
| 公開(公告)號: | CN113296834A | 公開(公告)日: | 2021-08-24 |
| 發(fā)明(設計)人: | 曹春;廖祥森;馬曉星;徐經(jīng)緯 | 申請(專利權(quán))人: | 南京大學 |
| 主分類號: | G06F8/74 | 分類號: | G06F8/74 |
| 代理公司: | 南京樂羽知行專利代理事務所(普通合伙) 32326 | 代理人: | 李玉平 |
| 地址: | 210023 江蘇*** | 國省代碼: | 江蘇;32 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 逆向 工程 安卓閉源 服務 類型 信息 提取 方法 | ||
本發(fā)明公開一種基于逆向工程的安卓閉源服務類型信息提取方法,包括以下內(nèi)容:從安卓ROM中提取出服務編譯產(chǎn)物所處文件;結(jié)合服務所處應用或進程的配置信息,從這些文件中提取出待測服務的通信序列化函數(shù)的字節(jié)碼或ARM匯編代碼;還原源代碼中的控制流結(jié)構(gòu),以提取出服務接口的編碼與對應的序列化指令串;從序列化指令串中還原出Parcel序列化API調(diào)用,以此推斷出服務接口參數(shù)與返回值的類型信息。本方法可自動化地從安卓系統(tǒng)的編譯產(chǎn)物中提取出閉源服務類型信息,覆蓋應用服務、Java系統(tǒng)服務與Native系統(tǒng)服務,通用性強,類型模型準確度高。提取出的閉源服務類型信息,有助于對這些服務進行更高效地測試與漏洞挖掘。
技術(shù)領(lǐng)域
本發(fā)明涉及一種基于逆向工程的安卓閉源服務類型信息提取方法,屬于安卓系統(tǒng)、逆向工程等技術(shù)領(lǐng)域。
背景技術(shù)
谷歌公司發(fā)布并開源的安卓系統(tǒng)在移動互聯(lián)網(wǎng)時代占據(jù)了主導地位,吸引了越來越多攻擊者的注意。服務是安卓系統(tǒng)的核心組成部分,它不僅是安卓應用的基本組件之一,也以系統(tǒng)服務的形式封裝安卓系統(tǒng)的底層功能提供給上層使用。安卓系統(tǒng)中大量的公開服務接口是惡意程序的主要攻擊目標,利用服務中的漏洞,攻擊者不僅可以造成安卓應用甚至系統(tǒng)反復重啟,還可以繞過系統(tǒng)安全配置以竊取用戶的敏感信息。
雖然谷歌公司的安卓系統(tǒng)是開源的,但各家移動設備廠商往往都會對安卓系統(tǒng)進行定制化開發(fā)以提供更豐富的功能,出于商業(yè)競爭的考慮廠商不會公布這些定制化安卓系統(tǒng)的源碼。定制化安卓系統(tǒng)中引入的大量閉源服務,存在不小的安全隱患,如何對這些閉源服務進行安全測試有重要的研究價值。
現(xiàn)有方法往往通過模糊測試技術(shù)對閉源服務進行測試,已有方法大都采用基于變異的策略來生成服務接口測試用例,測試效果依賴于預先記錄的數(shù)據(jù)樣本質(zhì)量。不僅如此,對于具有高度結(jié)構(gòu)化類型特征的安卓服務接口來說,相較于基于變異策略的測試方法,基于生成策略的模糊測試方法由于對程序輸入有更精確的類型模型,減少了不合法輸入,測試更為高效。
生成式策略的關(guān)鍵在于獲取程序輸入的類型模型,然而對于閉源的Java與Native服務來說,以往基于Java反射、基于源代碼靜態(tài)分析、基于Binder通信數(shù)據(jù)監(jiān)控等類型信息提取方法并不完全適用。
發(fā)明內(nèi)容
發(fā)明目的:為解決現(xiàn)有技術(shù)中存在的不足,針對Java與Native類型的安卓閉源服務,提供一種基于逆向工程的服務類型信息提取方法,從服務編譯產(chǎn)物中還原出服務接口類型信息。安卓系統(tǒng)采用Binder通信協(xié)議來實現(xiàn)服務與其他組件間的調(diào)用,通信序列化過程所處函數(shù)一般根據(jù)AIDL接口定義,通過代碼生成工具自動生成。本方法以逆向工程的思路,從服務的編譯產(chǎn)物中識別出這些生成代碼的結(jié)構(gòu)特征,并還原出Parcel序列化相關(guān)的API調(diào)用,以這些API的類型和語義推斷出服務接口的類型信息。
技術(shù)方案:一種基于逆向工程的安卓閉源服務類型信息提取方法,包括以下步驟:
1)從安卓ROM中提取出后續(xù)分析所需的服務編譯產(chǎn)物所處文件:
11)Java應用服務對應APK文件;
12)Java系統(tǒng)服務對應Jar、DEX等文件;
13)Native系統(tǒng)服務對應動態(tài)鏈接庫ELF文件與init配置文件。
2)結(jié)合服務所處應用或進程的配置信息,從編譯產(chǎn)物文件中提取出待測服務的通信序列化函數(shù)實現(xiàn):
服務通信序列化函數(shù)位于Binder通信協(xié)議下的服務端Stub中,函數(shù)名為onTransact,負責將進程間調(diào)用反序列化為對本地方法的調(diào)用參數(shù),并將結(jié)果反序列化以返回給客戶端Proxy;
21)對于Java應用服務,從APK的AndroidManifest配置文件中篩選出安卓應用中的暴露服務所在的Java類名。通過數(shù)據(jù)流分析,計算出該Java應用服務實現(xiàn)類的onBind方法返回值的具體類型,服務端Stub一定是onBind方法返回值的父類;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于南京大學,未經(jīng)南京大學許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110557657.8/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:多角度復雜牛腿十字型柱的制作方法
- 下一篇:一種膠印機定距自動裁紙裝置





