麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種用于枚舉系統進程的方法及裝置的制作方法

文檔序號:6377768閱讀:219來源:國知局

專利名稱::一種用于枚舉系統進程的方法及裝置的制作方法
技術領域
:本發明涉及計算機
技術領域
,特別是涉及一種用于枚舉系統進程的方法。本發明還涉及一種用于枚舉系統進程的裝置。
背景技術
:Windows任務管理器可以枚舉出系統當前的進程,并能夠根據需要選擇終止進程。為管理系統進程提供了很大的便利。Windows任務管理器枚舉系統當前進程是通過其NativeAPI函數ZwQuerySystemInfomation來操作進程活動鏈表來實現的。具體的過程如下首先,獲取當前任一進程的指針,例如可以通過PsGetCurrentProcessO來獲取當前進程的PEPR0CESS指針。然后定位到記錄該當前進程與其它進程鏈接信息的Activelist處,具體的操作方式為ActiveList=pCurrentEprocess+0x88,即當前進程指針移動一定的步長。其中0x88為winxpsp3下Activelist與pCurrentEprocess的步長,在不同win操作系統時該步長并不相同。接著,以所定位的當前進程的Activelist遍歷整個進程活動鏈表(Activelistlink)上每一進程的數據結構,即可獲得當前的存在于進程活動鏈表的所有進程。如上所述,因為windows任務管理器是基于ZwQuerySystemInformation來實現的,所以如果將進程對象從進程活動鏈表中移除,那么調用NtQuerySystemInfomation來枚舉進程的任務管理器TaskMgr.exe中就不會看到目標進程了。同時,Windows的任務調度分配器使用的另一的數據結構,也就是說,進程是否被調度執行與進程活動鏈表無關,不會因為從進程活動鏈表刪除就被CPU忽略,因此進程仍然會被執行。這很容易被一些惡意軟件或者RootKit程序利用,在進程活動鏈表上不顯示其存在,但是仍然被執行,這可能導致用戶的計算機在不知不覺中被感染病毒、植入木馬或者竊取了信息,對計算機造成潛在的或現實的威脅。因而有必要能夠查找出這種被進程活動鏈表忽略而實質上又在被執行的隱藏進程。
發明內容鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的用于枚舉系統進程的方法和相應的用于枚舉系統進程的裝置。依據本發明的一個方面,提供了一種用于枚舉系統進程的方法,包括獲取當如進程的私有句柄表;遍歷該當前進程的私有句柄表與其它進程的私有句柄表形成的句柄表鏈,獲得其它進程私有句柄表;根據所述獲得的其它進程的私有句柄表,獲取每一私有句柄表所對應的進程;集合所獲得的所有進程,形成系統進程集合。可選的,所述獲取該當前進程的私有句柄表包括獲取指向當前進程的指針;由所述當前進程的指針偏移獲得當前進程的私有句柄表指針;根據所述當前進程的私有句柄表指針定位到該當前進程的私有句柄表。可選的,所述獲取指向當前進程的指針包括通過PsGetCurrentProcessO或IoGetCurrentProcessO獲得當前進程的指針。可選的,所述由所述當前進程的指針偏移獲得當前進程的私有句柄表指針的步驟中,偏移的步長由win系統版本決定。可選的,所述遍歷該當前進程的私有句柄表與其它進程的私有句柄表形成的句柄表鏈,獲得其它進程私有句柄表包括記錄所述當前進程的私有句柄表的地址;由該當前進程的私有句柄表指針偏移獲取私有句柄表鏈上相鄰進程的私有句柄表;判斷偏移后進程的私有句柄表地址是否與記錄的當前進程的私有句柄表的地址相同;若是,終止遍歷;若否,按照與前述偏移相同的方向繼續執行指針偏移獲取私有句柄表鏈上的其它進程私有句柄表;直到偏移后獲得進程私有句柄表地址與記錄的當前進程私有句柄表的地址相同為止。可選的,所述偏移的步長根據win系統的版本而確定。可選的,還包括對于所述獲得系統的進程中的至少一個進程,按照該進程所在的SessionProcessLinks鏈表再做遍歷,并將獲得的進程表與所述獲得系統的進程集合合并。可選的,還包括對于所述獲得系統的進程中的至少一個進程,按照該進程所在Vm.WorkingSetExpansionLinks鏈表再做遍歷,并將獲得的進程表與所述獲得系統的進程口口O可選的,還包括如下步驟將獲取的當前進程集合與Windows任務管理器的進程表比對;找出不同于Windows任務管理器的進程表中的進程;將所述找出的進程向用戶發送提示消息或發送報警。根據本發明的另一方面,還提供一種用于枚舉系統進程的裝置,包括句柄表獲取單元,用于獲取該當前進程的私有句柄表;遍歷單元,用于遍歷該當前進程的私有句柄表與其它進程的私有句柄表形成的句柄表鏈,獲得其它進程私有句柄表;執行單元,用于根據所述獲得的其它進程的私有句柄表,獲取每一私有句柄表所對應的進程;集合單元,用于集合所獲得的所有進程,形成系統進程集合。可選的,所述句柄表獲取單元包括進程指針獲取單元,用于獲取指向當前進程的指針;句柄表指針獲取單元,用于由所述當前進程的指針偏移獲得當前進程的私有句柄表指針;定位單元,用于根據所述當前進程的私有句柄表指針定位到該當前進程的私有句柄表可選的,所述遍歷單元包括記錄單元,用于記錄所述當前進程的私有句柄表的地址;偏移單元,用于由該當前進程的私有句柄表指針偏移獲取私有句柄表鏈上相鄰進程的私有句柄表;判斷單元,用于判斷偏移后進程的私有句柄表地址是否與記錄的當前進程的私有句柄表的地址相同;若是,終止遍歷;若否,返回所述偏移單元;直到偏移后獲得進程私有句柄表地址與記錄的當前進·程私有句柄表的地址相同為止。可選的,還包括第二遍歷單元,用于對于所述獲得系統的進程中的至少一個進程,按照該進程所在的SessionProcessLinks鏈表再做遍歷,并將獲得的進程表與所述獲得系統的進程集合I=ITTO可選的,還包括第三遍歷單元,用于對于所述獲得系統的進程中的至少一個進程,按照該進程所在Vm.WorkingSetExpansionLinks鏈表再做遍歷,并將獲得的進程表與所述獲得系統的進程集合合并。可選的,還包括對比單元,用于將獲取的當前進程集合與Windows任務管理器的進程表比對;提取單元,用于找出不同于Windows任務管理器的進程表中的進程;報警單元,用于將所述找出的進程向用戶發送提示消息或發送報警。根據本發明提供的具體實施例,本發明公開了以下技術效果本發明的方法中,通過遍歷進程的私有句柄表鏈獲得私有句柄表對應的進程;由于任何進程都會有自己的私有句柄表,而且所有進程的私有句柄表鏈會鏈接在一起,形成雙向鏈表,只要遍歷該雙向鏈表,即可獲得所有的進程;包括一些隱藏的進程;也就是說,即使有些進程從進程活動鏈表中刪除,通過本發明的方法仍然能夠枚舉出該進程,使得一些惡意軟件或者Rootkit無處藏身,有利于減少一些惡意的隱藏進程對系統的威脅。上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的具體實施方式。通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中圖I示出了根據本發明的用于枚舉系統進程的方法的實施例的流程圖;圖2示出了根據本發明一個實施例中多個進程的進程結構體通過其私有句柄表形成句柄表鏈的示意圖;圖3示出了根據本發明一種用于枚舉系統進程的裝置的實施例的流程圖。具體實施例方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。請參考圖1,其為本發明的一種用于枚舉系統進程的實施例的流程圖。本實施例中,包括如下步驟步驟100,獲取當前進程的私有句柄表。在windows系統中,每一個進程都有一個句柄表(handletable),該句柄表稱為進程的私有句柄表。所述進程的私有句柄表是一f_HANDLE_TABLE結構,系統中所有進程的私有句柄表以雙向鏈表的形式鏈接在一起。故若獲取當前進程的私有句柄表,并按照一定的步長遍歷所述雙向鏈表,即可獲得系統中所有的進程。所述獲取當前進程的私有句柄表的一種具體實現方式如下a,獲取指向當前進程的指針山,由所述當前進程的指針偏移獲得當前進程的私有句柄表指針;c,根據所述當前進程的私有句柄表指針定位到該當前進程的私有句柄表。具體而言,可以通過PsGetCurrentProcessO或IoGetCurrentProcessO獲得當前進程的指針。在windows系統中,由于受調度資源的限制,同一進程在執行時也會被劃分到不同的時間段部分的執行,不同的進程在執行時穿插在一起,固在某一時間區間內,可能有多個進程在同時進行。而在某一時間點上,在多數情形正在執行的是一個進程(當然也不排除在包括中央處理單元、內存等系統資源充裕的情況下,兩個或兩個以上的進程并行運行)。通過所述PsGetCurrentProcessO或IoGetCurrentProcessO函數即可得到在調用函數時刻指向正在運行的進程的指針,即指向當前進程的進程結構體_EPR0CESS的指針pCurrentProcess。本實施例中當前進程即指調用所述函數時刻正在運行的進程。所述獲得的當前進程可以是windows系統中的任何進程,在獲得指向當前任一進程的指針pCurrentProcess后,將所述指針偏移固定的步長,可得到該當前任一進程的私有句柄表。以windowsXP為例,指向當前進程的指針pCurrentProcess偏移0xc4(十六進制),即可得到所述當前進程的私有句柄表,即pHandleTable=pCurrentProcess+0xc4,需要說明的是,在windowsXP中,對于任何的進程而言,指針pCurrentProcess與私有句柄表之間的偏移步長均為0xc4(十六進制)ο在其它不同版本的window系統中,例如window2000、vista、win7等,偏移步長則有所不同,本領域技術人員可以根據各個windows的版本獲得相應的步長。根據所述當前進程的私有句柄表指針即可定位到該當前進程的私有句柄表。步驟110,遍歷該當前進程的私有句柄表與其它進程的私有句柄表形成的句柄表鏈,獲得其它進程私有句柄表。如如所述,windows系統中,系統中所有進程的私有句柄表以雙向鏈表的形式鏈接在一起。如圖2所示,其為多個進程的進程結構體通過其私有句柄表形成句柄表鏈的示意圖。進程的私有句柄表為_HANDLE_TABLE結構,對于任一句柄表,由pHandleTable偏移Oxlc(十六進制)即可指向其類型為_LIST_ENTRY的成員變量HandleTableList,即句柄表鏈。每一個HandleTableList都具有Flink和Blink兩個成員,Flink成員是一個向前鏈接,指向下一個LIST_ENTRY結構;B1ink成員則是一個向后鏈接,指向前一個LIST_ENTRY結構。整個鏈表形成封閉環形,也就是說,最后一個Flink指向鏈表中的第一個LIST_ENTRY結構,而第一個Blink則指向最后一個。由圖2可以看出,系統內所有進程的句柄表都是通S_LIST_ENTRY類型的雙向鏈表鏈接起來的。故按照一定的步長遍歷該雙向鏈表,即可獲得系統中所有的進程。本步驟的遍歷該當前進程的私有句柄表與其它進程的私有句柄表形成的句柄表鏈,獲得其它進程私有句柄表的具體實施方法如下A、記錄所述當前進程的私有句柄表的地址;B、由該當前進程的私有句柄表指針偏移獲取私有句柄表鏈上相鄰進程的私有句柄表;C、判斷偏移后進程的私有句柄表地址是否與記錄的當前進程的私有句柄表的地址相同;若是,終止遍歷;D、若否,按照與前述偏移相同的方向繼續執行指針偏移獲取私有句柄表鏈上的其它進程私有句柄表;直到偏移后獲得進程私有句柄表地址與記錄的當前進程私有句柄表的地址相同為止。具體而言,如果要遍歷整個鏈表,它需要保存第一個(或者當前)HandleTableList的地址,用于以判斷是否已遍歷了整個鏈表。向前或者向后偏移一定的步長(所述偏移的步長根據win系統的版本而確定,這里不再贅述)獲得相鄰的HandleTableList,進而獲得其所在的私有句柄表。并判斷該相鄰的HandleTableList的地址是否與之前記錄的第一個HandleTableList的地址相同,若相同,表明遍歷已經完成,則終止遍歷,若否,繼續按照與前述相同偏移相同的方向偏移相同的步長,并在此判斷所得到的HandleTableList的地址,直至偏移獲得的HandleTableList的地址與第一個相同,即表明完成了整個鏈表的遍歷。其中,每一次偏移獲得的HandleTableList的地址偏移-Oxlc(十六進制)即可獲得其所在的私有句柄表的pHandleTable。步驟120根據所述獲得的其它進程的私有句柄表,獲取每一私有句柄表所對應的進程;遍歷完成整個雙向鏈表之后,即可得到鏈表上所有的私有句柄表。對于任一私有句柄表,通過遍歷已經獲得了其成員變量HandleTableList的地址。在句柄表中,pHandleTable偏移0x04處,結構成員為指向該句柄表所在進程結構體的指針,也就是說,在獲得HandleTableList的地址后,通過地址偏移即可找到其所在進程結構體的指針,進而能夠得到該進程結構體,也就是找到了該進程。系統的所有進程均可以通過如上所述的方式而獲得。步驟130,集合所獲得的所有進程,形成系統進程表。本發明的上述實施例的方法中,通過遍歷進程的私有句柄表鏈獲得私有句柄表對應的進程;由于任何進程都會有自己的私有句柄表,而且所有進程的私有句柄表鏈會鏈接在一起,形成雙向鏈表,只要遍歷該雙向鏈表,即可獲得所有的進程;包括一些隱藏的進程;也就是說,即使有些進程從進程活動鏈表中刪除,通過本發明的方法仍然能夠枚舉出該進程,使得一些惡意軟件或者Rootkit無處藏身,有利于減少一些惡意的隱藏進程對系統的威脅。對于所述獲得系統的進程中的至少一個進程,還可以按照該進程所在的SessionProcessLinks鏈表再做遍歷,并將獲得的進程表與所述獲得系統的進程集合合并。WINDBG中數據結構如下kd>dt_eprocess81c2c6d8nt!_EPR0CESS+OxObOVirtualSize0x3933000+0x0b4SessionProcessLinks:_LIST_ENTRY由上述結構可知,進程的SessionProcessLinks也是_LIST_ENTRY結構的環形雙向鏈表,對于每一進程,通過遍歷該SessionProcessLinks,均可得到一個進程的列表。對通過上述實施例的方法得到進程列表中的任一或多個進程,再通過SessionProcessLinks遍歷,可得到一個或多個進程表,將獲得的進程表與上述實施例中得到的進程表集合,并去除重復進程,即可得到更為完整的進程表。此外,對于所述獲得系統的進程中的至少一個進程,按照該進程所在Vm.WorkingSetExpansionLinks鏈表再做遍歷,并將獲得的進程表與所述獲得系統的進程集合合并。其中,Vm.WorkingSetExpansionLinks遍歷的原理同SessionProcessLinks遍歷,這里不再贅述。通過上述實施例獲得進程列表,還可以繼續執行如下的步驟I.將獲取的當前進程表與Windows任務管理器的進程表比對;II.找出不同于Windows任務管理器的進程表中的進程;III.將所述找出的進程向用戶發送提示消息或發送報警。也就是說,通過將本發明的實施例獲得的進程表與前述
背景技術
中的方法所獲得進程表進行比對,并將本發明的實施例的方法獲得的進程表與
背景技術
中所獲得的方法所不同的進程找出并提示用戶或發出報警。用戶可以根據該提示或報警對所找出的不同進程進一步分析,判斷是否惡意進程。以上公開了本發明的一種用于枚舉系統進程的方法的實施例,與此相應的,本發明還公開了一種用于枚舉系統進程的裝置。請參靠圖3,其為本發明的一種用于枚舉系統進程的裝置的一種實施例的示意圖。由于該裝置的實施例與前述的方法的實施例基本相同,下面僅簡單描述本實施例中的裝置。本實施例的一種用于枚舉系統進程的裝置包括句柄表獲取單元200,用于獲取該當前進程的私有句柄表;遍歷單元210,用于遍歷該當前進程的私有句柄表與其它進程的私有句柄表形成的句柄表鏈,獲得其它進程私有句柄表;執行單兀220,用于根據所述獲得的其它進程的私有句柄表,獲取每一私有句柄表所對應的進程;集合單元230,用于集合所獲得的所有進程,形成系統進程集合。可選的,所述句柄表獲取單元200包括進程指針獲取單元,用于獲取指向當前進程的指針;句柄表指針獲取單元,用于由所述當前進程的指針偏移獲得當前進程的私有句柄表指針;定位單元,用于根據所述當前進程的私有句柄表指針定位到該當前進程的私有句柄表可選的,所述遍歷單元210包括記錄單元,用于記錄所述當前進程的私有句柄表的地址;偏移單元,用于由該當前進程的私有句柄表指針偏移獲取私有句柄表鏈上相鄰進程的私有句柄表;判斷單元,用于判斷偏移后進程的私有句柄表地址是否與記錄的當前進程的私有句柄表的地址相同;若是,終止遍歷;若否,返回所述偏移單元;直到偏移后獲得進程私有句柄表地址與記錄的當前進程私有句柄表的地址相同為止。可選的,本實施例的裝置還包括第二遍歷單元,用于對于所述獲得系統的進程中的至少一個進程,按照該進程所在的SessionProcessLinks鏈表再做遍歷,并將獲得的進程表與所述獲得系統的進程集合合并。可選的,本實施例的裝置還包括第三遍歷單元,用于對于所述獲得系統的進程中的至少一個進程,按照該進程所在Vm.WorkingSetExpansionLinks鏈表再做遍歷,并將獲得的進程表與所述獲得系統的進程集合合并。可選的,本實施例的裝置還包括對比單元,用于將獲取的當前進程表與Windows任務管理器的進程表比對;提取單元,用于找出不同于Windows任務管理器的進程表中的進程;報警單元,用于將所述找出的進程向用戶發送提示消息或發送報警。應用本發明實施例的裝置可獲得與上述方法實施例相同的技術效果,這里不再贅述。在此提供的算法和顯示不與任何特定計算機、虛擬系統或者其它設備固有相關。各種通用系統也可以與基于在此的示教一起使用。根據上面的描述,構造這類系統所要求的結構是顯而易見的。此外,本發明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現在此描述的本發明的內容,并且上面對特定語言所做的描述是為了披露本發明的最佳實施方式。在此處所提供的說明書中,說明了大量具體細節。然而,能夠理解,本發明的實施例可以在沒有這些具體細節的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。類似地,應當理解,為了精簡本公開并幫助理解各個發明方面中的一個或多個,在上面對本發明的示例性實施例的描述中,本發明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖即所要求保護的本發明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發明的單獨實施例。本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。本發明的各個部件實施例可以以硬件實現,或者以在一個或者多個處理器上運行的軟件模塊實現,或者以它們的組合實現。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數字信號處理器(DSP)來實現根據本發明實施例的用于枚舉系統進程的裝置中的一些或者全部部件的一些或者全部功能。本發明還可以實現為用于執行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現本發明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應該注意的是上述實施例對本發明進行說明而不是對本發明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。權利要求1.一種用于枚舉系統進程的方法,其特征在于,包括獲取當如進程的私有句柄表;遍歷該當前進程的私有句柄表與其它進程的私有句柄表形成的句柄表鏈,獲得其它進程私有句柄表;根據所述獲得的其它進程的私有句柄表,獲取每一私有句柄表所對應的進程;集合所獲得的所有進程,形成系統進程集合。2.根據權利要求I所述的用于枚舉系統進程的方法,其特征在于,所述獲取該當前進程的私有句柄表包括獲取指向當前進程的指針;由所述當前進程的指針偏移獲得當前進程的私有句柄表指針;根據所述當前進程的私有句柄表指針定位到該當前進程的私有句柄表。3.根據權利要求2所述的用于枚舉系統進程的方法,其特征在于,所述獲取指向當前進程的指針包括通過PsGetCurrentProcessO或IoGetCurrentProcessO獲得當前進程的指針。4.根據權利要求2所述的用于枚舉系統進程的方法,其特征在于,所述由所述當前進程的指針偏移獲得當前進程的私有句柄表指針的步驟中,偏移的步長由win系統版本決定。5.根據權利要求I所述的用于枚舉系統進程的方法,其特征在于,所述遍歷該當前進程的私有句柄表與其它進程的私有句柄表形成的句柄表鏈,獲得其它進程私有句柄表包括記錄所述當前進程的私有句柄表的地址;由該當如進程的私有句柄表指針偏移獲取私有句柄表鏈上相鄰進程的私有句柄表;判斷偏移后進程的私有句柄表地址是否與記錄的當前進程的私有句柄表的地址相同;若是,終止遍歷;若否,按照與前述偏移相同的方向繼續執行指針偏移獲取私有句柄表鏈上的其它進程私有句柄表;直到偏移后獲得進程私有句柄表地址與記錄的當前進程私有句柄表的地址相同為止。6.根據權利要求5所述的用于枚舉系統進程的方法,其特征在于,所述偏移的步長根據win系統的版本而確定。7.根據權利要求I所述的用于枚舉系統進程的方法,其特征在于還包括對于所述獲得系統的進程中的至少一個進程,按照該進程所在的SessionProcessLinks鏈表再做遍歷,并將獲得的進程表與所述獲得系統的進程集合合并。8.根據權利要求I所述的用于枚舉系統進程的方法,其特征在于還包括對于所述獲得系統的進程中的至少一個進程,按照該進程所在Vm.WorkingSetExpansionLinks鏈表再做遍歷,并將獲得的進程表與所述獲得系統的進程集合合并。9.根據權利要求I所述的用于枚舉系統進程的方法,其特征在于還包括如下步驟將獲取的當前進程集合與Windows任務管理器的進程表比對;找出不同于Windows任務管理器的進程表中的進程;將所述找出的進程向用戶發送提示消息或發送報警。10.一種用于枚舉系統進程的裝置,其特征在于,包括句柄表獲取單元,用于獲取該當前進程的私有句柄表;遍歷單元,用于遍歷該當前進程的私有句柄表與其它進程的私有句柄表形成的句柄表鏈,獲得其它進程私有句柄表;執行單元,用于根據所述獲得的其它進程的私有句柄表,獲取每一私有句柄表所對應的進程;集合單元,用于集合所獲得的所有進程,形成系統進程集合。11.根據權利要求10所述的用于枚舉系統進程的裝置,其特征在于,所述句柄表獲取單元包括進程指針獲取單元,用于獲取指向當前進程的指針;句柄表指針獲取單元,用于由所述當前進程的指針偏移獲得當前進程的私有句柄表指針;定位單元,用于根據所述當前進程的私有句柄表指針定位到該當前進程的私有句柄表。12.根據權利要求10所述的用于枚舉系統進程的裝置,其特征在于,所述遍歷單元包括記錄單元,用于記錄所述當前進程的私有句柄表的地址;偏移單元,用于由該當前進程的私有句柄表指針偏移獲取私有句柄表鏈上相鄰進程的私有句柄表;判斷單元,用于判斷偏移后進程的私有句柄表地址是否與記錄的當前進程的私有句柄表的地址相同;若是,終止遍歷;若否,返回所述偏移單元;直到偏移后獲得進程私有句柄表地址與記錄的當前進程私有句柄表的地址相同為止。13.根據權利要求10所述的用于枚舉系統進程的裝置,其特征在于還包括第二遍歷單元,用于對于所述獲得系統的進程中的至少一個進程,按照該進程所在的SessionProcessLinks鏈表再做遍歷,并將獲得的進程表與所述獲得系統的進程集合合并。14.根據權利要求10所述的用于枚舉系統進程的裝置,其特征在于還包括第三遍歷單元,用于對于所述獲得系統的進程中的至少一個進程,按照該進程所在Vm.WorkingSetExpansionLinks鏈表再做遍歷,并將獲得的進程表與所述獲得系統的進程口口O15.根據權利要求I所述的用于枚舉系統進程的裝置,其特征在于還包括對比單元,用于將獲取的當前進程集合與Windows任務管理器的進程表比對;提取單元,用于找出不同于Windows任務管理器的進程表中的進程;報警單元,用于將所述找出的進程向用戶發送提示消息或發送報警。全文摘要本發明公開了一種用于枚舉系統進程的方法,包括獲取當前進程的私有句柄表;遍歷該當前進程的私有句柄表與其它進程的私有句柄表形成的句柄表鏈,獲得其它進程私有句柄表;根據所述獲得的其它進程的私有句柄表,獲取每一私有句柄表所對應的進程;集合所獲得的所有進程,形成系統進程集合。本發明還公開了一種用于枚舉系統進程的裝置。本發明能夠枚舉出系統所有進程,包括一些隱藏的進程;使得一些惡意軟件或者Rootkit無處藏身,有利于減少一些惡意的隱藏進程對系統的威脅。文檔編號G06F21/56GK102945346SQ20121036296公開日2013年2月27日申請日期2012年9月25日優先權日2012年9月25日發明者張輝,陳擎月申請人:北京奇虎科技有限公司,奇智軟件(北京)有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 遵义市| 阳东县| 垣曲县| 彰武县| 海门市| 保康县| 峨眉山市| 长顺县| 四平市| 潼关县| 犍为县| 徐州市| 滦平县| 东光县| 永济市| 新干县| 巍山| 阳山县| 东阿县| 吉林市| 慈溪市| 前郭尔| 凤阳县| 黄梅县| 清丰县| 建水县| 繁昌县| 股票| 平遥县| 会同县| 高要市| 南城县| 疏附县| 迁安市| 太康县| 临夏县| 阜平县| 汉源县| 竹北市| 莆田市| 武宣县|