專利名稱:一種實時防護(hù)中檢測進(jìn)程創(chuàng)建的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及進(jìn)程創(chuàng)建的檢測技術(shù),尤其涉及一種實時防護(hù)中檢測進(jìn)程創(chuàng)建的方法 及系統(tǒng)。
背景技術(shù):
目前,各種實時防護(hù)類軟件都會監(jiān)控進(jìn)程的創(chuàng)建,所應(yīng)用的場景有兩種一、記錄 進(jìn)程ID和進(jìn)程路徑等相關(guān)信息,用于之后主動防御進(jìn)行事件攔截時可以很容易的根據(jù)進(jìn) 程ID找到進(jìn)程的相關(guān)信息;二、在進(jìn)程創(chuàng)建時用于應(yīng)用層對進(jìn)程的執(zhí)行環(huán)境、系統(tǒng)內(nèi)存等 進(jìn)行掃描檢測,當(dāng)經(jīng)檢測確認(rèn)進(jìn)程安全時才允許進(jìn)程繼續(xù)執(zhí)行,否則將會阻止進(jìn)程的啟動。 針對第二種應(yīng)用場景而言,現(xiàn)有技術(shù)中一般都是在進(jìn)程被創(chuàng)建時由驅(qū)動程序通知應(yīng)用層進(jìn) 行掃描檢測,在驅(qū)動程序等待應(yīng)用層的檢測結(jié)果的這段時間內(nèi),會中斷創(chuàng)建者進(jìn)程的繼續(xù) 執(zhí)行,當(dāng)應(yīng)用層將檢測結(jié)果通知驅(qū)動程序或等待超時發(fā)生時,才繼續(xù)創(chuàng)建者進(jìn)程的執(zhí)行。采用現(xiàn)有技術(shù)所存在的缺點(diǎn)是在驅(qū)動程序等待應(yīng)用層檢測結(jié)果的這段時間內(nèi), 由于需中斷創(chuàng)建者進(jìn)程的執(zhí)行,而作為所有用戶進(jìn)程創(chuàng)建者的創(chuàng)建者進(jìn)程是所有用戶進(jìn)程 的父進(jìn)程,因此,作為父進(jìn)程的創(chuàng)建者進(jìn)程一旦被中斷執(zhí)行,會導(dǎo)致其所控制進(jìn)程的一系列 連鎖反應(yīng),比如容易出現(xiàn)桌面花屏、無法再新建進(jìn)程等問題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種實時防護(hù)中檢測進(jìn)程創(chuàng)建的方法及系 統(tǒng),無需中斷創(chuàng)建者進(jìn)程,也能實現(xiàn)對新建進(jìn)程的檢測。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的一種實時防護(hù)中檢測進(jìn)程創(chuàng)建的方法,該方法包括新建進(jìn)程后,驅(qū)動程序?qū)?yīng)用 層進(jìn)行檢測時所需要的新建進(jìn)程的相關(guān)信息上報給應(yīng)用層,通知應(yīng)用層進(jìn)行掃描檢測;在 應(yīng)用層根據(jù)所述新建進(jìn)程的相關(guān)信息進(jìn)行掃描檢測時將所述新建進(jìn)程掛起。其中,該方法還包括所述應(yīng)用層將檢測結(jié)果返回所述驅(qū)動程序,當(dāng)所述檢測結(jié)果 為安全時,所述驅(qū)動程序?qū)⑺鲂陆ㄟM(jìn)程恢復(fù)。其中,進(jìn)行所述上報前,該方法還包括所述驅(qū)動程序加載時注冊進(jìn)程創(chuàng)建的回調(diào) 通知函數(shù),每當(dāng)新進(jìn)程創(chuàng)建時會調(diào)用已注冊的所述進(jìn)程創(chuàng)建的回調(diào)通知函數(shù)。其中,將所述新建進(jìn)程掛起后,該方法還包括退出所述進(jìn)程創(chuàng)建的回調(diào)通知函 數(shù)。其中,將所述新建進(jìn)程掛起具體包括所述驅(qū)動程序通過調(diào)用Windows內(nèi)核未導(dǎo) 出的用于新建進(jìn)程掛起的應(yīng)用編程接口(API),將所述新建進(jìn)程掛起。其中,將所述新建進(jìn)程恢復(fù)具體包括所述驅(qū)動程序通過調(diào)用Windows內(nèi)核未導(dǎo) 出的用于新建進(jìn)程恢復(fù)的API,將之前被掛起的新建進(jìn)程重新恢復(fù),并繼續(xù)執(zhí)行所述新建進(jìn)程。一種實時防護(hù)中檢測進(jìn)程創(chuàng)建的系統(tǒng),該系統(tǒng)包括上報單元、檢測單元、進(jìn)程掛起單元;其中,所述上報單元,用于新建進(jìn)程后,驅(qū)動程序?qū)?yīng)用層進(jìn)行檢測時所需要的新建進(jìn) 程的相關(guān)信息上報給應(yīng)用層,通知應(yīng)用層進(jìn)行掃描檢測;所述檢測單元,用于應(yīng)用層根據(jù)所述新建進(jìn)程的相關(guān)信息進(jìn)行掃描檢測;所述進(jìn)程掛起單元,用于在應(yīng)用層進(jìn)行掃描檢測時,所述驅(qū)動程序?qū)⑺鲂陆ㄟM(jìn) 程掛起。其中,該系統(tǒng)還包括進(jìn)程恢復(fù)單元,用于所述應(yīng)用層將檢測結(jié)果返回所述驅(qū)動程 序,當(dāng)所述檢測結(jié)果為安全時,所述驅(qū)動程序?qū)⑺鲂陆ㄟM(jìn)程恢復(fù)。其中,所述進(jìn)程掛起單元,進(jìn)一步用于所述驅(qū)動程序通過調(diào)用Windows內(nèi)核未導(dǎo) 出的用于新建進(jìn)程掛起的API,將所述新建進(jìn)程掛起。其中,所述進(jìn)程恢復(fù)單元,進(jìn)一步用于所述驅(qū)動程序通過調(diào)用Windows內(nèi)核未導(dǎo) 出的用于新建進(jìn)程恢復(fù)的API,將之前被掛起的新建進(jìn)程重新恢復(fù),并繼續(xù)執(zhí)行所述新建進(jìn)程。本發(fā)明新建進(jìn)程后,驅(qū)動程序?qū)?yīng)用層進(jìn)行檢測時所需要的新建進(jìn)程的相關(guān)信息 上報給應(yīng)用層,通知應(yīng)用層進(jìn)行掃描檢測;在應(yīng)用層根據(jù)新建進(jìn)程的相關(guān)信息進(jìn)行掃描檢 測時將新建進(jìn)程掛起。采用本發(fā)明,由于是將新建進(jìn)程掛起,而不是一直等待直到應(yīng)用層返回檢測結(jié)果, 因此,不像現(xiàn)有技術(shù)需在等待的這段時間中斷創(chuàng)建者進(jìn)程的執(zhí)行,而是在新建進(jìn)程掛起的 這段時間內(nèi)可以確保創(chuàng)建者進(jìn)程的繼續(xù)執(zhí)行。從而,無需中斷創(chuàng)建者進(jìn)程,也能實現(xiàn)對新建 進(jìn)程的檢測。
圖1為本發(fā)明方法實施例的實現(xiàn)流程示意圖;圖2為本發(fā)明系統(tǒng)實施例的組成結(jié)構(gòu)示意圖。
具體實施例方式本發(fā)明的基本思想是新建進(jìn)程后,驅(qū)動程序?qū)?yīng)用層進(jìn)行檢測時所需要的新建 進(jìn)程的相關(guān)信息上報給應(yīng)用層,通知應(yīng)用層進(jìn)行掃描檢測;在應(yīng)用層根據(jù)新建進(jìn)程的相關(guān) 信息進(jìn)行掃描檢測時將新建進(jìn)程掛起。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下舉實施例并參照附圖,對 本發(fā)明進(jìn)一步詳細(xì)說明。以下將現(xiàn)有技術(shù)和本發(fā)明進(jìn)行對比闡述,以更好地體現(xiàn)本發(fā)明相對于現(xiàn)有技術(shù)的 優(yōu)點(diǎn)。就現(xiàn)有技術(shù)而言,目前在實時防護(hù)中,通常都會通過驅(qū)動程序先向Windows內(nèi)核 注冊進(jìn)程創(chuàng)建的回調(diào)通知函數(shù),從而每當(dāng)有新進(jìn)程創(chuàng)建時,Windows內(nèi)核就會通知已注冊的 該進(jìn)程創(chuàng)建的回調(diào)通知函數(shù),使得監(jiān)控程序有機(jī)會檢測新創(chuàng)建的進(jìn)程。當(dāng)驅(qū)動程序收到進(jìn) 程創(chuàng)建通知時,把新建進(jìn)程的一些信息,如進(jìn)程ID、路徑等上報給應(yīng)用層進(jìn)行掃描,以執(zhí)行 安全檢測,在驅(qū)動程序等待應(yīng)用層的檢測結(jié)果的這段時間內(nèi),會中斷創(chuàng)建者進(jìn)程的繼續(xù)執(zhí) 行;應(yīng)用層收到驅(qū)動程序上報的這些信息后,根據(jù)自身的規(guī)則對系統(tǒng)內(nèi)存環(huán)境、新建進(jìn)程的目錄等進(jìn)行掃描檢測,確認(rèn)安全或危險后,將檢測結(jié)果告知驅(qū)動程序,驅(qū)動程序停止等待, 繼續(xù)執(zhí)行之前中斷的創(chuàng)建者進(jìn)程,根據(jù)應(yīng)用層的檢查結(jié)果放行或殺死新建進(jìn)程,即當(dāng)檢查 結(jié)果為安全時,放行新建進(jìn)程,允許新建進(jìn)程的啟動;當(dāng)檢查結(jié)果為危險時,殺死新建進(jìn)程, 阻止新建進(jìn)程的啟動。由于Windows系統(tǒng)中所有用戶進(jìn)程的創(chuàng)建者都是它的父進(jìn)程,也就是說創(chuàng)建者進(jìn) 程是作為父進(jìn)程存在的,該進(jìn)程創(chuàng)建的回調(diào)通知函數(shù)也是在父進(jìn)程創(chuàng)建子進(jìn)程的過程中被 調(diào)用的,因此,在該進(jìn)程創(chuàng)建的回調(diào)通知函數(shù)中的一切動作都是發(fā)生在父進(jìn)程的線程執(zhí)行 環(huán)境中。綜上所述,可以看到現(xiàn)有技術(shù)中進(jìn)程創(chuàng)建的檢測方案存在以下幾個很明顯的缺點(diǎn)。1、由于進(jìn)程創(chuàng)建的回調(diào)通知函數(shù),其調(diào)用者是新建進(jìn)程的父進(jìn)程,因此,在進(jìn)程創(chuàng) 建的回調(diào)通知函數(shù)里等待應(yīng)用層的檢查結(jié)果會導(dǎo)致父進(jìn)程被卡住,如果父進(jìn)程是Windows Explorer或者是其他的界面進(jìn)程,則在檢測新建進(jìn)程的這段時間內(nèi)移動或刷新窗口都會導(dǎo) 致很明顯的屏幕變花,體驗很差。更為重要的是,如果父進(jìn)程尤其是Windows Explorer被 卡住,用戶將不能在桌面上進(jìn)行任何操作,windows自身也無法進(jìn)行消息通知,必須等到應(yīng) 用層檢查結(jié)束之后才能繼續(xù),嚴(yán)重降低了系統(tǒng)性能。2、由于進(jìn)程創(chuàng)建的回調(diào)通知函數(shù)保存在Windows內(nèi)核的一個數(shù)據(jù)結(jié)構(gòu)中, Windows內(nèi)核在訪問進(jìn)程創(chuàng)建的回調(diào)通知函數(shù)之前會申請加鎖進(jìn)行保護(hù),因此,如果在進(jìn)程 創(chuàng)建的回調(diào)通知函數(shù)里等待應(yīng)用層的檢查結(jié)果,這個數(shù)據(jù)結(jié)構(gòu)將會長時間處于加鎖狀態(tài), 如果此時再有新建進(jìn)程啟動,系統(tǒng)將會因為申請不到對該數(shù)據(jù)結(jié)構(gòu)訪問的鎖而無法立即啟 動新建進(jìn)程,導(dǎo)致系統(tǒng)卡死,需要直到等待結(jié)束、退出進(jìn)程創(chuàng)建的回調(diào)通知函數(shù),鎖被釋放 了新建進(jìn)程才能得以成功創(chuàng)建。區(qū)別于現(xiàn)有技術(shù)需在驅(qū)動程序等待應(yīng)用層檢測結(jié)果的這段時間內(nèi)中斷創(chuàng)建者進(jìn) 程的執(zhí)行,本發(fā)明由于無需等待,因此也就無需中斷創(chuàng)建者進(jìn)程的執(zhí)行。從而在無需中斷 創(chuàng)建者進(jìn)程執(zhí)行的前提下也能實現(xiàn)對新建進(jìn)程的檢測,進(jìn)而根據(jù)檢測結(jié)果對新建進(jìn)程進(jìn)行 放行或攔截,能有效的避免屏幕變花、無法再新建進(jìn)程導(dǎo)致系統(tǒng)卡死的問題。本發(fā)明是在 進(jìn)程創(chuàng)建的回調(diào)通知函數(shù)里不進(jìn)行等待操作,而是驅(qū)動程序把新進(jìn)程的信息上報給應(yīng)用層 后,通過驅(qū)動程序調(diào)用Windows內(nèi)核未導(dǎo)出的一個應(yīng)用編程接口(API)將新建進(jìn)程暫時掛 起(Suspend),然后就可以退出進(jìn)程創(chuàng)建的回調(diào)通知函數(shù)了,不發(fā)生等待操作能夠避免發(fā)生 不必要的線程切換,不中斷當(dāng)前的指令流,絲毫不會影響到系統(tǒng)的總體性能和界面表現(xiàn)。當(dāng) 應(yīng)用層檢測完成把檢測結(jié)果通知驅(qū)動程序之后,如果該進(jìn)程的創(chuàng)建是安全的,則驅(qū)動程序 再通過調(diào)用Windows內(nèi)核未導(dǎo)出的另一個API將剛剛被掛起的新建進(jìn)程恢復(fù)(Resume),使 得它得以繼續(xù)執(zhí)行;如果是危險的,就直接殺掉進(jìn)程。這里需要指出的是由于在將新建進(jìn) 程暫時掛起時,此時新建進(jìn)程還未得以執(zhí)行,因此,此時把新建進(jìn)程掛起是安全的,不會影 響到新建進(jìn)程的任何內(nèi)部邏輯。新建進(jìn)程被掛起后,其父進(jìn)程的執(zhí)行也不會受到影響而得 以繼續(xù)執(zhí)行。也就是說,本發(fā)明由于無需等待而是采用掛起的方式,因此也就無需中斷作為 父進(jìn)程的創(chuàng)建者進(jìn)程的執(zhí)行。以下對本發(fā)明進(jìn)行具體闡述。一種實時防護(hù)中檢測進(jìn)程創(chuàng)建的方法,該方法主要包括以下內(nèi)容
一、驅(qū)動程序?qū)?yīng)用層進(jìn)行檢測時所需要的新建進(jìn)程的相關(guān)信息,上報給應(yīng)用層, 通知應(yīng)用層進(jìn)行掃描檢測。這里,驅(qū)動程序是根據(jù)進(jìn)程ID得到進(jìn)程的Windows內(nèi)核對象指針,從而得到應(yīng)用 層檢測所需要的新建進(jìn)程的相關(guān)信息并上報給應(yīng)用層。這里,上報前還包括驅(qū)動程序加載時注冊進(jìn)程創(chuàng)建的回調(diào)通知函數(shù),每當(dāng)新進(jìn)程 創(chuàng)建時會調(diào)用已注冊的該進(jìn)程創(chuàng)建的回調(diào)通知函數(shù)。二、驅(qū)動程序調(diào)用Windows內(nèi)核未導(dǎo)出的用于新建進(jìn)程掛起的API。這里,調(diào)用時需先獲知該用于新建進(jìn)程掛起的API的調(diào)用地址,之后根據(jù)調(diào)用地 址調(diào)用該用于新建進(jìn)程掛起的API。這里,該用于新建進(jìn)程掛起的API可以命名為NtSuspendProcess。這里,由于該用于新建進(jìn)程掛起的API在系統(tǒng)服務(wù)分發(fā)表中存在對應(yīng)的索引ID, 因此,根據(jù)索引ID可以得到該用于新建進(jìn)程掛起的API的調(diào)用地址。也就是說,可以根據(jù) 該用于新建進(jìn)程掛起的API在系統(tǒng)服務(wù)分發(fā)表的索引ID找到其對應(yīng)的調(diào)用地址。三、驅(qū)動程序采用該用于新建進(jìn)程掛起的API,將新建進(jìn)程掛起。這里,將新建進(jìn)程掛起后,就可以退出進(jìn)程創(chuàng)建的回調(diào)通知函數(shù),而無需像現(xiàn)有技 術(shù)那樣在進(jìn)程創(chuàng)建的回調(diào)通知函數(shù)一直等待直至應(yīng)用層返回檢測結(jié)果。這里,因為這時新建進(jìn)程還未得以執(zhí)行,因此這個時候把新建進(jìn)程掛起是安全的, 不會影響到新建進(jìn)程的任何內(nèi)部邏輯。新建進(jìn)程被掛起后,其父進(jìn)程的執(zhí)行也未受影響而 得以繼續(xù)執(zhí)行,從而不會出現(xiàn)系統(tǒng)或界面被卡住等情況。四、應(yīng)用層根據(jù)新建進(jìn)程的相關(guān)信息進(jìn)行掃描檢測,應(yīng)用層檢測完畢把檢測結(jié)果 通知驅(qū)動程序。這里,應(yīng)用層收到驅(qū)動程序上報的新建進(jìn)程的相關(guān)信息后,根據(jù)規(guī)則進(jìn)行安全檢 測,比如系統(tǒng)內(nèi)存檢查、工作目錄掃描等。其中,所述新建進(jìn)程的相關(guān)信息包括路徑、進(jìn)程ID
^fn 息。五、驅(qū)動程序根據(jù)檢測結(jié)果執(zhí)行放行或攔截新建進(jìn)程啟動的操作。這里,如果檢測結(jié)果是安全的,則驅(qū)動程序再通過調(diào)用Windows內(nèi)核未導(dǎo)出的用 于新建進(jìn)程恢復(fù)的API,將之前被掛起的新建進(jìn)程重新恢復(fù),并使新建進(jìn)程得以繼續(xù)執(zhí)行; 如果檢測結(jié)果是危險的,則驅(qū)動程序直接殺死這個新建進(jìn)程,即執(zhí)行攔截新建進(jìn)程啟動的 操作。這里,調(diào)用時需先獲知該用于新建進(jìn)程恢復(fù)的API的調(diào)用地址,之后根據(jù)調(diào)用地 址調(diào)用用于新建進(jìn)程恢復(fù)的API。這里,該用于新建進(jìn)程恢復(fù)的API可以命名為NtResumeProcess。這里,由于該用于新建進(jìn)程恢復(fù)的API在系統(tǒng)服務(wù)分發(fā)表中存在對應(yīng)的索引ID, 因此,根據(jù)索引ID可以得到該用于新建進(jìn)程恢復(fù)的API的調(diào)用地址。也就是說,可以根據(jù) 該用于新建進(jìn)程恢復(fù)的API在系統(tǒng)服務(wù)分發(fā)表的索引ID找到其對應(yīng)的調(diào)用地址。方法實施例本實施例為一個新建進(jìn)程后對該新建進(jìn)程進(jìn)行檢測的實例。如圖1所示,本實施例包括以下步驟步驟101、判斷是否能獲取到新建進(jìn)程的相關(guān)信息,如果是,則將新建進(jìn)程的相關(guān) 信息上報給應(yīng)用層,執(zhí)行步驟102 ;否則,執(zhí)行步驟106。
這里,是根據(jù)進(jìn)程ID取得進(jìn)程的Windows內(nèi)核對象,從而獲取新建進(jìn)程的相關(guān)信 息并上報給應(yīng)用層。如果沒有成功獲取到新建進(jìn)程的相關(guān)信息,則對新建進(jìn)程放行,不做檢 測。步驟102、判斷是否獲取到未導(dǎo)出API函數(shù)NtSuspendProcess的調(diào)用地址,如果 是,則執(zhí)行步驟103 ;否則,執(zhí)行步驟106。這里,是根據(jù)該API函數(shù)NtSuspendProcess在系統(tǒng)服務(wù)分發(fā)表的索引號找到其對 應(yīng)的函數(shù)地址。步驟103 采用NtSuspendProcess掛起新建進(jìn)程。這里,由于是采用NtSuspendProcess掛起新建進(jìn)程,而不是進(jìn)行等待操作,因此, 不影響新建進(jìn)程的父進(jìn)程的繼續(xù)執(zhí)行。步驟104 應(yīng)用層將根據(jù)新建進(jìn)程的相關(guān)信息獲得的檢測結(jié)果通知驅(qū)動程序。這里,應(yīng)用層獲取新建進(jìn)程的相關(guān)信息后,根據(jù)配置的規(guī)則對新建進(jìn)程進(jìn)行檢測, 把檢測結(jié)果通知給驅(qū)動程序。步驟105 驅(qū)動程序根據(jù)檢測結(jié)果判斷是否對新建進(jìn)程做出放行處理,如果是,則 執(zhí)行步驟106 ;否則,對新建進(jìn)程進(jìn)行攔截。這里,根據(jù)應(yīng)用層的檢測結(jié)果,驅(qū)動程序執(zhí)行恢復(fù)新建進(jìn)程的操作;或者,執(zhí)行殺 死新建進(jìn)程的攔截操作。步驟106、新建進(jìn)程繼續(xù)執(zhí)行。一種實時防護(hù)中檢測進(jìn)程創(chuàng)建的系統(tǒng),該系統(tǒng)包括位于驅(qū)動程序側(cè)的上報單元、 位于應(yīng)用層側(cè)的檢測單元、位于驅(qū)動程序側(cè)的進(jìn)程掛起單元。其中,上報單元用于新建進(jìn)程 后,驅(qū)動程序?qū)?yīng)用層進(jìn)行檢測時所需要的新建進(jìn)程的相關(guān)信息上報給應(yīng)用層,通知應(yīng)用 層進(jìn)行掃描檢測。檢測單元用于應(yīng)用層根據(jù)所述新建進(jìn)程的相關(guān)信息進(jìn)行掃描檢測。進(jìn)程 掛起單元用于在應(yīng)用層進(jìn)行掃描檢測時,所述驅(qū)動程序?qū)⑺鲂陆ㄟM(jìn)程掛起。這里,該系統(tǒng)還包括位于驅(qū)動程序側(cè)的進(jìn)程恢復(fù)單元,進(jìn)程恢復(fù)單元用于應(yīng)用層 將檢測結(jié)果返回驅(qū)動程序,當(dāng)檢測結(jié)果為安全時,驅(qū)動程序?qū)⑿陆ㄟM(jìn)程恢復(fù)。這里,進(jìn)程掛起單元進(jìn)一步用于驅(qū)動程序通過調(diào)用Windows內(nèi)核未導(dǎo)出的用于新 建進(jìn)程掛起的API,將新建進(jìn)程掛起。這里,進(jìn)程恢復(fù)單元進(jìn)一步用于驅(qū)動程序通過調(diào)用Windows內(nèi)核未導(dǎo)出的用于新 建進(jìn)程恢復(fù)的API,將之前被掛起的新建進(jìn)程重新恢復(fù),并繼續(xù)執(zhí)行新建進(jìn)程。系統(tǒng)實施例本實施例為本發(fā)明系統(tǒng)的一個優(yōu)選實施例,如圖2所示,該系統(tǒng)包 括驅(qū)動程序側(cè)相連的上報單元、進(jìn)程掛起單元及進(jìn)程恢復(fù)單元,還包括應(yīng)用層側(cè)的檢測單 元。其中,上報單元用于新建進(jìn)程后,驅(qū)動程序?qū)?yīng)用層進(jìn)行檢測時所需要的新建進(jìn)程的 相關(guān)信息上報給應(yīng)用層,通知應(yīng)用層進(jìn)行掃描檢測;檢測單元用于應(yīng)用層根據(jù)新建進(jìn)程的 相關(guān)信息進(jìn)行掃描檢測。進(jìn)程掛起單元用于在應(yīng)用層進(jìn)行掃描檢測時,驅(qū)動程序通過調(diào)用 Windows內(nèi)核未導(dǎo)出的用于新建進(jìn)程掛起的API,將新建進(jìn)程掛起。進(jìn)程恢復(fù)單元用于應(yīng)用 層將檢測結(jié)果返回驅(qū)動程序,當(dāng)檢測結(jié)果為安全時,驅(qū)動程序通過調(diào)用Windows內(nèi)核未導(dǎo) 出的用于新建進(jìn)程恢復(fù)的API,將之前被掛起的新建進(jìn)程重新恢復(fù),并繼續(xù)執(zhí)行新建進(jìn)程。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種實時防護(hù)中檢測進(jìn)程創(chuàng)建的方法,其特征在于,該方法包括新建進(jìn)程后,驅(qū)動 程序?qū)?yīng)用層進(jìn)行檢測時所需要的新建進(jìn)程的相關(guān)信息上報給應(yīng)用層,通知應(yīng)用層進(jìn)行掃 描檢測;在應(yīng)用層根據(jù)所述新建進(jìn)程的相關(guān)信息進(jìn)行掃描檢測時將所述新建進(jìn)程掛起。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括所述應(yīng)用層將檢測結(jié)果返 回所述驅(qū)動程序,當(dāng)所述檢測結(jié)果為安全時,所述驅(qū)動程序?qū)⑺鲂陆ㄟM(jìn)程恢復(fù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,進(jìn)行所述上報前,該方法還包括所述驅(qū) 動程序加載時注冊進(jìn)程創(chuàng)建的回調(diào)通知函數(shù),每當(dāng)新進(jìn)程創(chuàng)建時會調(diào)用已注冊的所述進(jìn)程 創(chuàng)建的回調(diào)通知函數(shù)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,將所述新建進(jìn)程掛起后,該方法還包括 退出所述進(jìn)程創(chuàng)建的回調(diào)通知函數(shù)。
5.根據(jù)權(quán)利要求1至4中任一項所述的方法,其特征在于,將所述新建進(jìn)程掛起具體 包括所述驅(qū)動程序通過調(diào)用Windows內(nèi)核未導(dǎo)出的用于新建進(jìn)程掛起的應(yīng)用編程接口 (API),將所述新建進(jìn)程掛起。
6.根據(jù)權(quán)利要求2至4中任一項所述的方法,其特征在于,將所述新建進(jìn)程恢復(fù)具體包 括所述驅(qū)動程序通過調(diào)用Windows內(nèi)核未導(dǎo)出的用于新建進(jìn)程恢復(fù)的API,將之前被掛起 的新建進(jìn)程重新恢復(fù),并繼續(xù)執(zhí)行所述新建進(jìn)程。
7.一種實時防護(hù)中檢測進(jìn)程創(chuàng)建的系統(tǒng),其特征在于,該系統(tǒng)包括上報單元、檢測單 元、進(jìn)程掛起單元;其中,所述上報單元,用于新建進(jìn)程后,驅(qū)動程序?qū)?yīng)用層進(jìn)行檢測時所需要的新建進(jìn)程的 相關(guān)信息上報給應(yīng)用層,通知應(yīng)用層進(jìn)行掃描檢測;所述檢測單元,用于應(yīng)用層根據(jù)所述新建進(jìn)程的相關(guān)信息進(jìn)行掃描檢測;所述進(jìn)程掛起單元,用于在應(yīng)用層進(jìn)行掃描檢測時,所述驅(qū)動程序?qū)⑺鲂陆ㄟM(jìn)程掛起。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,該系統(tǒng)還包括進(jìn)程恢復(fù)單元,用于所述 應(yīng)用層將檢測結(jié)果返回所述驅(qū)動程序,當(dāng)所述檢測結(jié)果為安全時,所述驅(qū)動程序?qū)⑺鲂?建進(jìn)程恢復(fù)。
9.根據(jù)權(quán)利要求7或8所述的系統(tǒng),其特征在于,所述進(jìn)程掛起單元,進(jìn)一步用于所述 驅(qū)動程序通過調(diào)用Windows內(nèi)核未導(dǎo)出的用于新建進(jìn)程掛起的API,將所述新建進(jìn)程掛起。
10.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述進(jìn)程恢復(fù)單元,進(jìn)一步用于所述驅(qū) 動程序通過調(diào)用Windows內(nèi)核未導(dǎo)出的用于新建進(jìn)程恢復(fù)的API,將之前被掛起的新建進(jìn) 程重新恢復(fù),并繼續(xù)執(zhí)行所述新建進(jìn)程。
全文摘要
本發(fā)明公開了一種實時防護(hù)中檢測進(jìn)程創(chuàng)建的方法,新建進(jìn)程后,驅(qū)動程序?qū)?yīng)用層進(jìn)行檢測時所需要的新建進(jìn)程的相關(guān)信息上報給應(yīng)用層,通知應(yīng)用層進(jìn)行掃描檢測;在應(yīng)用層根據(jù)新建進(jìn)程的相關(guān)信息進(jìn)行掃描檢測時將新建進(jìn)程掛起。本發(fā)明還公開了一種實時防護(hù)中檢測進(jìn)程創(chuàng)建的系統(tǒng),系統(tǒng)中的進(jìn)程掛起單元用于在應(yīng)用層進(jìn)行掃描檢測時,驅(qū)動程序?qū)⑿陆ㄟM(jìn)程掛起。采用本發(fā)明的方法及系統(tǒng),無需中斷創(chuàng)建者進(jìn)程,也能實現(xiàn)對新建進(jìn)程的檢測。
文檔編號G06F21/22GK102081720SQ20101056033
公開日2011年6月1日 申請日期2010年11月18日 優(yōu)先權(quán)日2010年11月18日
發(fā)明者劉桂澤 申請人:騰訊科技(深圳)有限公司