應(yīng)用程序編程接口的檢測裝置及方法
【專利摘要】本發(fā)明公開了一種應(yīng)用程序編程接口的檢測裝置,包括:查詢模塊,用于從待測應(yīng)用對應(yīng)的第一安裝包中查找各個預(yù)設(shè)類型應(yīng)用程序編程接口;生成模塊,用于在第一安裝包中嵌入查找到的各個預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的各個日志記錄代碼,生成待測應(yīng)用對應(yīng)的第二安裝包;第一發(fā)送模塊,用于將第二安裝包發(fā)送至測試終端,以供測試終端下載第二安裝包,安裝并運行待測應(yīng)用,并將根據(jù)調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼所生成的日志文件發(fā)送至服務(wù)器;檢測模塊,用于檢測測試終端運行待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。本發(fā)明還公開了一種應(yīng)用程序編程接口的檢測方法。本發(fā)明提高了應(yīng)用運行的安全性。
【專利說明】
應(yīng)用程序編程接口的檢測裝置及方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及終端安全檢測技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用程序編程接口的檢測裝置及方法。
【背景技術(shù)】
[0002]在移動互聯(lián)網(wǎng)時代,隨著智能手機、PAD(平板電腦)等終端的推廣和普及,形式色色的系統(tǒng)應(yīng)用和第三方應(yīng)用應(yīng)運而生。終端在運行應(yīng)用時,通常會調(diào)用各種授權(quán)的權(quán)限對應(yīng)的API (Applicat1n Programming Interface,應(yīng)用程序編程接口 ),實現(xiàn)相應(yīng)功能。例如,當終端運行微信應(yīng)用時,若微信應(yīng)用對應(yīng)的攝像權(quán)限已授權(quán),則終端可調(diào)用攝像權(quán)限對應(yīng)的攝像頭接口,實現(xiàn)視頻通話、二維碼掃描等功能。但同時也會帶來惡意調(diào)用聯(lián)系人信息、獲取用戶地理位置信息等等問題,可能會危及用戶的隱私和安全,因此,有必要對各種應(yīng)用運行中調(diào)用的API進行檢測。但現(xiàn)有檢測中通過系統(tǒng)生成的系統(tǒng)日志,只能對系統(tǒng)應(yīng)用運行時調(diào)用的API進行檢測,而不能檢測出第三方應(yīng)用運行時調(diào)用的API,也即針對于第三方應(yīng)用存在安全隱患,應(yīng)用運行的安全性不高。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的主要目的在于提出一種應(yīng)用程序編程接口的檢測裝置及方法,旨在解決現(xiàn)有技術(shù)中應(yīng)用運行的安全性不高的技術(shù)問題。
[0004]為實現(xiàn)上述目的,本發(fā)明提供的一種應(yīng)用程序編程接口的檢測裝置,所述應(yīng)用程序編程接口的檢測裝置包括:
[0005]查詢模塊,用于解析待測應(yīng)用對應(yīng)的第一安裝包,從第一安裝包中查找各個預(yù)設(shè)類型應(yīng)用程序編程接口;
[0006]生成模塊,用于在解析的第一安裝包中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的各個日志記錄代碼,生成所述待測應(yīng)用對應(yīng)的第二安裝包;
[0007]第一發(fā)送模塊,用于將所述第二安裝包發(fā)送至測試終端,以供所述測試終端下載所述第二安裝包,安裝并運行所述待測應(yīng)用,并將根據(jù)調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼所生成的日志文件發(fā)送至服務(wù)器;
[0008]檢測模塊,用于根據(jù)接收到的所述日志文件檢測所述測試終端運行所述待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。
[0009]可選地,所述查詢模塊包括:
[0010]解壓單元,用于對所述待測應(yīng)用對應(yīng)的第一安裝包進行解壓,獲取解壓后的第一安裝包中的第一可執(zhí)行文件;
[0011]第一轉(zhuǎn)換單元,用于將獲取的第一可執(zhí)行文件轉(zhuǎn)換為可讀的匯編器文件;
[0012]查詢單元,用于查找所述匯編器文件中包含的預(yù)設(shè)類型應(yīng)用程序編程接口。
[0013]可選地,所述生成模塊包括:
[0014]嵌入單元,用于在所述匯編器文件中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼;
[0015]第二轉(zhuǎn)換單元,用于將嵌入日志記錄代碼后的所述匯編器文件轉(zhuǎn)換為第二可執(zhí)行文件;
[0016]生成單元,用于采用所述第二可執(zhí)行文件替換所述第一安裝包中的第一可執(zhí)行文件,生成所述第二安裝包。
[0017]此外,為實現(xiàn)上述目的,本發(fā)明還提出一種應(yīng)用程序編程接口的檢測裝置,所述應(yīng)用程序編程接口的檢測裝置包括:
[0018]處理模塊,用于在接收到服務(wù)器發(fā)送的第二安裝包時,下載所述第二安裝包,安裝待測應(yīng)用,其中,所述第二安裝包為所述服務(wù)器在所述待測應(yīng)用對應(yīng)的第一安裝包中嵌入各個預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼后生成;
[0019]獲取模塊,用于運行所述待測應(yīng)用,其中,在所述待測應(yīng)用運行過程中,每次調(diào)用預(yù)設(shè)類型應(yīng)用程序編程接口均運行調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口的日志記錄代碼,以生成調(diào)用的所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志文件;
[0020]第二發(fā)送模塊,用于獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器,以供所述服務(wù)器根據(jù)所述日志文件檢測所述測試終端運行所述待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。
[0021]可選地,所述應(yīng)用程序編程接口的檢測裝置還包括:
[0022]確定模塊,用于確定所述待測應(yīng)用是否測試完成;
[0023]所述第二發(fā)送模塊,用于在所述待測應(yīng)用測試完成時,獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器。
[0024]此外,為實現(xiàn)上述目的,本發(fā)明還提出一種應(yīng)用程序編程接口的檢測方法,所述應(yīng)用程序編程接口的檢測方法包括:
[0025]服務(wù)器解析待測應(yīng)用對應(yīng)的第一安裝包,從解析的所述第一安裝包中查找各個預(yù)設(shè)類型應(yīng)用程序編程接口;
[0026]在解析的所述第一安裝包中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的各個日志記錄代碼,生成所述待測應(yīng)用對應(yīng)的第二安裝包;
[0027]將所述第二安裝包發(fā)送至測試終端,以供所述測試終端下載所述第二安裝包,安裝并運行所述待測應(yīng)用,并將根據(jù)調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼所生成的日志文件發(fā)送至所述服務(wù)器;
[0028]根據(jù)接收到的所述日志文件檢測所述測試終端運行所述待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。
[0029]可選地,所述服務(wù)器解析待測應(yīng)用對應(yīng)的第一安裝包,從解析的所述第一安裝包中查找各個預(yù)設(shè)類型應(yīng)用程序編程接口包括:
[0030]服務(wù)器對所述待測應(yīng)用對應(yīng)的第一安裝包進行解壓,獲取解壓后的所述第一安裝包中的第一可執(zhí)行文件;
[0031 ]將獲取的所述第一可執(zhí)行文件轉(zhuǎn)換為可讀的匯編器文件;
[0032]查找所述匯編器文件中包含的預(yù)設(shè)類型應(yīng)用程序編程接口。
[0033]可選地,所述在解析的所述第一安裝包中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的各個日志記錄代碼,生成所述待測應(yīng)用對應(yīng)的第二安裝包包括:
[0034]在所述匯編器文件中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼;
[0035]將嵌入日志記錄代碼后的所述匯編器文件轉(zhuǎn)換為第二可執(zhí)行文件;
[0036]采用所述第二可執(zhí)行文件替換所述第一安裝包中的第一可執(zhí)行文件,生成所述第二安裝包。
[0037]此外,為實現(xiàn)上述目的,本發(fā)明還提出一種應(yīng)用程序編程接口的檢測方法,所述應(yīng)用程序編程接口的檢測方法包括:
[0038]測試終端在接收到服務(wù)器發(fā)送的第二安裝包時,下載所述第二安裝包,安裝待測應(yīng)用,其中,所述第二安裝包為所述服務(wù)器在所述待測應(yīng)用對應(yīng)的第一安裝包中嵌入各個預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼后生成;
[0039]運行所述待測應(yīng)用,其中,在所述待測應(yīng)用運行過程中,每次調(diào)用預(yù)設(shè)類型應(yīng)用程序編程接口均運行調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口的日志記錄代碼,以生成調(diào)用的所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志文件;
[0040]獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器,以供所述服務(wù)器根據(jù)所述日志文件檢測所述測試終端運行所述待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。
[0041 ]可選地,所述獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器之前,還包括:
[0042]確定所述待測應(yīng)用是否測試完成;
[0043]在所述待測應(yīng)用測試完成時,獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器。
[0044]本發(fā)明提出的應(yīng)用程序編程接口的檢測裝置及方法,生成模塊在待測應(yīng)用對應(yīng)的第一安裝包中嵌入查詢模塊查找出的各個預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼,生成該待測應(yīng)用對應(yīng)的第二安裝包并通過第一發(fā)送模塊發(fā)送至測試終端,測試終端在運行該待測應(yīng)用時,將運行過程中根據(jù)調(diào)用的各個預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼所生成的日志文件發(fā)送至服務(wù)器,檢測模塊根據(jù)接收到的日志文件檢測出該待測應(yīng)用運行中所調(diào)用的各個預(yù)設(shè)類型應(yīng)用程序編程接口,因此,實現(xiàn)了不管該待測應(yīng)用是系統(tǒng)應(yīng)用還是第三方應(yīng)用,均可以確定出其在運行中調(diào)用的各個預(yù)設(shè)類型應(yīng)用程序編程接口,從而避免了只能針對系統(tǒng)應(yīng)用進行預(yù)設(shè)類型應(yīng)用程序編程接口檢測的問題,提高了應(yīng)用運行的安全性。
【附圖說明】
[0045]圖1為本發(fā)明服務(wù)器與測試終端通信過程的一個示意圖;
[0046]圖2為本發(fā)明各個實施例的測試終端的硬件結(jié)構(gòu)示意圖;
[0047]圖3為本發(fā)明應(yīng)用程序編程接口的檢測裝置第一實施例的模塊示意圖;
[0048]圖4為本發(fā)明應(yīng)用程序編程接口的檢測裝置第一實施例中查詢模塊的模塊示意圖;
[0049]圖5為本發(fā)明應(yīng)用程序編程接口的檢測裝置第一實施例中生成模塊的模塊示意圖;
[0050]圖6為本發(fā)明應(yīng)用程序編程接口的檢測裝置第二實施例的模塊示意圖;
[0051]圖7為本發(fā)明應(yīng)用程序編程接口的檢測方法第一實施例的流程示意圖;
[0052]圖8為本發(fā)明應(yīng)用程序編程接口的檢測方法第一實施例中從解析的所述第一安裝包中查找各個預(yù)設(shè)類型應(yīng)用程序編程接口的流程示意圖;
[0053]圖9為本發(fā)明應(yīng)用程序編程接口的檢測方法第二實施例的流程示意圖。
[0054]本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進一步說明。
【具體實施方式】
[0055]應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0056]參照圖1,圖1為本發(fā)明測試終端與服務(wù)器通信過程的一個示意圖。
[0057]在圖1中,服務(wù)器與測試終端組成一個C/S(Client/Server)架構(gòu)的系統(tǒng),當服務(wù)器與測試終端建立了通信連接后,服務(wù)器可將應(yīng)用安裝包庫中各個應(yīng)用對應(yīng)的安裝包發(fā)送至測試終端,測試終端通過下載安裝包,安裝該安裝包對應(yīng)的應(yīng)用后,實現(xiàn)在測試終端上運行該應(yīng)用。
[0058]參照圖2,圖2為實現(xiàn)本發(fā)明各個實施例的測試終端的硬件結(jié)構(gòu)示意圖。測試終端可以以各種形式來實施。例如,本發(fā)明中描述的測試終端可以包括諸如智能手機、筆記本電腦、數(shù)字廣播接收器、PDA (個人數(shù)字助理)、PAD (平板電腦)、PMP (便攜式多媒體播放器)、導(dǎo)航裝置等等的移動測試終端以及諸如數(shù)字TV、臺式計算機等等的固定測試終端。
[0059]如圖2所示,該測試終端包括:
[0060]處理器1110,是一個通用中央處理器(CPU),微處理器,特定應(yīng)用集成電路(applicat1n-specific integrated circuit ,ASIC),或一個或多個用于控制本發(fā)明方案執(zhí)行的集成電路。
[0061]存儲器1120,用于完成測試終端的各種軟件程序的存儲、數(shù)據(jù)的存儲,以及軟件程序的運行等。該存儲器1120可以是RAM,EPROM,SSD,SD卡,HD硬盤中的一種或者多種。本發(fā)明實施例提供的視頻文件和特效,也在存儲器1120上運行和存儲。
[0062]傳感器1130,用于測量和記錄數(shù)據(jù),該傳感器1130可以包括下列中的任一種或多種:攝像頭、GPS模塊、重力傳感器、加速度傳感器、距離傳感器、光學傳感器、麥克風、揚聲器。
[0063]收發(fā)電路1140,用于提供通信功能,包括蜂窩網(wǎng)絡(luò)(GSM/LTE/CDMA等)、無線局域網(wǎng)(WLAN)、近距離通信(NFC)、藍牙等中的一種或者多種。
[0064]電源1150,用于提供直流供電,或者將交流供電轉(zhuǎn)換成直流供電。
[0065]I/O接口電路1160,用于提供對外接口??蛇x地,該I/O接口電路1160可以包括下列接口中的任一種或多種:USB接口、SD卡接口、按鍵接口。
[0066]顯示器1170,可以是測試終端的顯示屏和/或觸摸屏,在顯示屏的顯示視頻文件和特效;觸摸屏用于接收用戶觸摸操作并轉(zhuǎn)換成用戶操作指令。
[0067]I/O控制電路1180,用于控制各種輸入輸出電路部件之間的數(shù)據(jù)交互,特別地,例如處理器1110與I/O接口電路1160、顯示器1170之間的數(shù)據(jù)交互。
[0068]基于上述測試終端硬件結(jié)構(gòu)以及測試終端與服務(wù)器通信過程的示意圖,提出本發(fā)明應(yīng)用程序編程接口的檢測裝置的各個實施例。
[0069]參照圖3,圖3為本發(fā)明應(yīng)用程序編程接口的檢測裝置第一實施例的模塊示意圖。
[0070]需要強調(diào)的是,對本領(lǐng)域的技術(shù)人員來說,圖3所示模塊圖僅僅是一個較佳實施例的示例圖,本領(lǐng)域的技術(shù)人員圍繞圖3所示的應(yīng)用程序編程接口的檢測裝置的模塊,可輕易進行新的模塊的補充;各模塊的名稱是自定義名稱,僅用于輔助理解該應(yīng)用程序編程接口的檢測裝置的各個程序功能塊,不用于限定本發(fā)明的技術(shù)方案,本發(fā)明技術(shù)方案的核心是,各自定義名稱的模塊所要達成的功能。
[0071]本實施例提出一種應(yīng)用程序編程接口的檢測裝置,所述應(yīng)用程序編程接口的檢測裝置設(shè)置于服務(wù)器側(cè),包括:
[0072]查詢模塊10,用于解析待測應(yīng)用對應(yīng)的第一安裝包,從第一安裝包中查找各個預(yù)設(shè)類型應(yīng)用程序編程接口;
[0073]測試終端在運行應(yīng)用時,通常會調(diào)用該應(yīng)用的各種授權(quán)權(quán)限對應(yīng)的AP I(Applicat1n Programming Interface,應(yīng)用程序編程接口 ),從而實現(xiàn)相應(yīng)功能。例如,當測試終端運行微信應(yīng)用時,若微信應(yīng)用對應(yīng)的攝像權(quán)限為授權(quán)狀態(tài),則測試終端運行微信應(yīng)用時可調(diào)用攝像頭接口,從而實現(xiàn)視頻通話、二維碼掃描等功能;若微信應(yīng)用對應(yīng)的攝像權(quán)限為禁止狀態(tài),則測試終端運行微信應(yīng)用時無法調(diào)用攝像頭接口,也即無法實現(xiàn)視頻通話、二維碼掃描等功能。
[0074]由于應(yīng)用運行中所涉及到的權(quán)限包括普通權(quán)限和敏感權(quán)限,普通權(quán)限對用戶的隱私只有很少或者沒有風險,而敏感權(quán)限可能危及用戶的隱私和安全,因此,研發(fā)過程中十分有必要對各款應(yīng)用運行中涉及到的所有敏感權(quán)限進行檢測,以便實現(xiàn)用戶在運行應(yīng)用時,將檢測出的該應(yīng)用所涉及的敏感權(quán)限通知用戶,再由用戶執(zhí)行授權(quán)或禁止的操作。
[0075]在本實施例中,為了檢測某一款待測應(yīng)用在運行過程中涉及的所有敏感權(quán)限,也即檢測該待測應(yīng)用在運行過程中調(diào)用了哪些敏感權(quán)限對應(yīng)的預(yù)設(shè)類型API,其中,每種敏感權(quán)限對應(yīng)一個預(yù)設(shè)類型API,查詢模塊10將該待測應(yīng)用對應(yīng)的第一安裝包進行解析,解析的第一安裝包中包括該待測應(yīng)用對應(yīng)的各個API,其中包括普通權(quán)限對應(yīng)的普通類型API和敏感權(quán)限對應(yīng)的預(yù)設(shè)類型API,然后查詢模塊10從解析的各個API中查找出各個預(yù)設(shè)類型API。
[0076]生成模塊20,用于在解析的所述第一安裝包中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的各個日志記錄代碼,生成所述待測應(yīng)用對應(yīng)的第二安裝包;
[0077]本實施例中,預(yù)先設(shè)置每個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,當查詢模塊10查找出各個預(yù)設(shè)類型API后,生成模塊20在解析的第一安裝包中嵌入各個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼。可選地,生成模塊20在查找出的每個預(yù)設(shè)類型API所在位置的下方相應(yīng)位置嵌入每個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼。當解析的第一安裝包中嵌入各個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼完成時,生成模塊20將此嵌入日志記錄代碼的解析的第一安裝包進行壓縮打包,生成待測應(yīng)用對應(yīng)的第二安裝包。
[0078]第一發(fā)送模塊30,用于將所述第二安裝包發(fā)送至測試終端,以供所述測試終端下載所述第二安裝包,安裝并運行所述待測應(yīng)用,并將根據(jù)調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼所生成的日志文件發(fā)送至所述服務(wù)器;
[0079]當生成模塊20生成待測應(yīng)用對應(yīng)的第二安裝包后,第一發(fā)送模塊30將該第二安裝包發(fā)送至測試終端。測試終端在接收到該第二安裝包時,測試終端下載該第二安裝包,安裝待測應(yīng)用,并運行該待測應(yīng)用。在運行該待測應(yīng)用的過程中,每當測試終端觸發(fā)了敏感權(quán)限行為,也即調(diào)用了敏感權(quán)限對應(yīng)的預(yù)設(shè)類型API時,測試終端根據(jù)調(diào)用的預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,生成調(diào)用的預(yù)設(shè)類型API對應(yīng)的日志文件,依此生成該待測應(yīng)用運行中調(diào)用的各個預(yù)設(shè)類型API對應(yīng)的各個日志文件。然后,測試終端將生成的各個日志文件發(fā)送至服務(wù)器。具體地,測試終端將該待測應(yīng)用運行中調(diào)用的各個預(yù)設(shè)類型API對應(yīng)生成的各個日志文件進行打包,發(fā)送至服務(wù)器。
[0080]檢測模塊40,用于根據(jù)接收到的所述日志文件檢測所述測試終端運行所述待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。
[0081 ]在接收到測試終端發(fā)送的各個日志文件時,檢測模塊40根據(jù)各個日志文件對應(yīng)的各個預(yù)設(shè)類型API,檢測出測試終端運行該待測應(yīng)用時調(diào)用的各個預(yù)設(shè)類型API,也即檢測出該待測應(yīng)運行中涉及的各個敏感權(quán)限。具體地,在接收到測試終端發(fā)送的打包日志文件時,檢測模塊40將該打包日志文件進行解壓,獲取到各個日志文件,然后根據(jù)獲取的各個日志文件對應(yīng)的各個預(yù)設(shè)類型API,檢測出測試終端運行該待測應(yīng)用時調(diào)用的各個預(yù)設(shè)類型API,從而確定出該待測應(yīng)運行中涉及的各個敏感權(quán)限。
[0082]具體地,如圖4所示,所述查詢模塊1包括:
[0083]解壓單元11,用于對所述待測應(yīng)用對應(yīng)的第一安裝包進行解壓,獲取解壓后的所述第一安裝包中的第一可執(zhí)行文件;
[0084]第一轉(zhuǎn)換單元12,用于將獲取的所述第一可執(zhí)行文件轉(zhuǎn)換為可讀的匯編器文件;
[0085]查詢單元13,用于查找所述匯編器文件中包含的預(yù)設(shè)類型應(yīng)用程序編程接口。
[0086]本實施例中,在對待測應(yīng)用運行所涉及到的敏感權(quán)限進行檢測時,解壓單元11首先解壓該待測應(yīng)用對應(yīng)的第一安裝包,其中,解壓后的第一安裝包中包括第一Dex(可執(zhí)行)文件、圖片文件等等,解壓單元11從解壓后的第一安裝包中獲取第一 Dex文件,該第一 Dex文件中包含了各個API,其中包括普通權(quán)限對應(yīng)的普通類型API和敏感權(quán)限對應(yīng)的預(yù)設(shè)類型API ο由于第一Dex文件不可讀,第一轉(zhuǎn)換單元12將該第一Dex文件轉(zhuǎn)換為可讀的smali (匯編器)文件,然后查詢單元13從可讀的smali文件中查找出預(yù)設(shè)類型API。具體地,服務(wù)器中預(yù)存有一預(yù)設(shè)類型API列表,該列表中包含了各種各樣的預(yù)設(shè)類型API。當?shù)谝晦D(zhuǎn)換單元12將第一Dex文件轉(zhuǎn)換為可讀的smali文件后,查詢單元13根據(jù)預(yù)設(shè)類型API列表,以該預(yù)設(shè)類型API列表為參考,查找出可讀的smali文件中包含的各個預(yù)設(shè)類型API。
[0087]進一步地,如圖5所示,所述生成模塊20包括:
[0088]嵌入單元21,用于在所述匯編器文件中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼;
[0089]第二轉(zhuǎn)換單元22,用于將嵌入日志記錄代碼后的所述匯編器文件轉(zhuǎn)換為第二可執(zhí)行文件;
[0090]生成單元23,用于采用所述第二可執(zhí)行文件替換所述第一安裝包中的第一可執(zhí)行文件,生成所述第二安裝包。
[0091]當查詢單元13查找出可讀的smali文件中包含的各個預(yù)設(shè)類型API后,嵌入單元21在該smali文件中嵌入查找到的各個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼。之后,第二轉(zhuǎn)換單元22將嵌入日志記錄代碼后的smali文件轉(zhuǎn)換為第二 Dex文件,生成單元23以該第二 Dex文件替換第一 Dex文件,然后將替換后的解壓第一安裝包壓縮打包為APK文件,并對APK文件簽名,生成適宜在測試終端上運行的第二安裝包。
[0092]進一步地,生成模塊20還用于調(diào)用第一安裝包對應(yīng)的敏感權(quán)限的靜態(tài)分析結(jié)果,獲取待測應(yīng)用對應(yīng)的各種敏感權(quán)限的觸發(fā)條件,并將獲取的各種敏感權(quán)限的觸發(fā)條件存儲在xml文件中。生成模塊20將該xml文件與第二Dex文件一起壓縮打包為APK文件,生成第二安裝包,也即第二安裝包中包含了待測應(yīng)用對應(yīng)的各種敏感權(quán)限的觸發(fā)條件的xml文件。當測試終端接收到該第二安裝包后,解壓該第二安裝包獲取到xml文件,測試終端根據(jù)xml文件中包含的各種敏感權(quán)限的觸發(fā)條件來觸發(fā)敏感權(quán)限行為,從而調(diào)用各個敏感權(quán)限對應(yīng)的預(yù)設(shè)類型API。在每次調(diào)用一個預(yù)設(shè)類型API時,根據(jù)該預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,生成該預(yù)設(shè)類型API對應(yīng)的日志文件。最終將調(diào)用的各個預(yù)設(shè)類型API對應(yīng)生成的日志文件發(fā)送至服務(wù)器。
[0093]本實施例提出的應(yīng)用程序編程接口的檢測裝置,查詢模塊10從解析的待測應(yīng)用對應(yīng)的第一安裝包中查找出各個預(yù)設(shè)類型API后,生成模塊20在解析的第一安裝包中嵌入各個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,生成該待測應(yīng)用對應(yīng)的第二安裝包,然后第一發(fā)送模塊30將第二安裝包發(fā)送至測試終端,測試終端通過下載第二安裝包,安裝待測應(yīng)用后運行該待測應(yīng)用,并將待測應(yīng)用在運行中調(diào)用的各個預(yù)設(shè)類型API對應(yīng)生成的日志文件發(fā)送至服務(wù)器,檢測模塊40根據(jù)接收到的日志文件,檢測出該待測應(yīng)用運行中所調(diào)用的各個預(yù)設(shè)類型API,也即確定出該待測應(yīng)用運行中涉及的各個敏感權(quán)限,實現(xiàn)了不管該待測應(yīng)用是系統(tǒng)應(yīng)用還是第三方應(yīng)用,均可以確定出其在運行中調(diào)用的各個預(yù)設(shè)類型API,從而避免了只能針對系統(tǒng)應(yīng)用進行預(yù)設(shè)類型API檢測的問題,提高了應(yīng)用運行的安全性。
[0094]進一步地,如圖6所示,提出本發(fā)明應(yīng)用程序編程接口的檢測裝置第二實施例。應(yīng)用程序編程接口的檢測裝置第二實施例與應(yīng)用程序編程接口的檢測裝置第一實施例的區(qū)別在于,在應(yīng)用程序編程接口的檢測裝置第二實施例中,所述應(yīng)用程序編程接口的檢測裝置設(shè)置于測試終端側(cè),包括:
[0095]處理模塊50,用于在接收到服務(wù)器發(fā)送的第二安裝包時,下載所述第二安裝包,安裝待測應(yīng)用,其中,所述第二安裝包為所述服務(wù)器在所述待測應(yīng)用對應(yīng)的第一安裝包中嵌入各個預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼后生成;
[0096]獲取模塊60,用于運行所述待測應(yīng)用,其中,在所述待測應(yīng)用運行過程中,每次調(diào)用預(yù)設(shè)類型應(yīng)用程序編程接口均運行調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口的日志記錄代碼,以生成調(diào)用的所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志文件;
[0097]第二發(fā)送模塊70,用于獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器,以供所述服務(wù)器根據(jù)所述日志文件檢測所述測試終端運行所述待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。
[0098]本實施例中,為了檢測某一款待測應(yīng)用在運行過程中涉及的所有敏感權(quán)限,也即檢測待測應(yīng)用在運行過程中調(diào)用的所有預(yù)設(shè)類型API,服務(wù)器將該待測應(yīng)用對應(yīng)的第一安裝包進行解析,并從解析的各個API中查找出各個預(yù)設(shè)類型API。然后在解析的第一安裝包中嵌入各個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,將此嵌入日志記錄代碼的解析的第一安裝包進行壓縮打包,生成待測應(yīng)用對應(yīng)的第二安裝包。之后,服務(wù)器將該待測應(yīng)用對應(yīng)的第二安裝包發(fā)送至測試終端。
[0099]當接收到該第二安裝包時,處理模塊50下載該第二安裝包,安裝待測應(yīng)用,并運行該待測應(yīng)用。在運行該待測應(yīng)用的過程中,每當觸發(fā)了敏感權(quán)限行為,也即調(diào)用敏感權(quán)限對應(yīng)的預(yù)設(shè)類型API時,運行調(diào)用的預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,獲取模塊60生成調(diào)用的預(yù)設(shè)類型API對應(yīng)的日志文件。獲取模塊60依次生成該待測應(yīng)用運行中調(diào)用的各個預(yù)設(shè)類型API對應(yīng)的各個日志文件。
[0100]當該待測應(yīng)用運行中觸發(fā)的各個敏感權(quán)限行為完成時,獲取該待測應(yīng)用運行中生成的各個日志文件,第二發(fā)送模塊70將獲取的各個日志文件發(fā)送至服務(wù)器。具體地,第二發(fā)送模塊70將該待測應(yīng)用運行中調(diào)用的各個預(yù)設(shè)類型API對應(yīng)的各個日志文件進行打包,發(fā)送至服務(wù)器。
[0101 ]服務(wù)器在接收到各個日志文件時,根據(jù)各個日志文件對應(yīng)的各個預(yù)設(shè)類型API,檢測出測試終端運行該待測應(yīng)用時調(diào)用的各個預(yù)設(shè)類型API,也即檢測出該待測應(yīng)運行中涉及的各個敏感權(quán)限。
[0102]進一步地,所述應(yīng)用程序編程接口的檢測裝置還包括:
[0103]確定模塊,用于確定所述待測應(yīng)用是否測試完成;
[0104]所述第二發(fā)送模塊70,用于在所述待測應(yīng)用測試完成時,獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器。
[0105]本實施例中,在運行該待測應(yīng)用時,當每次調(diào)用了一個預(yù)設(shè)類型API后,確定模塊確定該待測應(yīng)用是否測試完成。例如,預(yù)先設(shè)置第一預(yù)設(shè)時間,當運行該測試文件時開始計時,在計時到達第一預(yù)設(shè)時間時,確定模塊判斷該待測應(yīng)用測試完成。此時,第二發(fā)送模塊70獲取每次調(diào)用預(yù)設(shè)類型API時生成的對應(yīng)日志文件,將獲取的日志文件發(fā)送至服務(wù)器?;蛘?,預(yù)先設(shè)置第二預(yù)設(shè)時間,在每次調(diào)用了一個預(yù)設(shè)類型API時開始計時,若在第二預(yù)設(shè)時間內(nèi)一直未調(diào)用預(yù)設(shè)類型API,此時確定模塊判斷該待測應(yīng)用測試完成,否則,確定模塊判斷該待測應(yīng)用測試還未完成,則繼續(xù)運行該待測應(yīng)用,調(diào)用其他的預(yù)設(shè)類型API。直至當確定模塊確定該待測應(yīng)用測試完成時,第二發(fā)送模塊70獲取每次調(diào)用預(yù)設(shè)類型API時生成的對應(yīng)日志文件,將獲取的日志文件發(fā)送至服務(wù)器。進一步地,確定模塊在確定該待測應(yīng)用測試完成時,處理模塊50還執(zhí)行卸載、刪除該待測應(yīng)用的操作,以提供充足的存儲空間來下載安裝其他的待測應(yīng)用,從而檢測出其他的待測應(yīng)用運行中調(diào)用的各個預(yù)設(shè)類型API。
[0106]本實施例提出的應(yīng)用程序編程接口的檢測裝置,服務(wù)器通過在待測應(yīng)用對應(yīng)的第一安裝包中嵌入各個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,生成該待測應(yīng)用對應(yīng)的第二安裝包,并將第二安裝包發(fā)送至測試終端,處理模塊50通過下載第二安裝包,安裝待測應(yīng)用,在運行該待測應(yīng)用的過程中,每次調(diào)用預(yù)設(shè)類型API均運行調(diào)用的預(yù)設(shè)類型API的日志記錄代碼,獲取模塊60生成調(diào)用的各個預(yù)設(shè)類型API對應(yīng)的日志文件,第二發(fā)送模塊70獲取所述待測應(yīng)用的日志文件,將日志文件發(fā)送至服務(wù)器,服務(wù)器根據(jù)接收到的日志文件,檢測出該待測應(yīng)用運行中所調(diào)用的各個預(yù)設(shè)類型API,也即確定出該待測應(yīng)用運行中涉及的各個敏感權(quán)限,實現(xiàn)了不管該待測應(yīng)用是系統(tǒng)應(yīng)用還是第三方應(yīng)用,均可以確定出其在運行中調(diào)用的各個預(yù)設(shè)類型API,從而避免了只能針對系統(tǒng)應(yīng)用進行預(yù)設(shè)類型API檢測的問題,提高了應(yīng)用運行的安全性。
[0107]本發(fā)明進一步提供一種應(yīng)用程序編程接口的檢測方法。
[0108]參照圖7,圖7為本發(fā)明應(yīng)用程序編程接口的檢測方法第一實施例的流程示意圖,對應(yīng)于本發(fā)明應(yīng)用程序編程接口的檢測裝置第一實施例的模塊示意圖。
[0109]本實施例提出一種應(yīng)用程序編程接口的檢測方法,所述應(yīng)用程序編程接口的檢測方法應(yīng)用于服務(wù)器側(cè),包括以下步驟:
[0110]步驟S10,服務(wù)器解析待測應(yīng)用對應(yīng)的第一安裝包,從解析的所述第一安裝包中查找各個預(yù)設(shè)類型應(yīng)用程序編程接口 ;
[0111]測試終端在運行應(yīng)用時,通常會調(diào)用該應(yīng)用的各種授權(quán)權(quán)限對應(yīng)的AP I(Applicat1n Programming Interface,應(yīng)用程序編程接口 ),從而實現(xiàn)相應(yīng)功能。例如,當測試終端運行微信應(yīng)用時,若微信應(yīng)用對應(yīng)的攝像權(quán)限為授權(quán)狀態(tài),則測試終端運行微信應(yīng)用時可調(diào)用攝像頭接口,從而實現(xiàn)視頻通話、二維碼掃描等功能;若微信應(yīng)用對應(yīng)的攝像權(quán)限為禁止狀態(tài),則測試終端運行微信應(yīng)用時無法調(diào)用攝像頭接口,也即無法實現(xiàn)視頻通話、二維碼掃描等功能。
[0112]由于應(yīng)用運行中所涉及到的權(quán)限包括普通權(quán)限和敏感權(quán)限,普通權(quán)限對用戶的隱私只有很少或者沒有風險,而敏感權(quán)限可能危及用戶的隱私和安全,因此,研發(fā)過程中十分有必要對各款應(yīng)用運行中涉及到的所有敏感權(quán)限進行檢測,以便實現(xiàn)用戶在運行應(yīng)用時,將檢測出的該應(yīng)用所涉及的敏感權(quán)限通知用戶,再由用戶執(zhí)行授權(quán)或禁止的操作。
[0113]在本實施例中,為了檢測某一款待測應(yīng)用在運行過程中涉及的所有敏感權(quán)限,也即檢測該待測應(yīng)用在運行過程中調(diào)用了哪些敏感權(quán)限對應(yīng)的預(yù)設(shè)類型API,其中,每種敏感權(quán)限對應(yīng)一個預(yù)設(shè)類型API,服務(wù)器將該待測應(yīng)用對應(yīng)的第一安裝包進行解析,解析的第一安裝包中包括該待測應(yīng)用對應(yīng)的各個API,其中包括普通權(quán)限對應(yīng)的普通類型API和敏感權(quán)限對應(yīng)的預(yù)設(shè)類型API,服務(wù)器從解析的各個API中查找出各個預(yù)設(shè)類型API。
[0114]步驟S20,在解析的所述第一安裝包中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的各個日志記錄代碼,生成所述待測應(yīng)用對應(yīng)的第二安裝包;
[0115]本實施例中,預(yù)先設(shè)置每個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,當服務(wù)器查找出各個預(yù)設(shè)類型API后,服務(wù)器在解析的第一安裝包中嵌入各個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼??蛇x地,服務(wù)器在查找出的每個預(yù)設(shè)類型API所在位置的下方相應(yīng)位置嵌入每個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼。當解析的第一安裝包中嵌入各個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼完成時,服務(wù)器將此嵌入日志記錄代碼的解析的第一安裝包進行壓縮打包,生成待測應(yīng)用對應(yīng)的第二安裝包。
[0116]步驟S30,將所述第二安裝包發(fā)送至測試終端,以供所述測試終端下載所述第二安裝包,安裝并運行所述待測應(yīng)用,并將根據(jù)調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼所生成的日志文件發(fā)送至所述服務(wù)器;
[0117]當生成待測應(yīng)用對應(yīng)的第二安裝包后,服務(wù)器將該第二安裝包發(fā)送至測試終端。測試終端在接收到該第二安裝包時,測試終端下載該第二安裝包,安裝待測應(yīng)用,并運行該待測應(yīng)用。在運行該待測應(yīng)用的過程中,每當測試終端觸發(fā)了敏感權(quán)限行為,也即調(diào)用了敏感權(quán)限對應(yīng)的預(yù)設(shè)類型API時,測試終端根據(jù)調(diào)用的預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,生成調(diào)用的預(yù)設(shè)類型API對應(yīng)的日志文件,依此生成該待測應(yīng)用運行中調(diào)用的各個預(yù)設(shè)類型API對應(yīng)的各個日志文件。然后,測試終端將生成的各個日志文件發(fā)送至服務(wù)器。具體地,測試終端將該待測應(yīng)用運行中調(diào)用的各個預(yù)設(shè)類型API對應(yīng)生成的各個日志文件進行打包,發(fā)送至服務(wù)器。
[0118]步驟S40,根據(jù)接收到的所述日志文件檢測所述測試終端運行所述待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。
[0119]服務(wù)器在接收到各個日志文件時,根據(jù)各個日志文件對應(yīng)的各個預(yù)設(shè)類型API,檢測出測試終端運行該待測應(yīng)用時調(diào)用的各個預(yù)設(shè)類型API,也即檢測出該待測應(yīng)運行中涉及的各個敏感權(quán)限。具體地,服務(wù)器在接收到測試終端發(fā)送的打包日志文件時,將該打包日志文件進行解壓,獲取到各個日志文件,然后根據(jù)獲取的各個日志文件對應(yīng)的各個預(yù)設(shè)類型API,檢測出測試終端運行該待測應(yīng)用時調(diào)用的各個預(yù)設(shè)類型API,從而確定出該待測應(yīng)運行中涉及的各個敏感權(quán)限。
[0120]具體地,如圖8所示,所述步驟SlO包括:
[0121]步驟Sll,服務(wù)器對所述待測應(yīng)用對應(yīng)的第一安裝包進行解壓,獲取解壓后的所述第一安裝包中的第一可執(zhí)行文件;
[0122]步驟S12,將獲取的所述第一可執(zhí)行文件轉(zhuǎn)換為可讀的匯編器文件;
[0123]步驟S13,查找所述匯編器文件中包含的預(yù)設(shè)類型應(yīng)用程序編程接口。
[0124]本實施例中,服務(wù)器在對待測應(yīng)用對應(yīng)的第一安裝包進行解析的過程中,首先解壓該待測應(yīng)用對應(yīng)的第一安裝包,其中,解壓后的第一安裝包中包括第一Dex(可執(zhí)行)文件、圖片文件等等,服務(wù)器從解壓后的第一安裝包中獲取第一 Dex文件,該第一 Dex文件中包含了各個API,其中包括普通權(quán)限對應(yīng)的普通類型API和敏感權(quán)限對應(yīng)的預(yù)設(shè)類型API。由于第一 Dex文件不可讀,服務(wù)器將該第一 Dex文件轉(zhuǎn)換為可讀的smali(匯編器)文件,然后從可讀的smali文件中查找出預(yù)設(shè)類型API。具體地,服務(wù)器中預(yù)存有一預(yù)設(shè)類型API列表,該列表中包含了各種各樣的預(yù)設(shè)類型API。當服務(wù)器將第一 Dex文件轉(zhuǎn)換為可讀的smali文件后,服務(wù)器根據(jù)預(yù)設(shè)類型API列表,以該預(yù)設(shè)類型API列表為參考,查找出可讀的smali文件中包含的各個預(yù)設(shè)類型API。
[0125]進一步地,所述步驟S20包括:
[0126]步驟a,在所述smali文件中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼;
[0127]步驟b,將嵌入日志記錄代碼后的所述匯編器文件轉(zhuǎn)換為第二可執(zhí)行文件;
[0128]步驟c,采用所述第二可執(zhí)行文件替換所述第一安裝包中的第一可執(zhí)行文件,生成所述第二安裝包。
[0129]當服務(wù)器查找出可讀的smali文件中包含的各個預(yù)設(shè)類型API后,服務(wù)器在該smali文件中嵌入查找到的各個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼。之后,服務(wù)器再將嵌入日志記錄代碼后的smali文件轉(zhuǎn)換為第二 Dex文件,并以該第二 Dex文件替換第一 Dex文件,然后將替換后的解壓第一安裝包壓縮打包為APK文件,并對APK文件簽名,生成適宜在測試終端上運行的第二安裝包。
[0130]進一步地,服務(wù)器可通過調(diào)用第一安裝包對應(yīng)的敏感權(quán)限的靜態(tài)分析結(jié)果,獲取待測應(yīng)用對應(yīng)的各種敏感權(quán)限的觸發(fā)條件,并將獲取的各種敏感權(quán)限的觸發(fā)條件存儲在xml文件中。服務(wù)器將該xml文件與第二Dex文件一起壓縮打包為APK文件,生成第二安裝包,也即第二安裝包中包含了待測應(yīng)用對應(yīng)的各種敏感權(quán)限的觸發(fā)條件的xml文件。當測試終端接收到該第二安裝包后,解壓該第二安裝包獲取到xml文件,測試終端根據(jù)xml文件中包含的各種敏感權(quán)限的觸發(fā)條件來觸發(fā)敏感權(quán)限行為,從而調(diào)用各個敏感權(quán)限對應(yīng)的預(yù)設(shè)類型API。在每次調(diào)用一個預(yù)設(shè)類型API時,根據(jù)該預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,生成該預(yù)設(shè)類型API對應(yīng)的日志文件。最終將調(diào)用的各個預(yù)設(shè)類型API對應(yīng)生成的各個日志文件發(fā)送至服務(wù)器。
[0131]本實施例提出的應(yīng)用程序編程接口的檢測方法,服務(wù)器從解析的待測應(yīng)用對應(yīng)的第一安裝包中查找出各個預(yù)設(shè)類型API后,在解析的第一安裝包中嵌入各個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,生成該待測應(yīng)用對應(yīng)的第二安裝包,然后將第二安裝包發(fā)送至測試終端,測試終端通過下載第二安裝包,安裝待測應(yīng)用后運行該待測應(yīng)用,并將待測應(yīng)用在運行中調(diào)用的各個預(yù)設(shè)類型API對應(yīng)生成的日志文件發(fā)送至服務(wù)器,服務(wù)器根據(jù)接收到的日志文件,檢測出該待測應(yīng)用運行中所調(diào)用的各個預(yù)設(shè)類型API,也即確定出該待測應(yīng)用運行中涉及的各個敏感權(quán)限,實現(xiàn)了不管該待測應(yīng)用是系統(tǒng)應(yīng)用還是第三方應(yīng)用,均可以確定出其在運行中調(diào)用的各個預(yù)設(shè)類型API,從而避免了只能針對系統(tǒng)應(yīng)用進行預(yù)設(shè)類型API檢測的問題,提高了應(yīng)用運行的安全性。
[0132]進一步地,如圖9所示,提出本發(fā)明應(yīng)用程序編程接口的檢測方法第二實施例。應(yīng)用程序編程接口的檢測方法第二實施例與應(yīng)用程序編程接口的檢測方法第一實施例的區(qū)別在于,在應(yīng)用程序編程接口的檢測方法第二實施例中,所述應(yīng)用程序編程接口的檢測方法應(yīng)用于測試終端側(cè),包括以下步驟:
[0133]步驟S50,測試終端在接收到服務(wù)器發(fā)送的第二安裝包時,下載所述第二安裝包,安裝待測應(yīng)用,其中,所述第二安裝包為所述服務(wù)器在所述待測應(yīng)用對應(yīng)的第一安裝包中嵌入各個預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼后生成;
[0134]步驟S60,運行所述待測應(yīng)用,其中,在所述待測應(yīng)用運行過程中,每次調(diào)用預(yù)設(shè)類型應(yīng)用程序編程接口均運行調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口的日志記錄代碼,以生成調(diào)用的所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志文件;
[0135]本實施例中,為了檢測某一款待測應(yīng)用在運行過程中涉及的所有敏感權(quán)限,也即檢測待測應(yīng)用在運行過程中調(diào)用的所有預(yù)設(shè)類型API,服務(wù)器將該待測應(yīng)用對應(yīng)的第一安裝包進行解析,并從解析的各個API中查找出各個預(yù)設(shè)類型API。然后在解析的第一安裝包中嵌入各個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,將此嵌入日志記錄代碼的解析的第一安裝包進行壓縮打包,生成待測應(yīng)用對應(yīng)的第二安裝包。之后,服務(wù)器將該待測應(yīng)用對應(yīng)的第二安裝包發(fā)送至測試終端。
[0136]當測試終端接收到該第二安裝包時,測試終端下載該第二安裝包,安裝待測應(yīng)用,并運行該待測應(yīng)用。在運行該待測應(yīng)用的過程中,每當測試終端觸發(fā)了敏感權(quán)限行為,也即調(diào)用敏感權(quán)限對應(yīng)的預(yù)設(shè)類型API時,測試終端運行調(diào)用的預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,生成調(diào)用的預(yù)設(shè)類型API對應(yīng)的日志文件。測試終端依次生成該待測應(yīng)用運行中調(diào)用的各個預(yù)設(shè)類型API對應(yīng)的各個日志文件。
[0137]步驟S70,獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器,以供所述服務(wù)器根據(jù)所述日志文件檢測所述測試終端運行所述待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。
[0138]當該待測應(yīng)用運行中觸發(fā)的各個敏感權(quán)限行為完成時,測試終端獲取該待測應(yīng)用運行中生成的各個日志文件,將獲取的各個日志文件發(fā)送至服務(wù)器。具體地,測試終端將該待測應(yīng)用運行中調(diào)用的各個預(yù)設(shè)類型API對應(yīng)的各個日志文件進行打包,發(fā)送至服務(wù)器。
[0139]服務(wù)器在接收到各個日志文件時,根據(jù)各個日志文件對應(yīng)的各個預(yù)設(shè)類型API,檢測出測試終端運行該待測應(yīng)用時調(diào)用的各個預(yù)設(shè)類型API,也即檢測出該待測應(yīng)運行中涉及的各個敏感權(quán)限。
[0140]進一步地,所述步驟S70之前,還包括:
[0141]步驟d,確定所述待測應(yīng)用是否測試完成;
[0142]步驟e,在所述待測應(yīng)用測試完成時,執(zhí)行所述步驟S70。
[0143]本實施例中,測試終端在運行該待測應(yīng)用時,在每次調(diào)用了一個預(yù)設(shè)類型API后,確定該待測應(yīng)用是否測試完成。例如,預(yù)先設(shè)置第一預(yù)設(shè)時間,當測試終端運行該測試文件時開始計時,在計時到達第一預(yù)設(shè)時間時,判斷該待測應(yīng)用測試完成。此時,測試終端獲取每次調(diào)用預(yù)設(shè)類型API時生成的對應(yīng)日志文件,將獲取的日志文件發(fā)送至服務(wù)器。或者,預(yù)先設(shè)置第二預(yù)設(shè)時間,在每次調(diào)用了一個預(yù)設(shè)類型API后,測試終端開始計時,若在第二預(yù)設(shè)時間內(nèi)測試終端未調(diào)用預(yù)設(shè)類型API,此時判斷該待測應(yīng)用測試完成,否則,判斷該待測應(yīng)用測試還未完成,則繼續(xù)運行該待測應(yīng)用,調(diào)用其他的預(yù)設(shè)類型API。直至當確定該待測應(yīng)用測試完成時,測試終端獲取每次調(diào)用預(yù)設(shè)類型API時生成的對應(yīng)日志文件,將獲取的日志文件發(fā)送至服務(wù)器。進一步地,測試終端在確定該待測應(yīng)用測試完成時,執(zhí)行卸載、刪除該待測應(yīng)用,以提供充足的存儲空間來下載安裝其他的待測應(yīng)用,從而檢測出其他的待測應(yīng)用運行中調(diào)用的各個預(yù)設(shè)類型API。
[0144]本實施例提出的應(yīng)用程序編程接口的檢測方法,服務(wù)器通過在待測應(yīng)用對應(yīng)的第一安裝包中嵌入各個預(yù)設(shè)類型API對應(yīng)的日志記錄代碼,生成該待測應(yīng)用對應(yīng)的第二安裝包,并將第二安裝包發(fā)送至測試終端,測試終端通過下載第二安裝包,安裝待測應(yīng)用后運行該待測應(yīng)用,在運行該待測應(yīng)用的過程中,每次調(diào)用預(yù)設(shè)類型API均運行調(diào)用的預(yù)設(shè)類型API的日志記錄代碼,生成調(diào)用的各個預(yù)設(shè)類型API對應(yīng)的日志文件,并獲取各個日志文件將其發(fā)送至服務(wù)器,服務(wù)器根據(jù)接收到的日志文件,檢測出該待測應(yīng)用運行中所調(diào)用的各個預(yù)設(shè)類型API,也即確定出該待測應(yīng)用運行中涉及的各個敏感權(quán)限,實現(xiàn)了不管該待測應(yīng)用是系統(tǒng)應(yīng)用還是第三方應(yīng)用,均可以確定出其在運行中調(diào)用的各個預(yù)設(shè)類型API,從而避免了只能針對系統(tǒng)應(yīng)用進行預(yù)設(shè)類型API檢測的問題,提高了應(yīng)用運行的安全性。
[0145]需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其它要素,或者是還包括為這種過程、方法、物品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者系統(tǒng)中還存在另外的相同要素。
[0146]上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
[0147]通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如R0M/RAM、磁碟、光盤)中,包括若干指令用以使得一臺測試終端設(shè)備(可以是手機,計算機,服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
[0148]以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。
【主權(quán)項】
1.一種應(yīng)用程序編程接口的檢測裝置,其特征在于,所述應(yīng)用程序編程接口的檢測裝置包括: 查詢模塊,用于解析待測應(yīng)用對應(yīng)的第一安裝包,從第一安裝包中查找各個預(yù)設(shè)類型應(yīng)用程序編程接口; 生成模塊,用于在解析的第一安裝包中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的各個日志記錄代碼,生成所述待測應(yīng)用對應(yīng)的第二安裝包; 第一發(fā)送模塊,用于將所述第二安裝包發(fā)送至測試終端,以供所述測試終端下載所述第二安裝包,安裝并運行所述待測應(yīng)用,并將根據(jù)調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼所生成的日志文件發(fā)送至服務(wù)器; 檢測模塊,用于根據(jù)接收到的所述日志文件檢測所述測試終端運行所述待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。2.如權(quán)利要求1所述的應(yīng)用程序編程接口的檢測裝置,其特征在于,所述查詢模塊包括: 解壓單元,用于對所述待測應(yīng)用對應(yīng)的第一安裝包進行解壓,獲取解壓后的第一安裝包中的第一可執(zhí)行文件; 第一轉(zhuǎn)換單元,用于將獲取的第一可執(zhí)行文件轉(zhuǎn)換為可讀的匯編器文件; 查詢單元,用于查找所述匯編器文件中包含的預(yù)設(shè)類型應(yīng)用程序編程接口。3.如權(quán)利要求2所述的應(yīng)用程序編程接口的檢測裝置,其特征在于,所述生成模塊包括: 嵌入單元,用于在所述匯編器文件中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼; 第二轉(zhuǎn)換單元,用于將嵌入日志記錄代碼后的所述匯編器文件轉(zhuǎn)換為第二可執(zhí)行文件; 生成單元,用于采用所述第二可執(zhí)行文件替換所述第一安裝包中的第一可執(zhí)行文件,生成所述第二安裝包。4.一種應(yīng)用程序編程接口的檢測裝置,其特征在于,所述應(yīng)用程序編程接口的檢測裝置包括: 處理模塊,用于在接收到服務(wù)器發(fā)送的第二安裝包時,下載所述第二安裝包,安裝待測應(yīng)用,其中,所述第二安裝包為所述服務(wù)器在所述待測應(yīng)用對應(yīng)的第一安裝包中嵌入各個預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼后生成; 獲取模塊,用于運行所述待測應(yīng)用,其中,在所述待測應(yīng)用運行過程中,每次調(diào)用預(yù)設(shè)類型應(yīng)用程序編程接口均運行調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口的日志記錄代碼,以生成調(diào)用的所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志文件; 第二發(fā)送模塊,用于獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器,以供所述服務(wù)器根據(jù)所述日志文件檢測所述測試終端運行所述待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。5.如權(quán)利要求4所述的應(yīng)用程序編程接口的檢測裝置,其特征在于,所述應(yīng)用程序編程接口的檢測裝置還包括: 確定模塊,用于確定所述待測應(yīng)用是否測試完成; 所述第二發(fā)送模塊,用于在所述待測應(yīng)用測試完成時,獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器。6.—種應(yīng)用程序編程接口的檢測方法,其特征在于,所述應(yīng)用程序編程接口的檢測方法包括: 服務(wù)器解析待測應(yīng)用對應(yīng)的第一安裝包,從解析的所述第一安裝包中查找各個預(yù)設(shè)類型應(yīng)用程序編程接口; 在解析的所述第一安裝包中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的各個日志記錄代碼,生成所述待測應(yīng)用對應(yīng)的第二安裝包; 將所述第二安裝包發(fā)送至測試終端,以供所述測試終端下載所述第二安裝包,安裝并運行所述待測應(yīng)用,并將根據(jù)調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼所生成的日志文件發(fā)送至所述服務(wù)器; 根據(jù)接收到的所述日志文件檢測所述測試終端運行所述待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。7.如權(quán)利要求6所述的應(yīng)用程序編程接口的檢測方法,其特征在于,所述服務(wù)器解析待測應(yīng)用對應(yīng)的第一安裝包,從解析的所述第一安裝包中查找各個預(yù)設(shè)類型應(yīng)用程序編程接口包括: 服務(wù)器對所述待測應(yīng)用對應(yīng)的第一安裝包進行解壓,獲取解壓后的所述第一安裝包中的第一可執(zhí)行文件; 將獲取的所述第一可執(zhí)行文件轉(zhuǎn)換為可讀的匯編器文件; 查找所述匯編器文件中包含的預(yù)設(shè)類型應(yīng)用程序編程接口。8.如權(quán)利要求7所述的應(yīng)用程序編程接口的檢測方法,其特征在于,所述在解析的所述第一安裝包中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的各個日志記錄代碼,生成所述待測應(yīng)用對應(yīng)的第二安裝包包括: 在所述匯編器文件中嵌入查找到的各個所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼; 將嵌入日志記錄代碼后的所述匯編器文件轉(zhuǎn)換為第二可執(zhí)行文件; 采用所述第二可執(zhí)行文件替換所述第一安裝包中的第一可執(zhí)行文件,生成所述第二安裝包。9.一種應(yīng)用程序編程接口的檢測方法,其特征在于,所述應(yīng)用程序編程接口的檢測方法包括: 測試終端在接收到服務(wù)器發(fā)送的第二安裝包時,下載所述第二安裝包,安裝待測應(yīng)用,其中,所述第二安裝包為所述服務(wù)器在所述待測應(yīng)用對應(yīng)的第一安裝包中嵌入各個預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志記錄代碼后生成; 運行所述待測應(yīng)用,其中,在所述待測應(yīng)用運行過程中,每次調(diào)用預(yù)設(shè)類型應(yīng)用程序編程接口均運行調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口的日志記錄代碼,以生成調(diào)用的所述預(yù)設(shè)類型應(yīng)用程序編程接口對應(yīng)的日志文件; 獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器,以供所述服務(wù)器根據(jù)所述日志文件檢測所述測試終端運行所述待測應(yīng)用時調(diào)用的預(yù)設(shè)類型應(yīng)用程序編程接口。10.如權(quán)利要求9所述的應(yīng)用程序編程接口的檢測方法,其特征在于,所述獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器之前,還包括: 確定所述待測應(yīng)用是否測試完成; 在所述待測應(yīng)用測試完成時,獲取所述待測應(yīng)用的日志文件,將所述日志文件發(fā)送至所述服務(wù)器。
【文檔編號】G06F21/56GK106096399SQ201610387190
【公開日】2016年11月9日
【申請日】2016年6月1日 公開號201610387190.6, CN 106096399 A, CN 106096399A, CN 201610387190, CN-A-106096399, CN106096399 A, CN106096399A, CN201610387190, CN201610387190.6
【發(fā)明人】敖武陽
【申請人】努比亞技術(shù)有限公司