進程監(jiān)控方法及裝置的制造方法
【技術(shù)領域】
[0001]本發(fā)明涉及一種監(jiān)控技術(shù),特別涉及一種進程監(jiān)控方法及裝置。
【背景技術(shù)】
[0002]隨著移動通信電子技術(shù)的發(fā)展,如今以手機為典型代表的移動終端已經(jīng)不單具有遠程通話的功能,許多個人電腦上的應用程序功能都可以通過移動終端來實現(xiàn),如用戶可以通過手機的瀏覽器瀏覽網(wǎng)頁內(nèi)容、通過手機上播放器播放視頻和音樂、通過手機上的攝像頭進行拍照等。因此為了全方位地掌握智能手機的運行狀況,對系統(tǒng)中應用程序的進程管理也變得尤為重要。
[0003]目前,對移動終端系統(tǒng)進程的監(jiān)控,需要修改操作系統(tǒng)的底層源碼。以安卓系統(tǒng)的手機為例,現(xiàn)有技術(shù)是通過修改系統(tǒng)zygote源碼(zygote是安卓系統(tǒng)上所有應用程序的父進程,通過修改zygote的邏輯,會直接影響到其所有子進程)的方式,實現(xiàn)對應用進程的監(jiān)控。
[0004]但是,由于需要修改操作系統(tǒng)源碼,因此不同的廠商會有不同的定制化要求,開發(fā)成本高;其次,因為代碼是寫死在系統(tǒng)中的,如果需要版本更新或者存在bug需要修復,對于普通用戶來說,技術(shù)門檻非常高,造成使用上的不便。另外,由于廠商修改了操作系統(tǒng)的底層源碼,需要承擔更多的技術(shù)風險。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例的目的是提供一種進程監(jiān)控方法及裝置,以解決現(xiàn)有的對移動終端進程監(jiān)控,需要修改系統(tǒng)源碼,而造成的開發(fā)成本高、更新修改不便、技術(shù)風險大的問題。
[0006]本發(fā)明實施例提出一種進程監(jiān)控方法,包括:
[0007]監(jiān)控系統(tǒng)父進程;
[0008]當監(jiān)測到父進程創(chuàng)建新的子進程時,向新的子進程注入環(huán)境監(jiān)控模塊;
[0009]向環(huán)境監(jiān)控模塊發(fā)送監(jiān)控指令,通過環(huán)境監(jiān)控模塊監(jiān)控子進程;以及
[0010]當子進程的運行符合所述環(huán)境監(jiān)控模塊中的監(jiān)控策略時,獲取子進程的運行數(shù)據(jù)。
[0011]本發(fā)明實施例還提出一種進程監(jiān)控裝置,包括:
[0012]父進程監(jiān)控單元,用于監(jiān)控系統(tǒng)父進程;
[0013]邏輯加載單元,用于當所述父進程監(jiān)控單元監(jiān)測到父進程創(chuàng)建新的子進程時,向新的子進程注入環(huán)境監(jiān)控模塊;
[0014]控制中心單元,用于向環(huán)境監(jiān)控模塊發(fā)送監(jiān)控指令,并通過環(huán)境監(jiān)控模塊監(jiān)控子進程;以及
[0015]數(shù)據(jù)獲取單元,用于在子進程的運行符合所述環(huán)境監(jiān)控模塊中的監(jiān)控策略時,獲取子進程的運行數(shù)據(jù)。
[0016]相對于現(xiàn)有技術(shù),本發(fā)明的有益效果是:本發(fā)明實施例的方法和裝置,通過在父進程建立子進程時,動態(tài)地對子進程注入監(jiān)控程序,無需對源碼作任何改變,不影響正常運作的情況下,實現(xiàn)對系統(tǒng)進程的監(jiān)控,因而可以把整個邏輯實現(xiàn)在一個應用程序上。因此,在不牽扯到源碼的情況下,只需要單純對監(jiān)控程序進行設計,具有較低的技術(shù)風險,開發(fā)成本低。而且在需要更新或修復bug時,也不會牽扯到大量的源碼,技術(shù)門檻低,修改和使用時更加方便。
【附圖說明】
[0017]圖1為本發(fā)明實施例的第一種進程監(jiān)控方法的流程圖;
[0018]圖2為本發(fā)明實施例的第二種進程監(jiān)控方法的流程圖;
[0019]圖3為本發(fā)明實施例的第三種進程監(jiān)控方法的流程圖;
[0020]圖4為本發(fā)明實施例的第一種進程監(jiān)控裝置的結(jié)構(gòu)圖;
[0021]圖5為本發(fā)明實施例的第二種進程監(jiān)控裝置的結(jié)構(gòu)圖。
【具體實施方式】
[0022]有關(guān)本發(fā)明的前述及其他技術(shù)內(nèi)容、特點及功效,在以下配合參考圖式的較佳實施例詳細說明中將可清楚的呈現(xiàn)。通過【具體實施方式】的說明,當可對本發(fā)明為達成預定目的所采取的技術(shù)手段及功效得以更加深入且具體的了解,然而所附圖式僅是提供參考與說明之用,并非用來對本發(fā)明加以限制。
[0023]請參見圖1,其為本發(fā)明實施例的第一種進程監(jiān)控方法的流程圖,其包括以下步驟:
[0024]S101,監(jiān)控系統(tǒng)父進程。
[0025]S102,當監(jiān)測到父進程創(chuàng)建新的子進程時,向新的子進程注入環(huán)境監(jiān)控模塊。
[0026]監(jiān)控父進程時,可以監(jiān)測是否有創(chuàng)建新進程的函數(shù)被調(diào)用,例如安卓系統(tǒng)如的父進程zygote,每產(chǎn)生一個子進程,其都會調(diào)用fork這個函數(shù),因而只需監(jiān)測fork是否被調(diào)用便可知道是否有新的子進程創(chuàng)被建。
[0027]S103,向環(huán)境監(jiān)控模塊發(fā)送監(jiān)控指令,通過環(huán)境監(jiān)控模塊監(jiān)控子進程。
[0028]當接受到監(jiān)控指令,環(huán)境監(jiān)控模塊便會開始工作,對子進程進行監(jiān)控,以獲取需要的數(shù)據(jù)。所述環(huán)境監(jiān)控模塊中設置有監(jiān)控策略,例如監(jiān)測某一個函數(shù)是否被調(diào)用,或者監(jiān)測某個文件是否被操作等。監(jiān)控策略可以是預先設置在環(huán)境監(jiān)控模塊中的,也可以是通過監(jiān)控指令傳輸給環(huán)境監(jiān)控模塊的。
[0029]S104,當子進程的運行符合所述環(huán)境監(jiān)控模塊中的監(jiān)控策略時,獲取子進程的運行數(shù)據(jù)。
[0030]獲取的數(shù)據(jù)是用來后續(xù)對子進程運行狀況的管理與分析,例如通過對數(shù)據(jù)的分析獲知對某個文件的操作情況,或者根據(jù)子進程的運行數(shù)據(jù)查找是否存在病毒動態(tài)行為數(shù)據(jù)坐寸ο
[0031]所述獲取的運行數(shù)據(jù)的范圍可以在監(jiān)控策略中進行相應的設定。例如對某個文件的操作進行監(jiān)控時,設定獲取對這個對文件整個操作事件的上下文數(shù)據(jù)。又如,監(jiān)控病毒時可以獲取環(huán)境監(jiān)控模塊監(jiān)測到的所有數(shù)據(jù)。
[0032]本實施例的方法,通過在父進程建立子進程時,動態(tài)地對子進程注入監(jiān)控程序,無需對源碼作任何改變,不影響正常運作的情況下,實現(xiàn)對系統(tǒng)進程的監(jiān)控,因而可以把整個邏輯實現(xiàn)在一個應用程序上,如APK (APK是應用程序安卓文件格式)的形式或開發(fā)包jar(Java Archive,歸檔文件)的形式。因此,在不牽扯到源碼的情況下,只需要單純對監(jiān)控程序進行設計,具有較低的技術(shù)風險,開發(fā)成本低。而且在需要更新或修復bug時,也不會牽扯到大量的源碼,技術(shù)門檻低,修改和使用時更加方便。
[0033]請參見圖2,其為本發(fā)明實施例的第二種進程監(jiān)控方法的流程圖,其包括以下步驟:
[0034]S201,監(jiān)控系統(tǒng)父進程。
[0035]S202,判斷父進程是否調(diào)用創(chuàng)建新進程的函數(shù),若是則進入步驟S203,若否則返回步驟S201。
[0036]S203,向新的子進程注入環(huán)境監(jiān)控模塊。本實施例的環(huán)境監(jiān)控模塊中設置有監(jiān)控配置表,所述監(jiān)控配置表用于存放用戶標識符(uid)、文件路徑及監(jiān)控規(guī)則等監(jiān)控信息。
[0037]S204,向環(huán)境監(jiān)控模塊發(fā)送監(jiān)控指令,通過環(huán)境監(jiān)控模塊監(jiān)測子進程是否調(diào)用文件操作函數(shù)。文件操作函數(shù)如open, unlink, rename, read, write等函數(shù)。
[0038]S205,當子進程調(diào)用文件操作函數(shù)時,核對文件操作事件的用戶標識符和文件路徑是否與所述監(jiān)控配置表中存放的監(jiān)控信息一致,若一致則進入步驟S206,若不一致則返回 S204。
[0039]監(jiān)控配置表中存放的監(jiān)控信息可以通過發(fā)送給環(huán)境監(jiān)控模塊的監(jiān)控指令來配置。例如用戶要對某個文件的操作行為進行監(jiān)控時,可以將用戶標識符、要監(jiān)控的文件路徑及要監(jiān)控的操作函數(shù)等監(jiān)控信息中的一種或多種添加到監(jiān)控指令中發(fā)送給環(huán)境監(jiān)控模塊,并由環(huán)境監(jiān)控模塊配置在監(jiān)控配置表中。假設監(jiān)控配置表中的一組監(jiān)控信息包括:用戶A、文件路徑B、操作函數(shù)open,則當子程序調(diào)用open函數(shù)時,會核對操作事件中的用戶標識符和文件路徑是否分別為A和B,若是則一致,反之則不一致。
[0040]S206,獲取文件操作事件的上下文數(shù)據(jù)。獲取的數(shù)據(jù)包括但不僅限于文件操作ID(open, unlink, rename函數(shù)的編號),文件路徑,操作事件,用戶標識符uid和進程標識符pid 等。
[0041]本實施例的方法可以實現(xiàn)對進程中的文件操作行為進行的監(jiān)控,基于不用修改源碼的特點,具有技術(shù)風險低、開發(fā)成本低、技術(shù)門檻低、修改和使用方便的優(yōu)點。而且,由于采用動態(tài)注入技術(shù),所以不需要預先指定要監(jiān)控的文件路徑,而是可以由用戶在需要的時候動態(tài)指定,具有很強的互動性。
[0042]請參見圖3,其為本發(fā)明實施例的第三種進程監(jiān)控方法的流程圖,其包括以下步驟:
[0043]S301,監(jiān)控系統(tǒng)父進程。
[0044]S302,當監(jiān)測到父進程創(chuàng)建新的子進程時,向新的子進程注入環(huán)境監(jiān)控模塊。
[0045]S303,向環(huán)境監(jiān)控模塊發(fā)送監(jiān)控指令,通過環(huán)境監(jiān)控模塊監(jiān)控子進程。本實施中,環(huán)境監(jiān)控模塊中的監(jiān)控策略是監(jiān)測子進程的一切運行狀況。
[0046]S304,獲取所述環(huán)境監(jiān)控模塊監(jiān)控到的所有數(shù)據(jù)。
[0047]S305,對獲取的數(shù)據(jù)進行過濾。過濾的目的是為了提高收集到的數(shù)據(jù)的有效性,以降低后續(xù)對這些數(shù)據(jù)分析時的運算量和錯誤率。比如對單位時間內(nèi)重復的日志數(shù)據(jù)進行去重。
[0048]本實施例的方法特別適用于大數(shù)據(jù)量的收集和測試,例如利用對日志數(shù)據(jù)的