本發(fā)明涉及通信
技術(shù)領域:
:,具體涉及一種系統(tǒng)調(diào)用的監(jiān)控方法和裝置。
背景技術(shù):
::在操作系統(tǒng)中,絕大部分的資源都是通過系統(tǒng)調(diào)用來訪問的,比如文件、和內(nèi)存,等等。因此,如果能夠控制系統(tǒng)調(diào)用,保證他們調(diào)用是具有權(quán)限的,比如不是來自惡意或非法用戶,就能夠在很大程度上提高系統(tǒng)的安全性,為此,現(xiàn)有技術(shù)提出了系統(tǒng)調(diào)用的監(jiān)控技術(shù),即對系統(tǒng)調(diào)用進行攔截和分析,在根據(jù)分析結(jié)果確定該系統(tǒng)調(diào)用具有權(quán)限時,才允許執(zhí)行該系統(tǒng)調(diào)用。在現(xiàn)有技術(shù)中,主要是利用系統(tǒng)漏洞,對系統(tǒng)內(nèi)核空間中的數(shù)據(jù)進行修改來達到攔截調(diào)用的目的的。例如,具體可以對內(nèi)核空間中的syscalltable(系統(tǒng)調(diào)用函數(shù)表)中某個syscall(系統(tǒng)調(diào)用)函數(shù)的地址進行修改,從而改變該syscall函數(shù)的指向,使得系統(tǒng)在調(diào)用該syscall函數(shù)時,可以指向更改后地址所對應的函數(shù),比如一個自定義函數(shù),然后,利用該自定義函數(shù),獲取該系統(tǒng)調(diào)用的相關信息并進行分析,便可以確定該系統(tǒng)調(diào)用是否具有權(quán)限,是否允許執(zhí)行該系統(tǒng)調(diào)用,等等。在對現(xiàn)有技術(shù)的研究和實踐過程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),現(xiàn)有的方案需要對內(nèi)核空間的數(shù)據(jù)進行修改,因此,實現(xiàn)較為復雜,而且,由于受限于系統(tǒng)漏洞本身,所以,適配性、穩(wěn)定性和兼容性也較差。技術(shù)實現(xiàn)要素:本發(fā)明實施例提供一種系統(tǒng)調(diào)用的監(jiān)控方法和裝置,不需要修改內(nèi)核空間的數(shù)據(jù),不僅實現(xiàn)簡單,而且可以提高適配性、穩(wěn)定性和兼容性。本發(fā)明實施例提供一種系統(tǒng)調(diào)用的監(jiān)控方法,包括:接收用戶進程的啟動請求,所述啟動請求中攜帶需要啟動的用戶進程的標識;根據(jù)所述標識創(chuàng)建用戶進程,并對所述用戶進程進行追蹤,得到追蹤信息;當追蹤信息指示所述用戶進程在進行系統(tǒng)調(diào)用時,獲取系統(tǒng)調(diào)用信息;基于所述系統(tǒng)調(diào)用信息對所述用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控。相應的,本發(fā)明實施例提供一種系統(tǒng)調(diào)用的監(jiān)控裝置,包括:接收單元,用于接收用戶進程的啟動請求,所述啟動請求中攜帶需要啟動的用戶進程的標識;創(chuàng)建單元,用于根據(jù)所述標識創(chuàng)建用戶進程;追蹤單元,用于對所述用戶進程進行追蹤,得到追蹤信息;獲取單元,用于當追蹤信息指示所述用戶進程在進行系統(tǒng)調(diào)用時,獲取系統(tǒng)調(diào)用信息;監(jiān)控單元,用于基于所述系統(tǒng)調(diào)用信息對所述用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控。本發(fā)明實施例在接收到用戶進程的啟動請求時,可以根據(jù)該啟動請求中攜帶的需要啟動的用戶進程的標識創(chuàng)建用戶進程,并對該用戶進程進行追蹤,然后,當追蹤信息指示該用戶進程在進行系統(tǒng)調(diào)用時,獲取系統(tǒng)調(diào)用信息,并基于該系統(tǒng)調(diào)用信息對該用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控;由于該方案的大部分邏輯都在用戶空間完成,而無需對內(nèi)核空間的數(shù)據(jù)進行修改,因此,實現(xiàn)較為簡單;而且,由于該方案無需基于系統(tǒng)漏洞,所以,相對于現(xiàn)有的方案而言,適配性、穩(wěn)定性和兼容性也得到大大地提高。附圖說明為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1a是本發(fā)明實施例提供的系統(tǒng)調(diào)用的監(jiān)控方法的場景示意圖;圖1b是本發(fā)明實施例提供的系統(tǒng)調(diào)用的監(jiān)控方法的流程圖;圖2a是本發(fā)明實施例提供的系統(tǒng)調(diào)用的監(jiān)控方法的另一流程圖;圖2b是本發(fā)明實施例提供的系統(tǒng)調(diào)用的監(jiān)控方法的另一場景示意圖;圖3a是本發(fā)明實施例提供的系統(tǒng)調(diào)用的監(jiān)控裝置的結(jié)構(gòu)示意圖;圖3b是本發(fā)明實施例提供的系統(tǒng)調(diào)用的監(jiān)控裝置的另一結(jié)構(gòu)示意圖;圖4是本發(fā)明實施例提供的終端的結(jié)構(gòu)示意圖。具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。本發(fā)明實施例提供一種系統(tǒng)調(diào)用的監(jiān)控方法和裝置。其中,該系統(tǒng)調(diào)用的監(jiān)控方法具體可以適用于安卓(android)操作系統(tǒng)(簡稱安卓系統(tǒng))或其他類似的操作系統(tǒng),而該系統(tǒng)調(diào)用的監(jiān)控裝置具體可以集成在終端,比如手機、平板電腦或筆記本電腦等設備中。以安卓系統(tǒng)為例,參見圖1a,內(nèi)存空間一般可以劃分為內(nèi)核空間和用戶空間,其中,內(nèi)核空間和用戶空間的權(quán)限不同,內(nèi)核空間擁有較高的權(quán)限,一個終端一般只有一個內(nèi)核空間,而用戶空間相對內(nèi)核空間而言,權(quán)限較低,一般可以存在有多個用戶空間,這些用戶空間主要用于各種應用程序的運行,每個應用程序可以包括多個進程,在本發(fā)明實施例中,將這些應用程序?qū)倪M程稱為用戶進程;而系統(tǒng)調(diào)用,主要指的是對內(nèi)核空間中的系統(tǒng)調(diào)用函數(shù)的調(diào)用。為了實現(xiàn)對系統(tǒng)調(diào)用的監(jiān)控,可以在用戶進程創(chuàng)建時,便對該用戶進程進行追蹤,若追蹤信息指示該用戶進程正在進行系統(tǒng)調(diào)用,則獲取系統(tǒng)調(diào)用信息,并基于該系統(tǒng)調(diào)用信息對該用戶進程的系統(tǒng)調(diào)用操作進行控制。例如,如圖1a所示,可以啟動一追蹤進程,當該追蹤進程接收到用戶進程的啟動請求時,便可以根據(jù)該啟動請求中攜帶的需要啟動的用戶進程的標識創(chuàng)建用戶進程,比如,可以將跟蹤進程附加(attach)至孵化進程(也稱為孵化器),通過孵化進程如zygote創(chuàng)建(即孵化)一新的進程(即子進程),然后根據(jù)該標識對該子進程中的預設參數(shù)進行修改,得到用戶進程,與此同時,還可以在該跟蹤進程中設置相應的標識,用于指示對用戶進程進行追蹤,這樣,后續(xù)跟蹤進程便可以自動附加至該用戶進程,當該用戶進程進行系統(tǒng)調(diào)用時,內(nèi)核空間便會返回相應的系統(tǒng)調(diào)用信息給附加至該用戶進程的進程,即該跟蹤進程,使得跟蹤進程可以基于該系統(tǒng)調(diào)用信息對該用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控。比如,具體可以從中央處理器(CPU,CentralProcessingUnit)的寄存器中讀取系統(tǒng)調(diào)用函數(shù)(syscall)的函數(shù)號(syscallnumber),然后,根據(jù)該函數(shù)號確定是否需要對該系統(tǒng)調(diào)用函數(shù)的調(diào)用進行控制,若需要,則對該系統(tǒng)調(diào)用信息進行分析,并基于分析結(jié)果對該用戶進程的系統(tǒng)調(diào)用進行控制,否則,如果不需要對該函數(shù)的調(diào)用進行控制,則繼續(xù)執(zhí)行該用戶進程,等等。以下分別進行詳細說明。需說明的是,以下實施例的序號不作為對實施例優(yōu)選順序的限制。實施例一、在本實施例中,將從系統(tǒng)調(diào)用的監(jiān)控裝置的角度進行描述,該系統(tǒng)調(diào)用的監(jiān)控裝置具體可以集成在終端中,該終端可以包括手機、平板電腦或筆記本電腦等設備。一種系統(tǒng)調(diào)用的監(jiān)控方法,包括:接收用戶進程的啟動請求,該啟動請求中攜帶需要啟動的用戶進程的標識;根據(jù)該標識創(chuàng)建用戶進程,并對該用戶進程進行追蹤,得到追蹤信息;當追蹤信息指示該用戶進程在進行系統(tǒng)調(diào)用時,獲取系統(tǒng)調(diào)用信息;基于該系統(tǒng)調(diào)用信息對該用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控。如圖1b所示,該系統(tǒng)調(diào)用的監(jiān)控方法的具體流程可以如下:101、接收用戶進程的啟動請求。其中,該啟動請求中攜帶需要啟動的用戶進程的標識,比如該用戶進程的名稱和/或編號等信息,此外,還可以攜帶其他的信息,比如與該用戶進程相應的預設參數(shù)的值,等等。其中,預設參數(shù)與具體的用戶進程相關,一般用于指示該用戶進程的資源和調(diào)用等情況,不同的用戶進程所對應的預設參數(shù)可能會存在差異,具體可以根據(jù)實際應用的需求而定,在此不再贅述??蛇x的,可以通過設置一追蹤進程(或稱為攔截進程)來執(zhí)行該系統(tǒng)調(diào)用的監(jiān)控操作方法的相關操作,即步驟“接收用戶進程的啟動請求”具體可以為:通過追蹤進程接收用戶進程的啟動請求。若通過追蹤進程來執(zhí)行該系統(tǒng)調(diào)用的監(jiān)控操作方法的相關操作,則在首次執(zhí)行時,需要啟動該追蹤進程,即可選的,在步驟“接收用戶進程的啟動請求”之前,該系統(tǒng)調(diào)用的監(jiān)控方法還可以包括:接收系統(tǒng)調(diào)用的監(jiān)控請求,根據(jù)該監(jiān)控請求啟動跟蹤進程。其中,該跟蹤進程具體可以通過ptrace(跟蹤)機制來實現(xiàn),比如,具體可以在系統(tǒng)處理系統(tǒng)調(diào)用函數(shù)(syscall)軟中斷的例程中插入硬編碼的hook(entry.s)(hook(entry.s)為一種鉤子函數(shù)),使之能夠攔截所有被追蹤進程的syscall調(diào)用和調(diào)出,從而達到些安全防護的效果,比如注入攔截,文件刪除攔截,文件修改攔截,文件讀取攔截、以及網(wǎng)絡通訊攔截,等等。102、根據(jù)該標識創(chuàng)建用戶進程,并對該用戶進程進行追蹤,得到追蹤信息。其中,根據(jù)該標識創(chuàng)建用戶進程的方式可以有多種,例如,可以如下:將跟蹤進程附加(attach)至孵化進程(也稱為孵化器),通過該孵化進程創(chuàng)建子進程,該子進程繼承該孵化進程的內(nèi)容,根據(jù)該標識對該子進程中的預設參數(shù)進行修改,得到用戶進程。比如,可以根據(jù)該標識確定該子進程中需要修改的參數(shù),以及相應參數(shù)值,然后,根據(jù)該需要修改的參數(shù),以及相應參數(shù)值對該子進程進行修改,得到用戶進程。需說明的是,若在用戶進程的啟動請求中已經(jīng)攜帶了預設參數(shù)的值,則此時,可以從該啟動請求中該子進程中需要修改的參數(shù),以及相應參數(shù)值;而如果啟動請求中并沒有攜帶該預設參數(shù)的值,則此時,可以從其他存儲單位或數(shù)據(jù)庫中獲取到該子進程中需要修改的參數(shù),以及相應參數(shù)值。其中,該孵化進程具體可以為zygote(孵化)進程或其他可以實現(xiàn)與zygote進程類似功能的進程,具體可根據(jù)實際應用的需求而定,在此不再贅述。例如,以該孵化進程具體為zygote進程為例,則可以將該跟蹤進程附加(attach)至zygote進程,這樣,當收到需要啟動用戶進程時,比如當用戶點擊某個終端應用的圖標時,則zygote進程會以自己為母本,創(chuàng)建(或稱為孵化)一新的進程,該新的進程繼承了zygote進程所有的內(nèi)容,也就是說,此時zygote進程相當于父進程,而該新的進程相當于子進程,因此,在本發(fā)明實施例中,將該新的進程稱為子進程,此后,便可以根據(jù)需要啟動的用戶進程的標識確定該子進程中需要修改的參數(shù),以及相應參數(shù)值,然后根據(jù)該需要修改的參數(shù),以及相應參數(shù)值對該子進程進行修改,得到用戶進程。此外,在將該跟蹤進程附加至孵化進程時,還可以在該跟蹤進程中設置相應的標識,該標識用于指示對用戶進程進行追蹤,這樣,后續(xù)若發(fā)現(xiàn)有該標識,便可以對用戶進程進行追蹤,或者,也可以設置一標識,用于指示是否對用戶進程進行追蹤,比如值為“1”時表示需要對用戶進程進行追蹤,值為“0”時表示需要對用戶進程進行追蹤,反之亦可,等等。即此時,步驟“對該用戶進程進行追蹤,得到追蹤信息”可以包括:確定該標識指示對用戶進程進行追蹤時,將該跟蹤進程附加至該用戶進程,使得該跟蹤進程對該用戶進程進行追蹤,得到追蹤信息。比如,具體可以在跟蹤進程中設置PTRACE_O_TRACEFORK,其中,PTRACE_O_TRACEFORK是PTRACE中的一個標識位,通過設置它,可以使得當由zygote進程孵化的進程執(zhí)行到FORK(一種函數(shù))時,自動附加至對應的用戶進程上,這樣,后續(xù)追蹤進程便可以對該用戶進程進行追蹤。103、當追蹤信息指示該用戶進程在進行系統(tǒng)調(diào)用時,獲取系統(tǒng)調(diào)用信息。例如,當追蹤信息指示該用戶進程在進行系統(tǒng)調(diào)用時,具體可以通過跟蹤進程接收來自內(nèi)核空間的系統(tǒng)調(diào)用信息。比如,以用戶進程為應用A的啟動進程為例,則當該應用A的啟動進程調(diào)用內(nèi)核空間的某個系統(tǒng)調(diào)用函數(shù)(syscall)時,由于syscall在系統(tǒng)底層的實現(xiàn),因此,它會向附加(attach)到該用戶進程的進程發(fā)送信號,即會向追蹤進程發(fā)送信號,其中,該信號攜帶系統(tǒng)調(diào)用信息。其中,該系統(tǒng)調(diào)用信息可以包括系統(tǒng)調(diào)用函數(shù)標識,比如名稱和/或調(diào)用號(syscallnumber)等,還可以包括系統(tǒng)調(diào)用的時間、以及存儲位置等。104、基于該系統(tǒng)調(diào)用信息對該用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控。例如,具體可以如下:(1)讀取系統(tǒng)調(diào)用函數(shù)的調(diào)用號(syscallnumber)。比如,可以通過讀取CPU的寄存器,來獲取到調(diào)用號。(2)根據(jù)該調(diào)用號確定需要對該函數(shù)的調(diào)用進行控制時,對該系統(tǒng)調(diào)用信息進行分析,得到分析結(jié)果。例如,可以預設一數(shù)據(jù)表,該數(shù)據(jù)表保存有調(diào)用號、系統(tǒng)調(diào)用函數(shù)(syscall)、以及重要等級等信息之間的映射關系,其中,重要等級越高,表明調(diào)用該syscall時所需要的權(quán)限等級越高,越需要對該函數(shù)的調(diào)用進行控制。這樣,在獲取到調(diào)用號之后,便可以通過查找該預設數(shù)據(jù)表,來確定該調(diào)用號所對應的函數(shù)調(diào)用是否是需要進行控制,比如,以重要等級為“1”表示需要對該函數(shù)的調(diào)用進行控制為例,則此時,若調(diào)用號為“333”所對應的重要等級為“1”,則可以需要對該函數(shù)的調(diào)用進行控制,于是,對該系統(tǒng)調(diào)用信息進行分析,比如,可以確定該用戶進程是否具有調(diào)用該函數(shù)的權(quán)限,等等,從而得到分析結(jié)果。反之,若調(diào)用號為“333”所對應的重要等級為不為“1”,則可以不需要對該函數(shù)的調(diào)用進行控制,于是,可以允許該用戶進程調(diào)用該函數(shù)。(3)根據(jù)該分析結(jié)果對該用戶進程的系統(tǒng)調(diào)用操作進行控制,比如,可以如下:根據(jù)該分析結(jié)果確定該用戶進程具有調(diào)用該函數(shù)的權(quán)限時,允許該用戶進程調(diào)用該函數(shù);根據(jù)該分析結(jié)果確定該用戶進程不具有調(diào)用該函數(shù)的權(quán)限時,阻止該用戶進程調(diào)用該函數(shù)。由上可知,本實施例在接收到用戶進程的啟動請求時,可以根據(jù)該啟動請求中攜帶的需要啟動的用戶進程的標識創(chuàng)建用戶進程,并對該用戶進程進行追蹤,然后,當追蹤信息指示該用戶進程在進行系統(tǒng)調(diào)用時,獲取系統(tǒng)調(diào)用信息,并基于該系統(tǒng)調(diào)用信息對該用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控;由于該方案的大部分邏輯都在用戶空間完成,而無需對內(nèi)核空間的數(shù)據(jù)進行修改,因此,實現(xiàn)較為簡單;而且,由于該方案無需基于系統(tǒng)漏洞,所以,相對于現(xiàn)有的方案而言,適配性、穩(wěn)定性和兼容性也得到大大地提高。實施例二、根據(jù)實施例一所描述的方法,以下將舉例作進一步詳細說明。在本實施例中,將以該系統(tǒng)調(diào)用的監(jiān)控裝置具體集成在終端中,且該終端的操作系統(tǒng)為安卓系統(tǒng)為例進行說明。如圖2a所示,一種系統(tǒng)調(diào)用的監(jiān)控方法,具體流程可以如下:201、終端接收系統(tǒng)調(diào)用的監(jiān)控請求,根據(jù)該監(jiān)控請求啟動跟蹤進程。其中,該跟蹤進程具體可以通過ptrace(跟蹤)機制來實現(xiàn),比如,具體可以在系統(tǒng)處理系統(tǒng)調(diào)用函數(shù)(syscall)軟中斷的例程中插入硬編碼的hook(entry.s)(hook(entry.s)為一種鉤子函數(shù)),使之能夠攔截所有被追蹤進程的syscall調(diào)用和調(diào)出,從而達到些安全防護的效果,比如注入攔截,文件刪除攔截,文件修改攔截,文件讀取攔截、以及網(wǎng)絡通訊攔截,等等。需說明的是,為了節(jié)省流程,提高效率,該跟蹤進程只需在首次運行時啟動即可,后續(xù)可以一直沿用,而無需每次對用戶進程進行監(jiān)控時都啟動一次,即步驟201為可選步驟,若當前系統(tǒng)中的跟蹤進程已經(jīng)啟動,則可以不執(zhí)行該步驟。202、終端通過追蹤進程接收用戶進程的啟動請求。其中,該啟動請求中攜帶需要啟動的用戶進程的標識,比如該用戶進程的名稱和/或編號等信息,此外,還可以攜帶其他的信息,比如與該用戶進程相應的預設參數(shù)的值,等等。203、終端將跟蹤進程附加(attach)至孵化進程,通過該孵化進程創(chuàng)建子進程,該子進程繼承該孵化進程的內(nèi)容,根據(jù)該標識對該子進程中的預設參數(shù)進行修改,得到用戶進程。其中,該孵化進程具體可以為zygote(孵化)進程或其他可以實現(xiàn)與zygote進程類似功能的進程,例如,以該孵化進程具體為zygote進程,且該需要啟動的用戶進程為文件A的刪除進程為例,則如圖2b所示,具體可以如下:可以將該跟蹤進程附加(attach)至zygote進程,這樣,當接收到文件A的“刪除進程”的啟動請求時,比如用戶點擊或滑動文件A的圖標以對該文件A進行刪除時,zygote進程便會以自己為母本,創(chuàng)建一新的進程,得到子進程,其中,該子進程繼承zygote進程的全部內(nèi)容,然后,根據(jù)需要該啟動請求中攜帶的需要啟動的“刪除進程”的標識確定該子進程中需要修改的參數(shù),以及相應參數(shù)值,并根據(jù)該需要修改的參數(shù),以及相應參數(shù)值對該子進程進行修改,得到該文件A的刪除進程(即用戶進程)。此外,在將該跟蹤進程附加至孵化進程時,還可以在該跟蹤進程中設置相應的標識,用于指示對用戶進程進行追蹤,比如,參見圖2b,可以在跟蹤進程中設置PTRACE_O_TRACEFORK,這樣,當zygote進程執(zhí)行到FORK函數(shù),即創(chuàng)建一子進程,以得到用戶進程時,跟蹤進程便可以自動附加(attach)至對應的用戶進程,即文件A的刪除進程上,從而使得后續(xù)該追蹤進程可以對該文件A的刪除進程進行追蹤。其中,追蹤進程的部分代碼可以如下:204、終端根據(jù)追蹤信息確定該用戶進程是否在進行系統(tǒng)調(diào)用,若不在進行系統(tǒng)調(diào)用,則可以忽略,若在進行系統(tǒng)調(diào)用,則通過跟蹤進程接收來自內(nèi)核空間的系統(tǒng)調(diào)用信息。例如,還是以用戶進程為文件A的刪除進程為例,則當該文件A的刪除進程調(diào)用內(nèi)核空間的某個syscall,比如函數(shù)“sys_getpid”時,內(nèi)核空間會向附加(attach)到該刪除進程的進程發(fā)送信號,即會向追蹤進程發(fā)送信號,比如發(fā)送stopsig,參見圖2b,其中,該信號攜帶系統(tǒng)調(diào)用信息,因此,此時,追蹤進程可以接收到來自內(nèi)核空間的系統(tǒng)調(diào)用信息。其中,該系統(tǒng)調(diào)用信息可以包括系統(tǒng)調(diào)用函數(shù)標識,比如名稱和/或調(diào)用號(syscallnumber)等,此外,該系統(tǒng)調(diào)用信息還可以包括系統(tǒng)調(diào)用的時間、以及存儲位置等信息,在此不再贅述。205、終端讀取系統(tǒng)調(diào)用函數(shù)的調(diào)用號(syscallnumber),即讀取syscall的調(diào)用號。比如,由于CPU的寄存器一般保存有當前正在運行的進程所調(diào)用的syscall的調(diào)用號,因此,可以通過讀取CPU的寄存器,來獲取到該調(diào)用號。206、終端根據(jù)該調(diào)用號確定需要對該函數(shù)的調(diào)用進行控制時,對該系統(tǒng)調(diào)用信息進行分析,得到分析結(jié)果。例如,在獲取到調(diào)用號之后,可以通過查找預設數(shù)據(jù)表,來確定是否需要對該調(diào)用號所對應的函數(shù)的調(diào)用進行控制,比如,還是以調(diào)用函數(shù)“sys_getpid”為例,由于函數(shù)“sys_getpid”所對應的調(diào)用號為“20”,因此,可以在該預設數(shù)據(jù)表中查找調(diào)用號為“20”的函數(shù)的相關記錄,以確定是否需要對函數(shù)“sys_getpid”的調(diào)用進行控制,若需要,則此時可以對接收到的系統(tǒng)調(diào)用信息進行分析,得到分析結(jié)果;否則,若不需要,則可以直接允許該用戶進程調(diào)用該函數(shù)“sys_getpid”,以此類推,等等。207、終端根據(jù)該分析結(jié)果確定該用戶進程是否具有調(diào)用該函數(shù)的權(quán)限,若是,則允許該用戶進程調(diào)用該函數(shù);若否,則阻止該用戶進程調(diào)用該函數(shù)。由上可知,本實施例可以通過將追蹤進程附加至孵化進程,并在追蹤進程中設置相應的用于指示對用戶進程進行追蹤的標識,使得當孵化進程創(chuàng)建用戶進程時,該追蹤進程可以自動地附加至該用戶進程上,從而達到對用戶進程進行追蹤,以獲取到相應系統(tǒng)調(diào)用信息,并基于該系統(tǒng)調(diào)用信息對該用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控的目的;由于該方案的大部分邏輯都在用戶空間完成,而無需對內(nèi)核空間的數(shù)據(jù)進行修改,因此,實現(xiàn)較為簡單;而且,由于該方案無需基于系統(tǒng)漏洞,所以,相對于現(xiàn)有的方案而言,適配性、穩(wěn)定性和兼容性也得到大大地提高;總而言之,本實施例可以在保障系統(tǒng)調(diào)用安全性的同時,提高適配性、穩(wěn)定性和兼容性,而且,實現(xiàn)較為簡單,可以大大簡單開發(fā)難度和成本。實施例三、為了更好地實施以上方法,本發(fā)明實施例還提供一種系統(tǒng)調(diào)用的監(jiān)控裝置,如圖3a所示,該系統(tǒng)調(diào)用的監(jiān)控裝置可以包括接收單元301、創(chuàng)建單元302、追蹤單元303、獲取單元304和監(jiān)控單元305,如下:(1)接收單元301;接收單元301,用于接收用戶進程的啟動請求,該啟動請求中攜帶需要啟動的用戶進程的標識。其中,該用戶進程的標識可以包括用戶進程的名稱和/或編號等信息。此外,該啟動請求還可以攜帶其他的信息,比如與該用戶進程相應的預設參數(shù)的值,等等。其中,預設參數(shù)與具體的用戶進程相關,一般用于指示該用戶進程的資源和調(diào)用等情況,不同的用戶進程所對應的預設參數(shù)可能會存在差異,具體可以根據(jù)實際應用的需求而定,在此不再贅述??蛇x的,可以通過設置一追蹤進程(或稱為攔截進程)來執(zhí)行該系統(tǒng)調(diào)用的監(jiān)控操作方法的相關操作,即如圖3b所示,該系統(tǒng)調(diào)用的監(jiān)控裝置還可以包括啟動單元306,如下:接收單元301,還可以用于接收系統(tǒng)調(diào)用的監(jiān)控請求;則此時,啟動單元306,可以用于根據(jù)該監(jiān)控請求啟動跟蹤進程。其中,該跟蹤進程具體可以通過ptrace機制來實現(xiàn),比如,具體可以在系統(tǒng)處理系統(tǒng)調(diào)用函數(shù)(syscall)軟中斷的例程中插入硬編碼的hook(entry.s),使之能夠攔截所有被追蹤進程的syscall調(diào)用和調(diào)出。(2)創(chuàng)建單元302;創(chuàng)建單元302,用于根據(jù)該標識創(chuàng)建用戶進程;例如,該創(chuàng)建單元302,具體可以用于將跟蹤進程附加至孵化進程;通過該孵化進程創(chuàng)建子進程,該子進程繼承該孵化進程的內(nèi)容;根據(jù)該標識對該子進程中的預設參數(shù)進行修改,得到用戶進程。比如,可以根據(jù)該標識確定該子進程中需要修改的參數(shù),以及相應參數(shù)值,然后,根據(jù)該需要修改的參數(shù),以及相應參數(shù)值對該子進程進行修改,得到用戶進程。需說明的是,若在用戶進程的啟動請求中已經(jīng)攜帶了預設參數(shù)的值,則此時,可以從該啟動請求中該子進程中需要修改的參數(shù),以及相應參數(shù)值;而如果啟動請求中并沒有攜帶該預設參數(shù)的值,則此時,可以從其他存儲單位或數(shù)據(jù)庫中獲取到該子進程中需要修改的參數(shù),以及相應參數(shù)值。其中,該孵化進程具體可以為zygote進程或其他可以實現(xiàn)與zygote進程類似功能的進程,具體可根據(jù)實際應用的需求而定,在此不再贅述。此外,在將該跟蹤進程附加至孵化進程時,還可以在該跟蹤進程中設置一用于指示對用戶進程進行追蹤的標識,這樣,后續(xù)若發(fā)現(xiàn)有該標識,便可以對用戶進程進行追蹤,即:該創(chuàng)建單元302,還可以用于在將該跟蹤進程附加至孵化進程時,在該跟蹤進程中設置相應的標識,該標識用于指示是否對子進程進行追蹤。(3)追蹤單元303;追蹤單元303,用于對該用戶進程進行追蹤,得到追蹤信息;例如,該追蹤單元303,具體可以用于確定該標識指示對用戶進程進行追蹤時,將該跟蹤進程附加至該用戶進程,使得該跟蹤進程對該用戶進程進行追蹤,得到追蹤信息,等等。(4)獲取單元304;獲取單元304,用于當追蹤信息指示該用戶進程在進行系統(tǒng)調(diào)用時,獲取系統(tǒng)調(diào)用信息;例如,該獲取單元304,具體可以用于當追蹤信息指示該用戶進程在進行系統(tǒng)調(diào)用時,通過跟蹤進程接收來自內(nèi)核空間的系統(tǒng)調(diào)用信息。比如,以用戶進程K為例,則當用戶進程K調(diào)用內(nèi)核空間的某個syscall時,內(nèi)核空間便會向附加(attach)到該用戶進程K的進程發(fā)送信號,即會向追蹤進程發(fā)送信號,其中,該信號攜帶系統(tǒng)調(diào)用信息。其中,該系統(tǒng)調(diào)用信息可以包括系統(tǒng)調(diào)用函數(shù)標識,比如名稱和/或調(diào)用號等,還可以包括系統(tǒng)調(diào)用的時間、以及存儲位置等。(5)監(jiān)控單元305;監(jiān)控單元305,用于基于該系統(tǒng)調(diào)用信息對該用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控。例如,該監(jiān)控單元305可以包括讀取子單元、分析子單元和控制子單元,如下:讀取子單元,用于讀取系統(tǒng)調(diào)用函數(shù)的函數(shù)號。比如,該讀取子單元,可以用于從CPU的寄存器中讀取系統(tǒng)調(diào)用函數(shù)的函數(shù)號,等等。分析子單元,用于根據(jù)該函數(shù)號確定需要對該函數(shù)的調(diào)用進行控制時,對該系統(tǒng)調(diào)用信息進行分析,得到分析結(jié)果??刂谱訂卧?,用于根據(jù)該分析結(jié)果對該用戶進程的系統(tǒng)調(diào)用操作進行控制,例如,可以如下:控制子單元,具體用于在根據(jù)該分析結(jié)果確定該用戶進程具有調(diào)用該函數(shù)的權(quán)限時,允許該用戶進程調(diào)用該函數(shù);在根據(jù)該分析結(jié)果確定該用戶進程不具有調(diào)用該函數(shù)的權(quán)限時,阻止該用戶進程調(diào)用該函數(shù)。具體實施時,以上各個單元可以作為獨立的實體來實現(xiàn),也可以進行任意組合,作為同一或若干個實體來實現(xiàn),以上各個單元的具體實施可參見前面的方法實施例,在此不再贅述。該系統(tǒng)調(diào)用的監(jiān)控裝置具體可以集成在終端中,該終端可以包括手機、平板電腦或筆記本電腦等設備。由上可知,本實施例在接收到用戶進程的啟動請求時,可以由創(chuàng)建單元302根據(jù)該啟動請求中攜帶的需要啟動的用戶進程的標識創(chuàng)建用戶進程,并由追蹤單元303對該用戶進程進行追蹤,然后,當追蹤信息指示該用戶進程在進行系統(tǒng)調(diào)用時,由獲取單元304獲取系統(tǒng)調(diào)用信息,并由監(jiān)控單元305基于該系統(tǒng)調(diào)用信息對該用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控;由于該方案的大部分邏輯都在用戶空間完成,而無需對內(nèi)核空間的數(shù)據(jù)進行修改,因此,實現(xiàn)較為簡單;而且,由于該方案無需基于系統(tǒng)漏洞,所以,相對于現(xiàn)有的方案而言,適配性、穩(wěn)定性和兼容性也得到大大地提高。實施例四、相應的,本發(fā)明實施例還提供一種終端,如圖4所示,該終端可以包括射頻(RF,RadioFrequency)電路401、包括有一個或一個以上計算機可讀存儲介質(zhì)的存儲器402、輸入單元403、顯示單元404、傳感器405、音頻電路406、無線保真(WiFi,WirelessFidelity)模塊407、包括有一個或者一個以上處理核心的處理器408、以及電源409等部件。本領域技術(shù)人員可以理解,圖4中示出的終端結(jié)構(gòu)并不構(gòu)成對終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:RF電路401可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,特別地,將基站的下行信息接收后,交由一個或者一個以上處理器408處理;另外,將涉及上行的數(shù)據(jù)發(fā)送給基站。通常,RF電路401包括但不限于天線、至少一個放大器、調(diào)諧器、一個或多個振蕩器、用戶身份模塊(SIM,SubscriberIdentityModule)卡、收發(fā)信機、耦合器、低噪聲放大器(LNA,LowNoiseAmplifier)、雙工器等。此外,RF電路401還可以通過無線通信與網(wǎng)絡和其他設備通信。所述無線通信可以使用任一通信標準或協(xié)議,包括但不限于全球移動通訊系統(tǒng)(GSM,GlobalSystemofMobilecommunication)、通用分組無線服務(GPRS,GeneralPacketRadioService)、碼分多址(CDMA,CodeDivisionMultipleAccess)、寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)、長期演進(LTE,LongTermEvolution)、電子郵件、短消息服務(SMS,ShortMessagingService)等。存儲器402可用于存儲軟件程序以及模塊,處理器408通過運行存儲在存儲器402的軟件程序以及模塊,從而執(zhí)行各種功能應用以及數(shù)據(jù)處理。存儲器402可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)終端的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器402可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。相應地,存儲器402還可以包括存儲器控制器,以提供處理器408和輸入單元403對存儲器402的訪問。輸入單元403可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設置以及功能控制有關的鍵盤、鼠標、操作桿、光學或者軌跡球信號輸入。具體地,在一個具體的實施例中,輸入單元403可包括觸敏表面以及其他輸入設備。觸敏表面,也稱為觸摸顯示屏或者觸控板,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸敏表面上或在觸敏表面附近的操作),并根據(jù)預先設定的程式驅(qū)動相應的連接裝置。可選的,觸敏表面可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點坐標,再送給處理器408,并能接收處理器408發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實現(xiàn)觸敏表面。除了觸敏表面,輸入單元403還可以包括其他輸入設備。具體地,其他輸入設備可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關按鍵等)、軌跡球、鼠標、操作桿等中的一種或多種。顯示單元404可用于顯示由用戶輸入的信息或提供給用戶的信息以及終端的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標、視頻和其任意組合來構(gòu)成。顯示單元404可包括顯示面板,可選的,可以采用液晶顯示器(LCD,LiquidCrystalDisplay)、有機發(fā)光二極管(OLED,OrganicLight-EmittingDiode)等形式來配置顯示面板。進一步的,觸敏表面可覆蓋顯示面板,當觸敏表面檢測到在其上或附近的觸摸操作后,傳送給處理器408以確定觸摸事件的類型,隨后處理器408根據(jù)觸摸事件的類型在顯示面板上提供相應的視覺輸出。雖然在圖4中,觸敏表面與顯示面板是作為兩個獨立的部件來實現(xiàn)輸入和輸入功能,但是在某些實施例中,可以將觸敏表面與顯示面板集成而實現(xiàn)輸入和輸出功能。終端還可包括至少一種傳感器405,比如光傳感器、運動傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板的亮度,接近傳感器可在終端移動到耳邊時,關閉顯示面板和/或背光。作為運動傳感器的一種,重力加速度傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機姿態(tài)的應用(比如橫豎屏切換、相關游戲、磁力計姿態(tài)校準)、振動識別相關功能(比如計步器、敲擊)等;至于終端還可配置的陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳感器,在此不再贅述。音頻電路406、揚聲器,傳聲器可提供用戶與終端之間的音頻接口。音頻電路406可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號,傳輸?shù)綋P聲器,由揚聲器轉(zhuǎn)換為聲音信號輸出;另一方面,傳聲器將收集的聲音信號轉(zhuǎn)換為電信號,由音頻電路406接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器408處理后,經(jīng)RF電路401以發(fā)送給比如另一終端,或者將音頻數(shù)據(jù)輸出至存儲器402以便進一步處理。音頻電路406還可能包括耳塞插孔,以提供外設耳機與終端的通信。WiFi屬于短距離無線傳輸技術(shù),終端通過WiFi模塊407可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖4示出了WiFi模塊407,但是可以理解的是,其并不屬于終端的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。處理器408是終端的控制中心,利用各種接口和線路連接整個手機的各個部分,通過運行或執(zhí)行存儲在存儲器402內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器402內(nèi)的數(shù)據(jù),執(zhí)行終端的各種功能和處理數(shù)據(jù),從而對手機進行整體監(jiān)控??蛇x的,處理器408可包括一個或多個處理核心;優(yōu)選的,處理器408可集成應用處理器和調(diào)制解調(diào)處理器,其中,應用處理器主要處理操作系統(tǒng)、用戶界面和應用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖?,上述調(diào)制解調(diào)處理器也可以不集成到處理器408中。終端還包括給各個部件供電的電源409(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器408邏輯相連,從而通過電源管理系統(tǒng)實現(xiàn)管理充電、放電、以及功耗管理等功能。電源409還可以包括一個或一個以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。盡管未示出,終端還可以包括攝像頭、藍牙模塊等,在此不再贅述。具體在本實施例中,終端中的處理器408會按照如下的指令,將一個或一個以上的應用程序的進程對應的可執(zhí)行文件加載到存儲器402中,并由處理器408來運行存儲在存儲器402中的應用程序,從而實現(xiàn)各種功能:接收用戶進程的啟動請求,該啟動請求中攜帶需要啟動的用戶進程的標識;根據(jù)該標識創(chuàng)建用戶進程,并對該用戶進程進行追蹤,得到追蹤信息;當追蹤信息指示該用戶進程在進行系統(tǒng)調(diào)用時,獲取系統(tǒng)調(diào)用信息;基于該系統(tǒng)調(diào)用信息對該用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控。例如,可以通過設置一追蹤進程(或稱為攔截進程)來執(zhí)行該系統(tǒng)調(diào)用的監(jiān)控操作方法的相關操作,即處理器408可以執(zhí)行如下操作:接收系統(tǒng)調(diào)用的監(jiān)控請求,根據(jù)該監(jiān)控請求啟動跟蹤進程。這樣,后續(xù)便可以通過該追蹤進程接收用戶進程的啟動請求,以及通過該追蹤進程來實現(xiàn)對用戶進程的追蹤,比如,可以將跟蹤進程附加(attach)至孵化進程,然后,通過該孵化進程創(chuàng)建子進程(該子進程繼承該孵化進程的內(nèi)容),并根據(jù)該標識對該子進程中的預設參數(shù)進行修改,得到用戶進程,與此同時,還可以在該跟蹤進程中設置相應的用于指示對用戶進程進行追蹤的標識,比如PTRACE_O_TRACEFORK,使得追蹤進程可以自動附加至該用戶進程上,然后,在用戶進程調(diào)用syscall時,通過追蹤進程接收內(nèi)核空間發(fā)送的攜帶系統(tǒng)調(diào)用信息的信號,這樣,追蹤進程便可以基于該系統(tǒng)調(diào)用信息對該用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控,其中,監(jiān)控的方式具體可以如下:讀取系統(tǒng)調(diào)用函數(shù)的調(diào)用號,根據(jù)該調(diào)用號確定需要對該函數(shù)的調(diào)用進行控制時,對該系統(tǒng)調(diào)用信息進行分析,得到分析結(jié)果根據(jù)該分析結(jié)果對該用戶進程的系統(tǒng)調(diào)用操作進行控制,比如,若根據(jù)該分析結(jié)果確定該用戶進程具有調(diào)用該函數(shù)的權(quán)限,則允許該用戶進程調(diào)用該函數(shù),反之,若根據(jù)該分析結(jié)果確定該用戶進程不具有調(diào)用該函數(shù)的權(quán)限,則阻止該用戶進程調(diào)用該函數(shù),等等。以上各個操作的具體實施可參見前面的實施例,在此不再贅述。由上可知,本實施例的終端在接收到用戶進程的啟動請求時,可以根據(jù)該啟動請求中攜帶的需要啟動的用戶進程的標識創(chuàng)建用戶進程,并對該用戶進程進行追蹤,然后,當追蹤信息指示該用戶進程在進行系統(tǒng)調(diào)用時,獲取系統(tǒng)調(diào)用信息,并基于該系統(tǒng)調(diào)用信息對該用戶進程的系統(tǒng)調(diào)用操作進行監(jiān)控;由于該方案的大部分邏輯都在用戶空間完成,而無需對內(nèi)核空間的數(shù)據(jù)進行修改,因此,實現(xiàn)較為簡單;而且,由于該方案無需基于系統(tǒng)漏洞,所以,相對于現(xiàn)有的方案而言,適配性、穩(wěn)定性和兼容性也得到大大地提高。本領域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:只讀存儲器(ROM,ReadOnlyMemory)、隨機存取記憶體(RAM,RandomAccessMemory)、磁盤或光盤等。以上對本發(fā)明實施例所提供的一種系統(tǒng)調(diào)用的監(jiān)控方法和裝置進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。當前第1頁1 2 3 當前第1頁1 2 3