欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

應(yīng)用程序檢測方法和裝置制造方法

文檔序號:6628058閱讀:390來源:國知局
應(yīng)用程序檢測方法和裝置制造方法
【專利摘要】本發(fā)明提供一種應(yīng)用程序檢測方法和裝置,其中,該方法包括:從第一虛擬機(jī)中獲取安卓系統(tǒng)中第一應(yīng)用程序運(yùn)行時所執(zhí)行的第一接口的信息,所述第一接口的信息包括所述第一接口的名稱、所述第一接口所屬的類的名稱、所述第一接口所屬的目錄的名稱;根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息匹配,確定所述第一應(yīng)用程序執(zhí)行惡意行為;所述預(yù)設(shè)接口信息集包括各預(yù)設(shè)接口的信息,所述預(yù)設(shè)接口的信息包括預(yù)設(shè)接口所屬的目錄的名稱、所述預(yù)設(shè)接口所屬的類的名稱、所述預(yù)設(shè)接口的名稱。從而隨時分析應(yīng)用程序運(yùn)行時是否執(zhí)行惡意行為,提高檢測精確率,解決了現(xiàn)有技術(shù)中的問題。
【專利說明】應(yīng)用程序檢測方法和裝置

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種應(yīng)用程序檢測方法和裝置。

【背景技術(shù)】
[0002] 隨著科技的發(fā)展和安卓(英文:Android)系統(tǒng)的迅速普及,用于運(yùn)行Android系 統(tǒng)的設(shè)備越來越多,例如:智能手機(jī)、平板電腦等,而且為Android系統(tǒng)開發(fā)的應(yīng)用程序也 越來越多,因此用戶可以在Android系統(tǒng)的設(shè)備上會安裝各種各樣的應(yīng)用程序,同時也需 要安裝應(yīng)用程序檢測軟件對這些應(yīng)用程序進(jìn)行檢測,如設(shè)備中存儲有用戶的大量隱私信 息,為了避免用戶的隱私信息被一些惡意的應(yīng)用程序獲取,在Android系統(tǒng)的設(shè)備上需要 有應(yīng)用程序檢測軟件能檢測出這些惡意的應(yīng)用程序,以避免用戶信息泄露。
[0003] 現(xiàn)有技術(shù)中通過在Android系統(tǒng)的設(shè)備中安裝各應(yīng)用程序的時候,采用安全檢測 軟件對各應(yīng)用程序的安裝包進(jìn)行檢測,以確定該應(yīng)用程序是否會執(zhí)行惡意行為。然而,這種 方式不能對各應(yīng)用程序的更新包進(jìn)行檢測,從而無法檢測出更新包中引發(fā)的惡意行為,導(dǎo) 致檢測精確率低。


【發(fā)明內(nèi)容】

[0004] 本發(fā)明提供一種應(yīng)用程序檢測方法和裝置,用于提尚檢測精確率,解決了現(xiàn)有技 術(shù)中的問題。
[0005] 第一方面,本發(fā)明提供一種應(yīng)用程序檢測方法,包括:
[0006] 從第一虛擬機(jī)(例如Dalvik虛擬機(jī))中獲取Android系統(tǒng)中第一應(yīng)用程序運(yùn)行 時所執(zhí)行的第一接口的信息,所述第一接口的信息包括所述第一接口的名稱、所述第一接 口所屬的類的名稱、所述第一接口所屬的目錄的名稱;
[0007] 根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息匹配,確定所述 第一應(yīng)用程序執(zhí)行惡意行為;所述預(yù)設(shè)接口信息集包括各預(yù)設(shè)接口的信息,所述預(yù)設(shè)接口 的信息包括預(yù)設(shè)接口所屬的目錄的名稱、所述預(yù)設(shè)接口所屬的類的名稱、所述預(yù)設(shè)接口的 名稱。
[0008] 第二方面,本發(fā)明提供一種應(yīng)用程序檢測裝置,包括:
[0009] 第一獲取單元,用于從第一虛擬機(jī)(例如Dalvik虛擬機(jī))中獲取Android系統(tǒng)中 第一應(yīng)用程序運(yùn)行時所執(zhí)行的第一接口的信息,所述第一接口的信息包括所述第一接口的 名稱、所述第一接口所屬的類的名稱、所述第一接口所屬的目錄的名稱;
[0010] 第一確定單元,用于根據(jù)所述獲取單元獲取的所述第一接口的信息與預(yù)設(shè)接口信 息集中一預(yù)設(shè)接口的信息匹配,確定所述第一應(yīng)用程序執(zhí)行惡意行為;所述預(yù)設(shè)接口信息 集包括各預(yù)設(shè)接口的信息,所述預(yù)設(shè)接口的信息包括預(yù)設(shè)接口所屬的目錄的名稱、所述預(yù) 設(shè)接口所屬的類的名稱、所述預(yù)設(shè)接口的名稱。
[0011] 本發(fā)明實(shí)施例提供的應(yīng)用程序檢測和裝置,通過獲取Android系統(tǒng)中第一應(yīng)用程 序運(yùn)行時所執(zhí)行的第一接口的信息;并根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集中一預(yù) 設(shè)接口的信息匹配,確定所述第一應(yīng)用程序執(zhí)行惡意行為??梢酝ㄟ^虛擬機(jī)來獲取應(yīng)用程 序運(yùn)行時所執(zhí)行的接口的信息,從而隨時分析應(yīng)用程序運(yùn)行時是否執(zhí)行惡意行為,提高檢 測精確率,解決了現(xiàn)有技術(shù)中的問題。

【專利附圖】

【附圖說明】
[0012] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根 據(jù)這些附圖獲得其他的附圖。
[0013] 圖1為本發(fā)明應(yīng)用程序檢測方法實(shí)施例一的流程圖;
[0014] 圖2為本發(fā)明應(yīng)用程序檢測方法實(shí)施例二的流程圖;
[0015] 圖3為本發(fā)明實(shí)施例提供的第一應(yīng)用程序運(yùn)行時所執(zhí)行的接口的信息的一種示 意圖;
[0016] 圖4為本發(fā)明實(shí)施例提供的預(yù)設(shè)接口信息集的一種示意圖;
[0017] 圖5為本發(fā)明實(shí)施例提供的根據(jù)第一接口的信息查找三級鏈表的一種示意圖;
[0018] 圖6為本發(fā)明應(yīng)用程序檢測方法實(shí)施例三的流程圖;
[0019] 圖7為本發(fā)明實(shí)施例提供的應(yīng)用程序檢測裝置的第一應(yīng)用界面的一種示意圖;
[0020] 圖8為本發(fā)明實(shí)施例提供的應(yīng)用程序檢測裝置的第二應(yīng)用界面的一種示意圖;
[0021] 圖9為本發(fā)明應(yīng)用程序檢測裝置實(shí)施例一的結(jié)構(gòu)示意圖;
[0022] 圖10為本發(fā)明應(yīng)用程序檢測裝置實(shí)施例二的結(jié)構(gòu)示意圖。

【具體實(shí)施方式】
[0023] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0024] 圖1為本發(fā)明應(yīng)用程序檢測方法實(shí)施例一的流程圖,如圖1所示,本實(shí)施例的方法 可以由應(yīng)用程序檢測裝置來執(zhí)行,例如:應(yīng)用程序檢測軟件,本實(shí)施例的方法可以包括:
[0025] S101、從第一虛擬機(jī)中獲取安卓系統(tǒng)中第一應(yīng)用程序運(yùn)行時所執(zhí)行的第一接口的 信息,所述第一接口的信息包括所述第一接口的名稱、所述第一接口所屬的類的名稱、所述 第一接口所屬的目錄的名稱。
[0026] 本實(shí)施例中第一虛擬機(jī)可以為Dalvik虛擬機(jī),Dalvik虛擬機(jī)是安卓(英文: Android)系統(tǒng)中應(yīng)用程序的虛擬機(jī),也是Android系統(tǒng)中Java程序的運(yùn)行基礎(chǔ),Android 系統(tǒng)中的每一個應(yīng)用程序在底層都會對應(yīng)一個獨(dú)立的Dalvik虛擬機(jī)實(shí)例,應(yīng)用程序的代 碼在Dalvik虛擬機(jī)的解釋器下得以執(zhí)行,Dalvik虛擬機(jī)中的解釋器在執(zhí)行應(yīng)用程序時, 可以獲得該應(yīng)用程序所執(zhí)行的所有接口的信息,從而本實(shí)施例中的應(yīng)用程序檢測裝置可以 獲取第一應(yīng)用程序所執(zhí)行的第一接口的信息,第一應(yīng)用程序可以為Android系統(tǒng)中所有應(yīng) 用程序中任一應(yīng)用程序,第一接口可以為第一應(yīng)用程序所執(zhí)行的所有接口中的任一接口。 該第一接口的信息包括第一接口的名稱、第一接口所屬的類的名稱、第一接口所屬的目錄 的名稱,例如:第一接口 的信息可以為:D/dalvikvm(l772) :Landroid/net/LocalSocket ;· connect。其中,net (中文:網(wǎng)絡(luò))為第一接口所屬的目錄的名稱,LocalSocket (中文:本 地套接字)為第一接口所屬的類的名稱,connect (中文:連接)為第一接口的名稱。
[0027] S102、根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集中任一預(yù)設(shè)接口的信息匹配, 確定所述第一應(yīng)用程序執(zhí)行惡意行為;所述預(yù)設(shè)接口信息集包括各預(yù)設(shè)接口的信息,所述 預(yù)設(shè)接口的信息包括預(yù)設(shè)接口所屬的目錄的名稱、所述預(yù)設(shè)接口所屬的類的名稱、所述預(yù) 設(shè)接口的名稱。
[0028] 本實(shí)施例中,預(yù)先設(shè)置有預(yù)設(shè)接口信息集,預(yù)設(shè)接口信息集包括各預(yù)設(shè)接口的信 息,預(yù)設(shè)接口的信息包括預(yù)設(shè)接口所屬的目錄的名稱、所述預(yù)設(shè)接口所屬的類的名稱、所述 預(yù)設(shè)接口的名稱。預(yù)設(shè)接口可以為敏感接口,若第一應(yīng)用程序所執(zhí)行的第一接口為各預(yù)設(shè) 接口中的一個,則可以確定第一應(yīng)用程序執(zhí)行了敏感接口,從而可以確定該第一應(yīng)用程序 執(zhí)行了惡意行為。確定第一接口是否為各預(yù)設(shè)接口中的一個,可以通過判斷第一接口的信 息是否與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息匹配,若匹配,則確定第一接口為各預(yù)設(shè)接 口中的一個,若不匹配,則確定第一接口不是預(yù)設(shè)接口。判斷第一接口的信息是否與預(yù)設(shè)接 口信息集中一預(yù)設(shè)接口的信息匹配,具體地,判斷第一接口的信息中的第一接口所屬的目 錄的名稱、第一接口所屬的類的名稱、第一接口的名稱是否分別與一預(yù)設(shè)接口的信息中的 預(yù)設(shè)接口所屬的目錄的名稱、預(yù)設(shè)接口所屬的類的名稱、預(yù)設(shè)接口的名稱一致,若一致,則 確定第一接口的信息與預(yù)設(shè)接口信息集中任一預(yù)設(shè)接口的信息匹配,若不一致,則確定第 一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息不匹配。
[0029] 例如:若預(yù)設(shè)接口信息集中的一預(yù)設(shè)接口的信息為:net/LocalSocket/connect, 則第一接口所屬的目錄的名稱也為net,第一接口所屬的類的名稱也為LocalSocket,第一 接口的名稱也為connect,從而可以確定第一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口 的信息區(qū)配。
[0030] 需要說明的是,若第一應(yīng)用程序執(zhí)行的所有接口中沒有一個接口為預(yù)設(shè)接口,則 可以確定第一應(yīng)用程序執(zhí)行的是安全行為。
[0031] 本發(fā)明實(shí)施例提供的應(yīng)用程序檢測方法,通過獲取Android系統(tǒng)中第一應(yīng)用程序 運(yùn)行時所執(zhí)行的第一接口的信息;并根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè) 接口的信息匹配,確定所述第一應(yīng)用程序執(zhí)行惡意行為??梢酝ㄟ^虛擬機(jī)來獲取應(yīng)用程序 運(yùn)行時所執(zhí)行的接口的信息,從而隨時分析應(yīng)用程序運(yùn)行時是否執(zhí)行惡意行為,提高檢測 精確率,解決了現(xiàn)有技術(shù)中的問題。
[0032] 圖2為本發(fā)明應(yīng)用程序檢測方法實(shí)施例二的流程圖,如圖2所示,本實(shí)施例的方法 可以由應(yīng)用程序檢測裝置來執(zhí)行,例如:應(yīng)用程序檢測軟件,本實(shí)施例的方法可以包括:
[0033] S201、獲取Zygote進(jìn)程的進(jìn)程號。
[0034] 本實(shí)施例中,Android系統(tǒng)是基于Linux的多任務(wù)系統(tǒng),同一時刻Android系統(tǒng)中 可能存在多個進(jìn)程在同時運(yùn)行,這些進(jìn)程中不僅包括應(yīng)用程序還包括大量的系統(tǒng)進(jìn)程,因 此需要確定這些進(jìn)程中哪些進(jìn)程是應(yīng)用程序的進(jìn)程。
[0035] 在Android系統(tǒng)系統(tǒng)中,Zygote進(jìn)程是由init進(jìn)程啟動的一個重要的進(jìn)程,它是 一個第一虛擬機(jī),比如Dalvik虛擬機(jī),的進(jìn)程,同時也是一個Dalvik虛擬機(jī)實(shí)例的孵化器。 每當(dāng)Android系統(tǒng)要求執(zhí)行一個應(yīng)用程序時,Zygote進(jìn)程就會孵化(FORK)出一個進(jìn)程來 執(zhí)行該應(yīng)用程序,該進(jìn)程為該應(yīng)用程序的進(jìn)程,因此應(yīng)用程序的進(jìn)程的父進(jìn)程為Zygote進(jìn) 程,從而可以根據(jù)進(jìn)程的父進(jìn)程是否為Zygote進(jìn)程來判斷該進(jìn)程是否為應(yīng)用程序的進(jìn)程。 判斷應(yīng)用程序的進(jìn)程的父進(jìn)程是否為Zygote進(jìn)程,即判斷應(yīng)用程序的進(jìn)程的父進(jìn)程的進(jìn) 程號與Zygote進(jìn)程的進(jìn)程號是否相同,因此,本實(shí)施例可以先獲取Zygote進(jìn)程的進(jìn)程號, 例如可以通過接口 findZygotePid()獲得Zygote進(jìn)程的進(jìn)程號,具體可以通過如下所示的 代碼來實(shí)現(xiàn):
[0036] pid_t fmdZygotePid(char ^pidName) { ? * * ·?· 中包IS&jl的迸程儒:息,讀取壤貝謙 opendir("/proc"); :*·.:?: ·:> //遍歷/proc里面的目錄 while ((next = readdir(dir)) != NULL) | //設(shè)置進(jìn)程
[0037] sprintf(fi!ename, "/piOc/%s/statos", nexlr^i_iiame), if (! (status = fbpen(filename, "r"]p) { continue; if (fgets(buffer, EEAD_BUF-SIZE-1,status)拿 NULL) { fclose(status); continue:;; fclose(status); //得到進(jìn)糧M sscanf(buffer, "%*s %s", name); if(strcmp(nam0s pdName) == 0) { pid_t spZg = stitol(next->dj3amesuNtlLL·, 0), return spZg; } }
[0038] S202、當(dāng)?shù)谝贿M(jìn)程運(yùn)行時,獲取所述第一進(jìn)程的父進(jìn)程的進(jìn)程號。
[0039] S203、根據(jù)所述第一進(jìn)程的父進(jìn)程的進(jìn)程號與所述Zygote進(jìn)程的進(jìn)程號相同,確 定所述第一進(jìn)程所在的應(yīng)用程序為所述第一應(yīng)用程序。
[0040] 本實(shí)施例中,在Android系統(tǒng)中有進(jìn)程運(yùn)行時,如第一進(jìn)程運(yùn)行時,第一進(jìn)程為 Android系統(tǒng)中當(dāng)前運(yùn)行的所有進(jìn)程中的任一進(jìn)程,可以獲取第一進(jìn)程的父進(jìn)程的進(jìn)程號, 如可以通過getppidO接口獲得第一進(jìn)程的父進(jìn)程號。然后判斷該第一進(jìn)程的父進(jìn)程的進(jìn) 程號與Zygote進(jìn)程的進(jìn)程號是否相同,若確定第一進(jìn)程的父進(jìn)程的進(jìn)程號與Zygote進(jìn)程 的進(jìn)程號不相同,則確定第一進(jìn)程不是應(yīng)用程序的進(jìn)程,若確定第一進(jìn)程的父進(jìn)程的進(jìn)程 號與Zygote進(jìn)程的進(jìn)程號相同,貝 1J第一進(jìn)程是應(yīng)用程序的進(jìn)程,可以稱第一進(jìn)程所在的應(yīng) 用程序為第一應(yīng)用程序。具體可以通過如下所示的代碼來實(shí)現(xiàn):
[0041] if (getppidO =- pidZygote) {
[0042] 憤 e pthr轉(zhuǎn)WUIi,(vqM *)dete^_th聯(lián)d,NULL》; ? · *.?.? · }
[0043] S2〇4、從第一虛擬機(jī)中獲取所述第一應(yīng)用程序運(yùn)行時所執(zhí)行的第一接口的信息, 所述第一接口的信息包括所述第一接口的名稱、所述第一接口所屬的類的名稱、所述第一 接口所屬的目錄的名稱、所述第一接口所屬的庫的名稱。
[0044] 本實(shí)施例中,從Dalvik虛擬機(jī)中獲取所述第一應(yīng)用程序運(yùn)行時所執(zhí)行的第一接 口的信息的具體實(shí)現(xiàn)過程與圖1所示的S101的具體實(shí)現(xiàn)過程類似,此處不再贅述。值得注 意的是,本實(shí)施例中的第一接口的信息包括:所述第一接口所屬的庫的名稱、所述第一接口 所屬的目錄的名稱、所述第一接口所屬的類的名稱、所述第一接口的名稱。
[0045] 在第一應(yīng)用程序執(zhí)行過程中,Dalvik虛擬機(jī)可以輸出該第一應(yīng)用程序所調(diào)用的接 口的伯息,如圖3所不,第一應(yīng)用程序在運(yùn)行時會執(zhí)行三類庫中的接口,這三類庫的名稱分 別為:Ljava、Lcom、Landroid,Ljava中的接口表示java庫里面的接口,Lcom中的接口表 示開發(fā)者開發(fā)的接口,Landroid中的接口表示Android Framework(框架)里面的接口,而 Landroid中的接口為Android系統(tǒng)調(diào)用的接口。
[0046] S2〇5、根據(jù)所述第一接口所屬的庫的名稱為安卓本地庫,確定所述第一接口為安 卓系統(tǒng)的應(yīng)用程序編程接口(Application Programming Interface,簡稱:API)。
[0047] 本實(shí)施例中,第一接口可以為第一應(yīng)用程序所執(zhí)行的所有接口中的任一接口, 在獲取第一接口的信息后,可以判斷第一接口的信息中第一接口所屬的庫的名稱是否為 安卓本地庫(英文:Landroid),若確定第一接口的信息中第一接口所屬的庫的名稱不是 Landroid,即第一接口所屬的庫的名稱為L java或Lcom,則該接口不是Android系統(tǒng)調(diào)用的 接口,則對于該第一接口而言,則結(jié)束檢測流程;若確定第一接口的信息中第一接口所屬的 庫的名稱是Landroid,則該第一接口是Android系統(tǒng)調(diào)用的接口,即該第一接口為Android 系統(tǒng)的API,然后再執(zhí)行S206。
[0048] S2〇6、根據(jù)預(yù)設(shè)接口信息集,生成三級鏈表,所述預(yù)設(shè)接口信息集包括各預(yù)設(shè)接口 的信息,所述預(yù)設(shè)接口的信息包括預(yù)設(shè)接口所屬的目錄的名稱、所述預(yù)設(shè)接口所屬的類的 名稱、所述預(yù)設(shè)接口的名稱,所述三級鏈表的第一級存儲各預(yù)設(shè)接口所屬的目錄的名稱,所 述三級鏈表的第二級存儲各預(yù)設(shè)接口所屬的類的名稱,所述三級鏈表的第三級存儲各預(yù)設(shè) 接口的名稱。
[0049]本實(shí)施例中,預(yù)設(shè)接口信息集可以存儲在工作目錄(如/data/, security/)中, 該工作目錄的屬性為可讀寫,預(yù)設(shè)接口信息集可以存儲在func_malware. h文件中,如圖 4所示,圖4中示出6個預(yù)設(shè)接口的信息,net和os分別為預(yù)設(shè)接口所在的目錄的名稱, UriSAbstractPart、LocalSocket、Parcel、MessageQueue 分別為預(yù)設(shè)接口所在的類的名 稱,getDecoded、connect、recycle、obtain、rcelable、removeMessages 分別為預(yù)設(shè)接口 的名稱。本實(shí)施例可以根據(jù)預(yù)設(shè)接口信息集來生成易于查找的三級鏈表,該三級鏈表可以 存儲在內(nèi)存中,該三級鏈表包括三級,第一級存儲各預(yù)設(shè)接口所屬的目錄的名稱,用于查 找Landroid庫中的不同目錄,例如第一級可以包括: andr〇id. bluetooth、android, media、 android· net、android、net. http、android· net. wifi、android· telephony ;第二級存儲各 預(yù)設(shè)接口所屬的類的名稱,用于查找各目錄中的不同類:例如目錄android, net中的第二 級可以包括:android· net/ConnectivityManager、android. net/LocalSocket、android. net/TrafficStats ;第三級存儲各預(yù)設(shè)接口的名稱,用于查找各類中的不同接口,例如目 錄 android, net 中類 LocalSocket 中的第三級可以包括:android. net/LocalSocket/ connectO、android· net/LocalSocket./close()、android· net/LocalSocket/ getFileDescriptor() 'android. net/LocalSocket/getLocalSocketAddress()。
[0050] 其中,根據(jù)預(yù)設(shè)接口信息集,生成三級鏈表可以通過如下所示的函數(shù)來實(shí)現(xiàn): static int create-detect-list()〇
[0051] S207、根據(jù)所述第一接口的信息,查找所述三級鏈表。
[0052] S2〇S、若所述第一接口的信息在所述三級鏈表中能查找到,則確定所述第一應(yīng)用 程序執(zhí)行惡意行為。
[0053] 本實(shí)施例中,在獲取第一應(yīng)用程序在運(yùn)行時所執(zhí)行的第一接口的信息以及根據(jù)預(yù) 設(shè)接口信息集生成三級鏈表之后,根據(jù)第一接口的信息來查找三級鏈表,若第一接口的信 息為Landroid/net/LocalSocket->connect (),具體實(shí)現(xiàn)過程如圖5所示,三級鏈表中的 第一級(目錄的名稱)為net (中文:網(wǎng)絡(luò))、telephony (中文:電話)、bluetooth (中文: 藍(lán)牙),其它目錄的名稱未示出,其中,第一級目錄net包括的第二級(類的名稱)分別為 LockSocket (中文:本地套接字)、LockSocketService (中文:本地套接字服務(wù))、Proxy (中 文:代理),其它目錄中的第二級和第三級未示出;第一級目錄net中第二級LockSocket 包括的第三級(接口的名稱)分別為connectO (中文:連接())、cl〇se()(中文:關(guān)閉 ())、Bind()(中文:綁定());其它類中的第三級未示出。根據(jù)第一接口的信息中第一接 口所在的目錄的名稱net去查找三級鏈表中的第一級,可以命中第一級中的 net,然后根據(jù) 第一接口的信息中第一接口所在的類的名稱LocalSocket去查找剛剛查找到的第一級中 net中的第二級,可以命令第二級中的LocaSoket,然后根據(jù)第一接口的信息中第一接口的 名稱connectO去查找剛剛查找到的第二級LocaSoket中的第三級,可以命令第三級中的 connect (),表示第一接口的信息在第三級鏈表中能查找到,第一接口為預(yù)設(shè)接口,從而可 以確定第一應(yīng)用程序執(zhí)行惡意行為。若第一接口的信息中的第一接口所在的目錄的名稱、 第一接口所在的類的名稱、第一接口的名稱中至少一個未在三級鏈表中查找到,則說明第 一接口不是預(yù)設(shè)接口,從而可以確定第一應(yīng)用程序未執(zhí)行惡意行為。
[0054] 其中,根據(jù)所述第一接口的信息查找所述三級鏈表可以通過如下所示的函數(shù)來實(shí) 3? :static int match_method(char氺classdis,char氺method-name)〇
[0055] 本實(shí)施例,通過虛擬機(jī)來獲取應(yīng)用程序運(yùn)行時所執(zhí)行的接口的信息,從而隨時分 析應(yīng)用程序運(yùn)行時是否執(zhí)行惡意行為,提高檢測精確率,解決了現(xiàn)有技術(shù)中的問題。
[0056] 圖6為本發(fā)明應(yīng)用程序檢測方法實(shí)施例三的流程圖,如圖6所示,本實(shí)施例的方法 可以由應(yīng)用程序檢測裝置來執(zhí)行,例如:應(yīng)用程序檢測軟件,本實(shí)施例的方法可以包括:
[0057] S301、獲取Zygote進(jìn)程的進(jìn)程號。
[0058] S302、當(dāng)?shù)谝贿M(jìn)程運(yùn)行時,獲取所述第一進(jìn)程的父進(jìn)程的進(jìn)程號。
[0059] S303、根據(jù)所述第一進(jìn)程的父進(jìn)程的進(jìn)程號與所述Zygote進(jìn)程的進(jìn)程號相同,確 定所述第一進(jìn)程所在的應(yīng)用程序為所述第一應(yīng)用程序。
[0060] S304、從第一虛擬機(jī)中獲取所述第一應(yīng)用程序運(yùn)行時所執(zhí)行的第一接口的信息, 所述第一接口的信息包括所述第一接口的名稱、所述第一接口所屬的類的名稱、所述第一 接口所屬的目錄的名稱、所述第一接口所屬的庫的名稱。
[0061] S305、根據(jù)所述第一接口所屬的庫的名稱為安卓本地庫,確定所述第一接口為安 卓系統(tǒng)的API。
[0062] 本實(shí)施例中,S301-S305的具體實(shí)現(xiàn)過程與圖2所示的S201-S205的具體實(shí)現(xiàn)過 程類似,此處不再贅述。
[0063] S306、根據(jù)先入先出的隊列形式,將所述第一接口的信息進(jìn)行存儲。
[0064] 本實(shí)施例中,若第一應(yīng)用程序執(zhí)行的安卓(英文:Android)系統(tǒng)的API為多個,第 一接口為第一應(yīng)用程序執(zhí)行的Android系統(tǒng)的API中的任一個,而且檢測第一接口的信息 與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息是否匹配需要耗費(fèi)一定的時間,因此,在確定第一 接口為Android系統(tǒng)的API之后,可以將該第一接口的信息根據(jù)先入先出的隊列形式進(jìn)行 緩存,其中,該隊列形式的實(shí)現(xiàn)需要實(shí)現(xiàn)如下所述的接口:
[0065] 隊列初始化:detect_queue_init ();
[0066] 隊列銷毀:detect_queue_des ();
[0067] 入隊:detect_queue_in();
[0068] 出隊:detect_queue_out ();
[0069] 判斷隊列空:detect_queue_empty();
[0070] 判斷隊列滿:detect_queue_full ()。
[0071] 其中,第一接口的信息可以以如下所述的數(shù)據(jù)結(jié)構(gòu)進(jìn)行緩存:
[0072] Ipedef ste?t && {J ,點(diǎn)數(shù)據(jù) char app_name[50]; // 進(jìn)程名 int app_pid; // 進(jìn)程 _id char ?fessjfap?]; char method-na_me[50]。 } QOEDAm,
[0073] 例如,在確定第一接口為Android系統(tǒng)的API后,可以為先入先出隊列分配緩存空 間,用于緩存第一接口的信息,具體可以通過如下所述的代碼實(shí)現(xiàn):
[0074] if I flagSee &#: NULL !- strstr(curMethod->clazz->descnptGr, "Landroid") && !g_pq->destoryed ) { fi^UEDATA pqdiia; pqdata = (pQUEDATA;|malloc(sizeof(QUEDATA)); |5giata-^app_pid = self->systemTid; memcpy(pqdata->class_des, curMethod->clazz->descriptor, sti len(curMethod->clazz->descriptor)+l); :memcpy(pqdata->method_name, cur!Vlethod->imdK::,: strJen(curMethod->name)+1); pthread_mufex^lock(&queue_lock); inQueue(g_pqs pqdata); pthread_mutex_unlock(&queue_l@dk|; i
[0075] S307、根據(jù)先入先出的隊列形式,獲取存儲的所述第一接口的信息。
[0076] 本實(shí)施例中,在第一接口根據(jù)先入先出的隊列形式進(jìn)行緩存后,在需要對第一接 口進(jìn)行檢測埋,根據(jù)先入先出的隊列形式,獲取緩存的第一接口的信息,然后再執(zhí)行S308。 [0077] S308、根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息匹配,確 定所述第一應(yīng)用程序執(zhí)行惡意行為;所述預(yù)設(shè)接口信息集包括各預(yù)設(shè)接口的信息,所述預(yù) 設(shè)接口的信息包括預(yù)設(shè)接口所屬的目錄的名稱、所述預(yù)設(shè)接口所屬的類的名稱、所述預(yù)設(shè) 接口的名稱。
[0078] 本實(shí)施例中,S308的具體實(shí)現(xiàn)過程與圖1所示的S102或圖2所示的S206-S208的 具體實(shí)現(xiàn)過程類似,詳細(xì)可以參見上述方法實(shí)施例中的相關(guān)記載,此處不再贅述。
[0079] S309、生成日記記錄文件,所述日記記錄文件包括:所述第一應(yīng)用程序的名稱、所 述第一應(yīng)用程序執(zhí)行的所述第一接口的信息、以及所述第一應(yīng)用程序執(zhí)行所述第一接口的 時間。
[0080] 本實(shí)施例中,在確定第一接口為預(yù)設(shè)接口后,生成日記記錄文件,日記記錄文件包 括:第一應(yīng)用程序的名稱、所述第一應(yīng)用程序執(zhí)行的所述第一接口的信息、以及所述第一應(yīng) 用程序執(zhí)行所述第一接口的時間。例如日記記錄文件為log文件,該log文件以第一應(yīng)用 程序的名稱來命令,即app_name. log文件,對第一應(yīng)用程序執(zhí)行的所有Android系統(tǒng)的API 進(jìn)行檢測后,可以確定第一應(yīng)用程序執(zhí)行的至少一個Android系統(tǒng)的API為預(yù)設(shè)接口,該至 少一個Android系統(tǒng)的API的信息可以記錄在app_name. log中,而且相應(yīng)的Android系統(tǒng) 的API的執(zhí)行時間也可以記錄在app_name. log中。為了不影響Android系統(tǒng)的運(yùn)行速度, 這個日記記錄文件大多數(shù)時間緩存在內(nèi)存里,只有在特定的時刻,如Android系統(tǒng)空閑、第 一應(yīng)用程序退出才回寫到文件系統(tǒng)中。
[0081] 可選地,圖2所示的S206中提到的工作目錄(如/data/· security/)還可以存儲 S309中所生成的日記記錄文件,即log文件,該工作目錄的初始化過程可以通過如下所示 的代碼來實(shí)現(xiàn):
[0082] int mkdir_security() { if (NULL opendii|7data/,securtyl,log/,H)) { if ( ENOENT = cirno ) { // directory /data/.sccurity/ not exist then create it mkdir("/data/.sccurity/log/", 0); chmod("/data/.security/1 og/", 0777); mtum 0· }
[0083] 可選地,S307-S309的具體過程可以通過如下所示的代碼來實(shí)現(xiàn):
[0084] //從隊列里取數(shù)據(jù) pthread_mutex_lock(?&queue_Iock); if (!IsEmpty(pq)) {
[0085] outQueue(pq, &data); I else { pthread_ffluti5i_unlock(&queue_Iock); return; } pth read_rautex_unloc k( &queue_lock); //在鏈表里搜憲:動據(jù),愈匹駆處:霜m回,匹配成功繼續(xù)執(zhí)行 if ( 0 != match_method(tmp_class_des, data.method_name)) // not match return; //保存數(shù)據(jù)到文件app_name.log f]puts(data.class_deSi 喔;// store claisyfe fputs(data.method_name, fp); // stori method_name /Γ獲得系統(tǒng)時間弁保存到文件app_imim:to| time(&rawtime); tiineinfb = localtime(&rawtime); sprintf(strtime, "%4d-%02d-%02d %02d:%02d:%02d", 1900 + iar, 1 + timeinfo->tm_mon, timcinfo->tm mday, timcinfo->tm_min, timcinfo->tm_sec); fputs(strtimc, fp);
[0086] 本實(shí)施例,通過虛擬機(jī)來獲取應(yīng)用程序運(yùn)行時所執(zhí)行的接口的信息,從而隨時分 析應(yīng)用程序運(yùn)行時是否執(zhí)行惡意行為,提高檢測精確率,解決了現(xiàn)有技術(shù)中的問題。
[0087]在本發(fā)明應(yīng)用程序檢測方法實(shí)施例四中,本實(shí)施例的方法在圖6所示方法實(shí)施例 的基礎(chǔ)上,進(jìn)一步地,還可以包括:根據(jù)所述日記記錄文件,顯示所述第一應(yīng)用程序的名稱、 所述第一應(yīng)用程序執(zhí)行的所述第一接口的信息以及所述第一應(yīng)用程序執(zhí)行所述第一接口 的時間。
[0088]本實(shí)施例中,在對第一應(yīng)用程序的所有第一接口檢測完成之后,生成日記記錄文 件,然后再根據(jù)日記記錄文件向用戶顯示(如在屏幕上顯示)第一應(yīng)用程序的名稱、所述第 一應(yīng)用程序執(zhí)行的所述第一接口的信息以及所述第一應(yīng)用程序執(zhí)行所述第一接口的時間。 或者,根據(jù)用戶需要,如獲取到用戶輸入的查看指令,根據(jù)日記記錄文件顯示所述第一應(yīng)用 程序的名稱、所述第一應(yīng)用程序執(zhí)行的所述第一接口的信息以及所述第一應(yīng)用程序執(zhí)行所 述第一接口的時間。
[0089] 例如:應(yīng)用程序檢測裝置可以掃描工作目錄/data/· security/log/里面的文件, 讀取文件app_name. log中的內(nèi)容,如第一應(yīng)用程序的名稱、第一應(yīng)用程序調(diào)用的第一接口 的信息、調(diào)用時間,并將這些內(nèi)容呈現(xiàn)給用戶。該應(yīng)用程序檢測裝置的第一應(yīng)用界面如圖7 所示,該第一應(yīng)用界面顯示執(zhí)行了惡意行為的所有應(yīng)用程序的名稱,第一應(yīng)用界面中是一 個縱向列表,每一表項對應(yīng)一個應(yīng)用程序檢測結(jié)果。用戶點(diǎn)擊每個表項,即點(diǎn)擊每個應(yīng)用程 序的名稱,即可進(jìn)入第二應(yīng)用界面,第二應(yīng)用界面將顯示詳細(xì)的檢測結(jié)果,如圖8所示,第 二應(yīng)用界面是所選的應(yīng)用程序的檢測結(jié)果,里面列出了檢測到的應(yīng)用程序調(diào)用預(yù)設(shè)接口的 詳細(xì)信息,包括各接口所在的目錄的名稱、各接口所在的類的名稱、各接口的名稱、各接口 調(diào)用的時間。
[0090] 在本發(fā)明應(yīng)用程序檢測方法實(shí)施例五中,本實(shí)施例五在圖6所示的方法實(shí)施例的 基礎(chǔ)上,本實(shí)施例的應(yīng)用程序檢測裝置作為一個插件,將檢測后生成的日記記錄文件提供 給其它的安全檢測軟件,由其它的安全檢測軟件向用戶顯示第一應(yīng)用程序的惡意行為,使 得其它的安全檢測軟件具有動態(tài)檢測的能力,且無需對framework層做大量修改。
[0091] 圖9為本發(fā)明應(yīng)用程序檢測裝置實(shí)施例一的結(jié)構(gòu)示意圖,如圖9所示,本實(shí)施例的 裝置可以包括:第一獲取單元11和第一確定單元12,其中,第一獲取單元11用于從第一虛 擬機(jī)(例如Dalvik虛擬機(jī))中獲取安卓(英文 :Android)系統(tǒng)中第一應(yīng)用程序運(yùn)行時所 執(zhí)行的第一接口的信息,所述第一接口的信息包括所述第一接口的名稱、所述第一接口所 屬的類的名稱、所述第一接口所屬的目錄的名稱;第一確定單元12用于根據(jù)所述獲取單元 獲取的所述第一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息匹配,確定所述第一應(yīng) 用程序執(zhí)行惡意行為;所述預(yù)設(shè)接口信息集包括各預(yù)設(shè)接口的信息,所述預(yù)設(shè)接口的信息 包括預(yù)設(shè)接口所屬的目錄的名稱、所述預(yù)設(shè)接口所屬的類的名稱、所述預(yù)設(shè)接口的名稱。
[0092] 本實(shí)施例的裝置,可以用于執(zhí)行本發(fā)明上述方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理 和技術(shù)效果類似,此處不再贅述。
[0093] 圖10為本發(fā)明應(yīng)用程序檢測裝置實(shí)施例二的結(jié)構(gòu)示意圖,如圖10所示,本實(shí)施例 的裝置在圖9所示裝置結(jié)構(gòu)的基礎(chǔ)上,進(jìn)一步地,還可以包括:第一生成單元13,該第一生 成單元13用于在第一確定單元12根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接 口的信息匹配,確定所述第一應(yīng)用程序執(zhí)行惡意行為之前,根據(jù)所述預(yù)設(shè)接口信息集,生成 三級鏈表,所述三級鏈表的第一級存儲各預(yù)設(shè)接口所屬的目錄的名稱,所述三級鏈表的第 二級存儲各預(yù)設(shè)接口所屬的類的名稱,所述三級鏈表的第三級存儲各預(yù)設(shè)接口的名稱;第 一確定單元I2具體用于根據(jù)所述第一接口的信息,查找所述三級鏈表;若所述第一接口的 信息在所述三級鏈表中能查找到,則確定所述第一應(yīng)用程序執(zhí)行惡意行為。
[0094] 可選地,本實(shí)施例的裝置還可以包括:第二確定單元14 ;上述的第一獲取單元11 還用于在獲取Android系統(tǒng)中第一應(yīng)用程序運(yùn)行時所執(zhí)行的第一接口的信息之前,獲取 Zygote進(jìn)程的進(jìn)程號;以及當(dāng)?shù)谝贿M(jìn)程運(yùn)行時,獲取所述第一進(jìn)程的父進(jìn)程的進(jìn)程號;第 二確定單元14用于根據(jù)所述第一進(jìn)程的父進(jìn)程的進(jìn)程號與所述 Zyg〇te進(jìn)程的進(jìn)程號相 同,確定所述第一進(jìn)程所在的應(yīng)用程序為所述第一應(yīng)用程序。
[0095] 可選地,本實(shí)施例的裝置還可以包括:第三確定單元15;所述第一接口的信息 還包括所述第一接口所屬的庫的名稱;該第三確定單元15,用于在第一獲取單元11獲取 Android系統(tǒng)中第一應(yīng)用程序運(yùn)行時所執(zhí)行的第一接口的信息之后,根據(jù)所述第一接口所 屬的庫的名稱為安卓本地庫(英文:Landroid),確定所述第一接口為Android系統(tǒng)的API。 [0096] 可選地,本實(shí)施例的裝置還可以包括:存儲單元16和第二獲取單元17,其中,存儲 單元16用于在第三確定單元15確定所述第一接口為Android系統(tǒng)的應(yīng)用程序編程接口 API之后,根據(jù)先入先出的隊列形式,將所述第一接口的信息進(jìn)行存儲;第二獲取單元17用 于在第一確定單元12根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息匹 配,確定所述第一應(yīng)用程序執(zhí)行惡意行為之前,根據(jù)先入先出的隊列形式,獲取存儲的所述 第一接口的信息。
[0097] 可選地,本實(shí)施例的裝置還可以包括:第二生成單元18,該第二生成單元18用于 在第一確定單元12根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息匹 配,確定所述第一應(yīng)用程序執(zhí)行惡意行為之后,生成日記記錄文件,所述日記記錄文件包 括:所述第一應(yīng)用程序的名稱、所述第一應(yīng)用程序執(zhí)行的所述第一接口的信息、以及所述第 一應(yīng)用程序執(zhí)行所述第一接口的時間。
[0098] 可選地,本實(shí)施例的裝置還可以包括:顯示單元19,該顯示單元19,用于在第二 生成單元18生成日記記錄文件之后,根據(jù)所述日記記錄文件,顯示所述第一應(yīng)用程序的名 稱、所述第一應(yīng)用程序執(zhí)行的所述第一接口的信息以及所述第一應(yīng)用程序執(zhí)行所述第一接 口的時間。
[0099]本實(shí)施例的裝置,可以用于執(zhí)行本發(fā)明上述方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理 和技術(shù)效果類似,此處不再贅述。
[0100] 本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通 過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中。該程 序在執(zhí)行時,執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟 或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0101]最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制; 盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其 依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征 進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技 術(shù)方案的范圍。
【權(quán)利要求】
1. 一種應(yīng)用程序檢測方法,其特征在于,包括: 從第一虛擬機(jī)中獲取安卓系統(tǒng)中第一應(yīng)用程序運(yùn)行時所執(zhí)行的第一接口的信息,所述 第一接口的信息包括所述第一接口的名稱、所述第一接口所屬的類的名稱、所述第一接口 所屬的目錄的名稱; 根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息匹配,確定所述第一 應(yīng)用程序執(zhí)行惡意行為;所述預(yù)設(shè)接口信息集包括各預(yù)設(shè)接口的信息,所述預(yù)設(shè)接口的信 息包括預(yù)設(shè)接口所屬的目錄的名稱、所述預(yù)設(shè)接口所屬的類的名稱、所述預(yù)設(shè)接口的名稱。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述第一接口的信息與預(yù)設(shè)接 口信息集中一預(yù)設(shè)接口的信息匹配,確定所述第一應(yīng)用程序執(zhí)行惡意行為之前,還包括: 根據(jù)所述預(yù)設(shè)接口信息集,生成三級鏈表,所述三級鏈表的第一級存儲各預(yù)設(shè)接口所 屬的目錄的名稱,所述三級鏈表的第二級存儲各預(yù)設(shè)接口所屬的類的名稱,所述三級鏈表 的第三級存儲各預(yù)設(shè)接口的名稱; 所述根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息匹配,確定所述 第一應(yīng)用程序執(zhí)行惡意行為,包括: 根據(jù)所述第一接口的信息,查找所述三級鏈表; 若所述第一接口的信息在所述三級鏈表中能查找到,則確定所述第一應(yīng)用程序執(zhí)行惡 意行為。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述獲取安卓系統(tǒng)中第一應(yīng)用程序運(yùn) 行時所執(zhí)行的第一接口的信息之前,還包括: 獲取Zygote進(jìn)程的進(jìn)程號; 當(dāng)?shù)谝贿M(jìn)程運(yùn)行時,獲取所述第一進(jìn)程的父進(jìn)程的進(jìn)程號; 根據(jù)所述第一進(jìn)程的父進(jìn)程的進(jìn)程號與所述Zygote進(jìn)程的進(jìn)程號相同,確定所述第 一進(jìn)程所在的應(yīng)用程序為所述第一應(yīng)用程序。
4. 根據(jù)權(quán)利要求1-3任意一項所述的方法,其特征在于,所述第一接口的信息還包括 所述第一接口所屬的庫的名稱; 所述獲取安卓系統(tǒng)中第一應(yīng)用程序運(yùn)行時所執(zhí)行的第一接口的信息之后,還包括: 根據(jù)所述第一接口所屬的庫的名稱為安卓本地庫,確定所述第一接口為安卓系統(tǒng)的應(yīng) 用程序編程接口 API。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述確定所述第一接口為安卓系統(tǒng)的應(yīng) 用程序編程接口 API之后,還包括: 根據(jù)先入先出的隊列形式,將所述第一接口的信息進(jìn)行存儲; 所述根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息匹配,確定所述 第一應(yīng)用程序執(zhí)行惡意行為之前,還包括: 根據(jù)先入先出的隊列形式,獲取存儲的所述第一接口的信息。
6. 根據(jù)權(quán)利要求1-5任意一項所述的方法,其特征在于,所述根據(jù)所述第一接口的信 息與預(yù)設(shè)接口信息集中一預(yù)設(shè)接口的信息匹配,確定所述第一應(yīng)用程序執(zhí)行惡意行為之 后,還包括: 生成日記記錄文件,所述日記記錄文件包括:所述第一應(yīng)用程序的名稱、所述第一應(yīng)用 程序執(zhí)行的所述第一接口的信息、以及所述第一應(yīng)用程序執(zhí)行所述第一接口的時間。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述生成日記記錄文件之后,還包括: 根據(jù)所述日記記錄文件,顯示所述第一應(yīng)用程序的名稱、所述第一應(yīng)用程序執(zhí)行的所 述第一接口的信息以及所述第一應(yīng)用程序執(zhí)行所述第一接口的時間。
8. -種應(yīng)用程序檢測裝置,其特征在于,包括: 第一獲取單元,用于從第一虛擬機(jī)中獲取安卓系統(tǒng)中第一應(yīng)用程序運(yùn)行時所執(zhí)行的第 一接口的信息,所述第一接口的信息包括所述第一接口的名稱、所述第一接口所屬的類的 名稱、所述第一接口所屬的目錄的名稱; 第一確定單元,用于根據(jù)所述獲取單元獲取的所述第一接口的信息與預(yù)設(shè)接口信息集 中一預(yù)設(shè)接口的信息匹配,確定所述第一應(yīng)用程序執(zhí)行惡意行為;所述預(yù)設(shè)接口信息集包 括各預(yù)設(shè)接口的信息,所述預(yù)設(shè)接口的信息包括預(yù)設(shè)接口所屬的目錄的名稱、所述預(yù)設(shè)接 口所屬的類的名稱、所述預(yù)設(shè)接口的名稱。
9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,還包括: 第一生成單元,用于在所述第一確定單元根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集 中一預(yù)設(shè)接口的信息匹配,確定所述第一應(yīng)用程序執(zhí)行惡意行為之前,根據(jù)所述預(yù)設(shè)接口 信息集,生成三級鏈表,所述三級鏈表的第一級存儲各預(yù)設(shè)接口所屬的目錄的名稱,所述三 級鏈表的第二級存儲各預(yù)設(shè)接口所屬的類的名稱,所述三級鏈表的第三級存儲各預(yù)設(shè)接口 的名稱; 所述第一確定單元具體用于根據(jù)所述第一接口的信息,查找所述三級鏈表;若所述第 一接口的信息在所述三級鏈表中能查找到,則確定所述第一應(yīng)用程序執(zhí)行惡意行為。
10. 根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,還包括:第二確定單元; 所述第一獲取單元還用于在獲取安卓系統(tǒng)中第一應(yīng)用程序運(yùn)行時所執(zhí)行的第一接口 的信息之前,獲取Zygote進(jìn)程的進(jìn)程號;以及當(dāng)?shù)谝贿M(jìn)程運(yùn)行時,獲取所述第一進(jìn)程的父 進(jìn)程的進(jìn)程號; 所述第二確定單元,用于根據(jù)所述第一進(jìn)程的父進(jìn)程的進(jìn)程號與所述Zygote進(jìn)程的 進(jìn)程號相同,確定所述第一進(jìn)程所在的應(yīng)用程序為所述第一應(yīng)用程序。
11. 根據(jù)權(quán)利要求8-10任意一項所述的裝置,其特征在于,還包括:第三確定單元;所 述第一接口的信息還包括所述第一接口所屬的庫的名稱; 所述第三確定單元,用于在所述第一獲取單元獲取安卓系統(tǒng)中第一應(yīng)用程序運(yùn)行時所 執(zhí)行的第一接口的信息之后,根據(jù)所述第一接口所屬的庫的名稱為安卓本地庫,確定所述 第一接口為安卓系統(tǒng)的應(yīng)用程序編程接口 API。
12. 根據(jù)權(quán)利要求11所述的裝置,其特征在于,還包括: 存儲單元,用于在所述第三確定單元確定所述第一接口為安卓系統(tǒng)的應(yīng)用程序編程接 口 API之后,根據(jù)先入先出的隊列形式,將所述第一接口的信息進(jìn)行存儲; 第二獲取單元,用于在所述第一確定單元根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集 中一預(yù)設(shè)接口的信息匹配,確定所述第一應(yīng)用程序執(zhí)行惡意行為之前,根據(jù)先入先出的隊 列形式,獲取存儲的所述第一接口的信息。
13. 根據(jù)權(quán)利要求8-12任意一項所述的裝置,其特征在于,還包括: 第二生成單元,用于在所述第一確定單元根據(jù)所述第一接口的信息與預(yù)設(shè)接口信息集 中一預(yù)設(shè)接口的信息匹配,確定所述第一應(yīng)用程序執(zhí)行惡意行為之后,生成日記記錄文件, 所述日記記錄文件包括:所述第一應(yīng)用程序的名稱、所述第一應(yīng)用程序執(zhí)行的所述第一接 口的信息、以及所述第一應(yīng)用程序執(zhí)行所述第一接口的時間。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,還包括: 顯示單元,用于在所述第二生成單元生成日記記錄文件之后,根據(jù)所述日記記錄文件, 顯示所述第一應(yīng)用程序的名稱、所述第一應(yīng)用程序執(zhí)行的所述第一接口的信息以及所述第 一應(yīng)用程序執(zhí)行所述第一接口的時間。
【文檔編號】G06F21/56GK104268473SQ201410492215
【公開日】2015年1月7日 申請日期:2014年9月23日 優(yōu)先權(quán)日:2014年9月23日
【發(fā)明者】梁志剛, 高翔, 孟小甫, 藍(lán)小明 申請人:龍芯中科技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
米易县| 塘沽区| 太和县| 屯昌县| 西乡县| 肇州县| 遂溪县| 北川| 平和县| 三亚市| 仁寿县| 泗洪县| 旺苍县| 桃江县| 太康县| 若尔盖县| 高唐县| 林西县| 东城区| 玉树县| 固安县| 美姑县| 保定市| 老河口市| 吉木乃县| 黄冈市| 内黄县| 满城县| 视频| 台中县| 榆林市| 宜春市| 根河市| 江安县| 遂川县| 开平市| 化州市| 拜泉县| 盖州市| 庆安县| 惠东县|