日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

進(jìn)程監(jiān)控方法

文檔序號(hào):6358204閱讀:429來源:國知局

專利名稱::進(jìn)程監(jiān)控方法
技術(shù)領(lǐng)域
:本發(fā)明涉及進(jìn)程監(jiān)控
技術(shù)領(lǐng)域
,尤其涉及一種進(jìn)程監(jiān)控方法。
背景技術(shù)
:目前進(jìn)程監(jiān)控的一般做法都是通過注冊(cè)系統(tǒng)的回調(diào)函數(shù),當(dāng)系統(tǒng)檢測(cè)到有進(jìn)程被創(chuàng)建的時(shí)候,就會(huì)調(diào)用已經(jīng)注冊(cè)好的回調(diào)函數(shù)。這時(shí)就可以根據(jù)回調(diào)函數(shù)中的參數(shù)得到進(jìn)程ID,甚至進(jìn)程名稱和進(jìn)程路徑等信息。但是這種方法的缺陷是當(dāng)我們得到這個(gè)進(jìn)程的信息時(shí)候,這個(gè)進(jìn)程已經(jīng)創(chuàng)建成功,如果是病毒進(jìn)程或木馬進(jìn)程的話,已經(jīng)開始危害我們的軟件、系統(tǒng)或電腦。假如我們要銷毀這個(gè)進(jìn)程還要在利用一些微軟公司提供的API(ApplicationProgramminghterface,應(yīng)用程序編程接口)。實(shí)現(xiàn)起來比較麻煩,且不容易操作。針對(duì)上述問題,提出了另一個(gè)的方法是HOOKObReferenceObjectByHandle來實(shí)現(xiàn)進(jìn)程的監(jiān)控,同樣可以達(dá)到進(jìn)程監(jiān)控的目的。與上一種方法相比,Η00ΚObReferenceObjectByHandle的方法,在攔截到進(jìn)程創(chuàng)建的時(shí)候,進(jìn)程并沒有創(chuàng)建成功。所以不必?fù)?dān)心這個(gè)非法運(yùn)行的進(jìn)程對(duì)我們的軟件、系統(tǒng)或電腦造成危害。但是,因?yàn)镺bReferenceObjectByHandle這個(gè)API是系統(tǒng)底層的函數(shù),所以在進(jìn)行HOOKObReferenceObjectByHandle的時(shí)候,一些在系統(tǒng)內(nèi)核的無關(guān)進(jìn)程也一起被攔截了,給系統(tǒng)造成了損害,而且HOOKObReferenceObjectByHandle的方法實(shí)現(xiàn)起來也是繁瑣,不利于推廣應(yīng)用。
發(fā)明內(nèi)容(一)要解決的技術(shù)問題本發(fā)明要解決的技術(shù)問題是,針對(duì)上述缺陷,如何提供一種進(jìn)程監(jiān)控方法,其能夠攔截正在創(chuàng)建的進(jìn)程,大大降低了創(chuàng)建的非法進(jìn)程對(duì)系統(tǒng)造成危害的可能,并且只攔截正在創(chuàng)建的進(jìn)程,不會(huì)對(duì)系統(tǒng)中的其他已經(jīng)運(yùn)行的合法進(jìn)程造成影響。(二)技術(shù)方案為解決上述技術(shù)問題,本發(fā)明提供了一種進(jìn)程監(jiān)控方法,所述進(jìn)程監(jiān)控方法包括步驟Sl獲取NtCreateSection的API地址,用DetourNtCreateSection替換原來的NtCreateSection;S2根據(jù)DetourNtCreatekction對(duì)要?jiǎng)?chuàng)建的進(jìn)程進(jìn)行監(jiān)控。優(yōu)選地,所述步驟Sl具體包括步驟Sll獲取NtCreateSection的服務(wù)ID號(hào);步驟S12根據(jù)所獲取的NtCreatekction的服務(wù)ID號(hào)計(jì)算得到所述NtCreateSection的API地址;步驟S13用DetourNtCreateSection替換原來的NtCreateSection。優(yōu)選地,在步驟S12之后還進(jìn)一步包括把源API地址記錄到一個(gè)全局變量的步驟。優(yōu)選地,在步驟S13之前還進(jìn)一步包括使中斷請(qǐng)求級(jí)別IRQL提升到延遲過程調(diào)用DPC級(jí)的步驟。優(yōu)選地,所述步驟S2具體包括步驟S21根據(jù)DetourNtCreatekction中的最后一個(gè)參數(shù)FileHandle利用ObReferenceObjectAPI得到將要?jiǎng)?chuàng)建的進(jìn)程的文件對(duì)象FileObject;步驟S22判斷文件對(duì)象是否為空?如果文件對(duì)象為空,則進(jìn)入步驟S27,否則,進(jìn)入步驟S23;步驟S23通過IoQueryFileDosDeviceNameAPI根據(jù)FileObject得到正在創(chuàng)建進(jìn)程的文件名;步驟S24根據(jù)所述文件名判斷所述正在創(chuàng)建進(jìn)程的文件是不是.exe文件?如果是,進(jìn)入步驟S25,否則,進(jìn)入步驟S27;步驟S25判斷該正在創(chuàng)建進(jìn)程的文件是不是在白名單中?如果是,進(jìn)入步驟S27,否則,進(jìn)入步驟S26;步驟S26調(diào)用ObDereferenceObjectAPI對(duì)這個(gè)文件對(duì)象的計(jì)數(shù)減1并返回STATUS_ACCESS_DENIED表示這個(gè)進(jìn)程創(chuàng)建失??;步驟S27調(diào)用原始的NtCreateSecion。優(yōu)選地,在所述步驟S25之前進(jìn)一步包括根據(jù)文件句柄得到文件路徑的步驟;則步驟S25具體包括根據(jù)文件名和文件路徑判斷該正在創(chuàng)建進(jìn)程的文件是不是在白名單中?如果是,進(jìn)入步驟S27,否則,進(jìn)入步驟S26。(三)有益效果本發(fā)明提出了一種windows系統(tǒng)中的進(jìn)程監(jiān)控的方法,其可以在進(jìn)程創(chuàng)建過程中攔截這個(gè)正在創(chuàng)建的進(jìn)程,而不是在進(jìn)程創(chuàng)建之后,使得系統(tǒng)更加安全。由于掛鉤的地方是進(jìn)程創(chuàng)建的必經(jīng)之路,所以不會(huì)被木馬、病毒等輕易繞過,可以達(dá)到安全的效果。而且本發(fā)明所述方法也沒有HOOKObReferenceObjectByHandle方法那樣繁瑣,整個(gè)過程只是HOOK了一個(gè)API,流程清晰易懂。本發(fā)明使用的NtCreat必ection處于系統(tǒng)中相對(duì)比較高的內(nèi)核層次位置,其只攔截正在創(chuàng)建的進(jìn)程,不會(huì)對(duì)系統(tǒng)中的其他已經(jīng)運(yùn)行的合法進(jìn)程造成影響。圖1是本發(fā)明實(shí)施例所述的進(jìn)程監(jiān)控方法的流程圖;圖2是本發(fā)明實(shí)施例所述的進(jìn)程監(jiān)控方法中步驟Sl的流程圖;圖3是本發(fā)明實(shí)施例所述的進(jìn)程監(jiān)控方法中步驟S2的流程圖。具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍?,F(xiàn)有windows系統(tǒng)中進(jìn)程創(chuàng)建方法包括以下步驟1打開可執(zhí)行文件;在本步驟中,需要獲取FILE_EXE⑶TE訪問權(quán)限;2加載可執(zhí)行映像(Executableimage)到內(nèi)存中;3建立進(jìn)程執(zhí)行對(duì)象(ProcessExecutiveObject);在本步驟中,所述進(jìn)程執(zhí)行對(duì)象包括EPROCESS,KPR0CESS和PEB結(jié)構(gòu)。4為新創(chuàng)建的進(jìn)程分配地址空間;5建立進(jìn)程的主線程的線程執(zhí)行對(duì)象(ThreadExecutiveObject);在本步驟中,所述線程執(zhí)行對(duì)象包括ETHREAD,KTHREAD和TEB結(jié)構(gòu);6建立主線程的堆棧;7建立主線程的執(zhí)行上下文(Executioncontext);8通知Win32子系統(tǒng)新進(jìn)程信息。上述步驟中任何一步的成功執(zhí)行都要求其之前的所有步驟都必須成功完成。因此,如果我們決定終止上述步驟中的任何一步,接下來的操作也同樣會(huì)失敗,這樣進(jìn)程創(chuàng)建就會(huì)被終止。所有這些步驟都要調(diào)用對(duì)應(yīng)的原生(Iiative)API函數(shù)。本發(fā)明所述的進(jìn)程監(jiān)控方法只考慮用戶模式下創(chuàng)建Windows系統(tǒng)進(jìn)程比如CreateProcess以及手動(dòng)創(chuàng)建進(jìn)程等等,由于內(nèi)核創(chuàng)建進(jìn)程之前的驅(qū)動(dòng)加載需要在內(nèi)核高層,比如應(yīng)用層運(yùn)行。因此可以從應(yīng)用層得到正在創(chuàng)建的進(jìn)程。圖1是本發(fā)明實(shí)施例所述的進(jìn)程監(jiān)控方法的流程圖;如圖1所述,所述進(jìn)程監(jiān)控方法包括步驟Sl:NtCreateSection的APIjfttlt,ffiDetourNtCreateSectionNtCreateSection;圖2是本發(fā)明實(shí)施例所述的進(jìn)程監(jiān)控方法中步驟Sl的流程圖;如圖2所述,步驟Sl具體包括步驟Sll獲取NtCreatekction的服務(wù)ID號(hào);在本步驟中,可以使用一些通用的輔助工具,例如KernelDetective或冰刃等工具實(shí)時(shí)看到NtCreateSection在Windows系統(tǒng)中的SSDT(SystemServicesDescriptorTable,系統(tǒng)服務(wù)描述符表)的服務(wù)ID號(hào)例如OXM;步驟S12根據(jù)所獲取的NtCreatekction的服務(wù)ID號(hào)計(jì)算得到所述NtCreateSection的API地址;在本步驟中,使用SSDT的服務(wù)表首地址加上0)(54*4,得到NtCreatekction的API地址;在本步驟之后還可進(jìn)一步包括把這個(gè)源API地址記錄到一個(gè)全局變量的步驟,以便卸載的時(shí)候把源API地址替換回去;步驟S13用DetourNtCreateSection替換原來的NtCreateSection地址;在本步驟之前還可以進(jìn)一步包括,使IRQLanterruptReQuestLevel,中斷請(qǐng)求級(jí)別)提升到DPC(DeferredProcedureCall,延遲過程調(diào)用)級(jí)的步驟,防止被其他歷程打斷;然后用DetourNtCreateSection替換原來的NtCreateSection,實(shí)現(xiàn)Η00ΚNtCreateSection0S2根據(jù)DetourNtCreatekction對(duì)要?jiǎng)?chuàng)建的進(jìn)程進(jìn)行監(jiān)控;圖3是本發(fā)明實(shí)施例所述的進(jìn)程監(jiān)控方法中步驟S2的流程圖;如圖3所述,步驟S2具體包括步驟S21根據(jù)DetourNtCreatekction中的最后一個(gè)參數(shù)FileHandle利用ObReferenceObjectAPI可以得到將要?jiǎng)?chuàng)建的進(jìn)程的文件對(duì)象(FileObject);步驟S22判斷文件對(duì)象是否為空?如果文件對(duì)象為空,則進(jìn)入步驟S27,否則,進(jìn)入步驟S23;步驟S23通過IoQueryFileDosDeviceNameAPI根據(jù)FileObject得到正在創(chuàng)建進(jìn)程的文件名;步驟S24根據(jù)所述文件名判斷所述正在創(chuàng)建進(jìn)程的文件是不是.exe文件?如果是,進(jìn)入步驟S25,否則,進(jìn)入步驟S27;步驟S25判斷該正在創(chuàng)建進(jìn)程的文件是不是在白名單(允許創(chuàng)建進(jìn)程的文件列表)中?如果是,進(jìn)入步驟S27,否則,進(jìn)入步驟S26;在本步驟之前還可以包括根據(jù)文件句柄得到文件路徑的步驟,則本步驟具體包括根據(jù)文件名和文件路徑判斷該正在創(chuàng)建進(jìn)程的文件是不是在白名單中?如果是,進(jìn)入步驟S27,否則,進(jìn)入步驟S26;步驟S26調(diào)用ObDereferenceObjectAPI對(duì)這個(gè)文件對(duì)象的計(jì)數(shù)減1并返回STATUS_ACCESS_DENIED表示這個(gè)進(jìn)程創(chuàng)建失敗,實(shí)現(xiàn)對(duì)該進(jìn)程的監(jiān)控。在本步驟中,當(dāng)所述文件對(duì)象的計(jì)數(shù)減到O的時(shí)候,這個(gè)文件對(duì)象會(huì)被釋放。步驟S27調(diào)用原始的NtCreateSecion。綜上所述,本發(fā)明公開了一種Windows系統(tǒng)中的進(jìn)程監(jiān)控方法,根據(jù)本發(fā)明所采用的方法,其可以在進(jìn)程創(chuàng)建過程中攔截這個(gè)正在創(chuàng)建的進(jìn)程,而不是在進(jìn)程創(chuàng)建之后,使得系統(tǒng)更加安全。由于掛鉤的地方是進(jìn)程創(chuàng)建的必經(jīng)之路,所以不會(huì)被木馬、病毒等輕易繞過,可以達(dá)到安全的效果。而且本發(fā)明所述方法也沒有HOOKObReferenceObjectByHandle方法那樣繁瑣,整個(gè)過程只是Η00Κ了一個(gè)API,流程清晰易懂。本發(fā)明使用的NtCreat必ection處于系統(tǒng)中相對(duì)比較高的內(nèi)核層次位置,其只攔截正在創(chuàng)建的進(jìn)程,不會(huì)對(duì)系統(tǒng)中的其他已經(jīng)運(yùn)行的合法進(jìn)程造成影響。以上實(shí)施方式僅用于說明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)
技術(shù)領(lǐng)域
的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。權(quán)利要求1.一種進(jìn)程監(jiān)控方法,其特征在于,所述進(jìn)程監(jiān)控方法包括步驟51獲取NtCreatekction的API地址,用DetourNtCreatekction替換原來的NtCreateSection;52根據(jù)DetourNtCreatekction對(duì)要?jiǎng)?chuàng)建的進(jìn)程進(jìn)行監(jiān)控。2.根據(jù)權(quán)利要求1所述的進(jìn)程監(jiān)控方法,其特征在于,所述步驟Sl具體包括步驟Sll獲取NtCreateSection的服務(wù)ID號(hào);步驟S12:根據(jù)所獲取的NtCreatekction的服務(wù)ID號(hào)計(jì)算得到所述NtCreateSection的API地址;步驟S13用DetourNtCreateSection替換原來的NtCreateSection03.根據(jù)權(quán)利要求2所述的進(jìn)程監(jiān)控方法,其特征在于,在步驟S12之后還進(jìn)一步包括把源API地址記錄到一個(gè)全局變量的步驟。4.根據(jù)權(quán)利要求2所述的進(jìn)程監(jiān)控方法,其特征在于,在步驟S13之前還進(jìn)一步包括使中斷請(qǐng)求級(jí)別IRQL提升到延遲過程調(diào)用DPC級(jí)的步驟。5.根據(jù)權(quán)利要求1所述的進(jìn)程監(jiān)控方法,其特征在于,所述步驟S2具體包括步驟S21根據(jù)DetourNtCreatekction中的最后一個(gè)參數(shù)FileHandle利用ObReferenceObjectAPI得到將要?jiǎng)?chuàng)建的進(jìn)程的文件對(duì)象FileObject;步驟S22判斷文件對(duì)象是否為空?如果文件對(duì)象為空,則進(jìn)入步驟S27,否則,進(jìn)入步驟S23;步驟S23通過IoQueryFileDosDeviceNameAPI根據(jù)FileObject得到正在創(chuàng)建進(jìn)程的文件名;步驟S24根據(jù)所述文件名判斷所述正在創(chuàng)建進(jìn)程的文件是不是.exe文件?如果是,進(jìn)入步驟S25,否則,進(jìn)入步驟S27;步驟S25判斷該正在創(chuàng)建進(jìn)程的文件是不是在白名單中?如果是,進(jìn)入步驟S27,否則,進(jìn)入步驟S26;步驟S26調(diào)用ObDereferenceObjectAPI對(duì)這個(gè)文件對(duì)象的計(jì)數(shù)減1并返回STATUS_ACCESS_DENIED表示這個(gè)進(jìn)程創(chuàng)建失??;步驟S27調(diào)用原始的NtCreatekcion。6.根據(jù)權(quán)利要求5所述的進(jìn)程監(jiān)控方法,其特征在于,在所述步驟S25之前進(jìn)一步包括根據(jù)文件句柄得到文件路徑的步驟;則步驟S25具體包括根據(jù)文件名和文件路徑判斷該正在創(chuàng)建進(jìn)程的文件是不是在白名單中?如果是,進(jìn)入步驟S27,否則,進(jìn)入步驟S26。全文摘要本發(fā)明公開了一種進(jìn)程監(jiān)控方法,涉及進(jìn)程監(jiān)控
技術(shù)領(lǐng)域
,所述進(jìn)程監(jiān)控方法包括步驟S1獲取NtCreateSection的API地址,用DetourNtCreateSection替換原來的NtCreateSection;S2根據(jù)DetourNtCreateSection對(duì)要?jiǎng)?chuàng)建的進(jìn)程進(jìn)行監(jiān)控。應(yīng)用本發(fā)明的方法可以在進(jìn)程創(chuàng)建過程中攔截正在創(chuàng)建的進(jìn)程,而不是在進(jìn)程創(chuàng)建之后,使得系統(tǒng)更加安全。由于掛鉤的地方是進(jìn)程創(chuàng)建的必經(jīng)之路,所以不會(huì)被木馬、病毒等輕易繞過,可以達(dá)到安全的效果。而且本發(fā)明所述方法也沒有HOOKObReferenceObjectByHandle方法那樣繁瑣,整個(gè)過程只是HOOK了一個(gè)API,流程清晰易懂。本發(fā)明使用的NtCreateSection處于系統(tǒng)中相對(duì)比較高的內(nèi)核層次位置,其只攔截正在創(chuàng)建的進(jìn)程,不會(huì)對(duì)系統(tǒng)中的其他已經(jīng)運(yùn)行的合法進(jìn)程造成影響。文檔編號(hào)G06F21/22GK102147845SQ20111009665公開日2011年8月10日申請(qǐng)日期2011年4月18日優(yōu)先權(quán)日2011年4月18日發(fā)明者萬雪松,于曉軍,趙辰清申請(qǐng)人:北京思創(chuàng)銀聯(lián)科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1