本申請(qǐng)涉及通信技術(shù)領(lǐng)域,尤其涉及一種惡意進(jìn)程結(jié)束方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,病毒、木馬等惡意程序技術(shù)層出不窮,惡意程序?yàn)榱俗陨淼拇婊睿瑫?huì)對(duì)自身進(jìn)程做各種安全防護(hù),比如不能結(jié)束它的進(jìn)程,不能刪除它的文件等。
現(xiàn)有殺毒軟件結(jié)束惡意進(jìn)程技術(shù)方案中,先調(diào)用內(nèi)核函數(shù)NtOpenProcess打開(kāi)進(jìn)程,取得進(jìn)程句柄,由進(jìn)程句柄為參數(shù),調(diào)用內(nèi)核函數(shù)NtTerminateProcess結(jié)束進(jìn)程。這就會(huì)存在被惡意程序掛突破的可能,比如掛鉤NtOpenProcess函數(shù)或者NtTerminateProcess函數(shù),在殺毒軟件判斷打開(kāi)的進(jìn)程或者結(jié)束的進(jìn)程是否為惡意程序自身時(shí),就會(huì)拒絕操作,讓上述方案結(jié)束進(jìn)程功能失效,影響殺毒軟件結(jié)束惡意進(jìn)程的效果。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問(wèn)題之一。
為此,本申請(qǐng)的第一個(gè)目的在于提出一種惡意進(jìn)程結(jié)束方法,該方法用于結(jié)束終端設(shè)備上的惡意進(jìn)程,提高殺毒軟件結(jié)束惡意進(jìn)程的效果。
本申請(qǐng)的第二個(gè)目的在于提出一種惡意進(jìn)程結(jié)束裝置。
為達(dá)上述目的,本申請(qǐng)第一方面實(shí)施例提出了一種惡意進(jìn)程結(jié)束方法,包括:查詢獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí);根據(jù)所述有效線程的線程標(biāo)識(shí)查詢獲取待結(jié)束的目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體;將所述目標(biāo)線程的線程結(jié)構(gòu)體作為參數(shù),調(diào)用線程結(jié)束內(nèi)核函數(shù)來(lái)結(jié)束所述目標(biāo)線程。
進(jìn)一步的,所述將所述目標(biāo)線程的線程結(jié)構(gòu)體作為參數(shù),調(diào)用線程結(jié)束內(nèi)核函數(shù)來(lái)結(jié)束所述目標(biāo)線程之后,還包括:
判斷所述線程結(jié)束內(nèi)核函數(shù)是否返回成功;
若所述線程結(jié)束內(nèi)核函數(shù)未返回成功,則將所述目標(biāo)線程設(shè)置為系統(tǒng)線程,并在所述目標(biāo)線程中插入APC回調(diào)函數(shù),使得所述終端設(shè)備的中央處理器CPU優(yōu)先調(diào)度所述目標(biāo)線程,并觸發(fā)APC回調(diào)函數(shù)結(jié)束所述目標(biāo)線程。
進(jìn)一步的,所述查詢獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí),包括:
獲取所有線程標(biāo)識(shí);
根據(jù)所述線程標(biāo)識(shí)查詢所述終端設(shè)備,判斷所述終端設(shè)備上是否存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體;
若所述終端設(shè)備上存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體,則確定所述線程標(biāo)識(shí)對(duì)應(yīng)的線程為有效線程。
進(jìn)一步的,所述查詢獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí),還包括:
若所述終端設(shè)備上不存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體,則確定所述線程標(biāo)識(shí)對(duì)應(yīng)的線程為無(wú)效線程。
進(jìn)一步的,所述根據(jù)所述有效線程的線程標(biāo)識(shí)查詢獲取目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體,包括:
根據(jù)所述有效線程的線程標(biāo)識(shí)查詢獲取所述有效線程所屬的進(jìn)程的進(jìn)程標(biāo)識(shí)以及進(jìn)程結(jié)構(gòu)體;
判斷所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)是否匹配;
若所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)匹配,則確定所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的進(jìn)程為目標(biāo)進(jìn)程,確定屬于所述目標(biāo)進(jìn)程的有效線程為目標(biāo)線程。
進(jìn)一步的,所述根據(jù)所述有效線程的線程標(biāo)識(shí)查詢獲取目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體,還包括:
若所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)不匹配,則確定所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的進(jìn)程為非目標(biāo)進(jìn)程。
進(jìn)一步的,所述將所述目標(biāo)線程設(shè)置為系統(tǒng)線程,包括:
獲取所述目標(biāo)線程的線程結(jié)構(gòu)體中的線程類型字段,所述線程類型字段用于標(biāo)識(shí)所述目標(biāo)線程是否為系統(tǒng)線程;
將所述線程類型字段的值設(shè)置為0X10,以使CPU根據(jù)所述線程類型字段將所述目標(biāo)線程識(shí)別為系統(tǒng)線程。
本申請(qǐng)實(shí)施例的惡意進(jìn)程結(jié)束方法,首先獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí),根據(jù)有效線程的線程標(biāo)識(shí)查詢獲取待結(jié)束的目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體,從而實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程的徹底結(jié)束,提高殺毒軟件結(jié)束惡意進(jìn)程的效果,以提高殺毒軟件的可靠性和安全性。
為達(dá)上述目的,本申請(qǐng)第二方面實(shí)施例提出了一種惡意進(jìn)程結(jié)束裝置,包括:查詢模塊,用于查詢獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí);獲取模塊,用于根據(jù)有效線程的線程標(biāo)識(shí)查詢獲取待結(jié)束的目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體;調(diào)用模塊,用于將所述目標(biāo)線程的線程結(jié)構(gòu)體作為參數(shù),調(diào)用線程結(jié)束內(nèi)核函數(shù)來(lái)結(jié)束所述目標(biāo)線程。
進(jìn)一步的,所述的惡意進(jìn)程結(jié)束裝置還包括:
判斷模塊,用于判斷所述線程結(jié)束內(nèi)核函數(shù)是否返回成功;
設(shè)置模塊,用于在所述線程結(jié)束內(nèi)核函數(shù)未返回成功時(shí),將所述目標(biāo)線程設(shè)置為系統(tǒng)線程,并在所述目標(biāo)線程的線程結(jié)構(gòu)體中插入APC回調(diào)函數(shù),使得所述終端設(shè)備的中央處理器CPU優(yōu)先調(diào)度所述目標(biāo)線程,并觸發(fā)APC回調(diào)函數(shù)結(jié)束所述目標(biāo)線程。
進(jìn)一步的,所述查詢模塊,包括:
第一獲取單元,用于獲取所有線程標(biāo)識(shí);
第二判斷單元,用于根據(jù)所述線程標(biāo)識(shí)查詢所述終端設(shè)備,判斷所述終端設(shè)備上是否存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體;
第二確定單元,用于在所述終端設(shè)備上存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體時(shí),確定所述線程標(biāo)識(shí)對(duì)應(yīng)的線程為有效線程。
進(jìn)一步的,所述查詢模塊,還包括:
第三確定單元,用于在所述終端設(shè)備上不存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體時(shí),確定所述線程標(biāo)識(shí)對(duì)應(yīng)的線程為無(wú)效線程。
進(jìn)一步的,所述獲取模塊,包括:
查詢單元,用于根據(jù)所述有效線程的線程標(biāo)識(shí)查詢獲取所述有效線程所屬的進(jìn)程的進(jìn)程標(biāo)識(shí)以及進(jìn)程結(jié)構(gòu)體;
第一判斷單元,用于判斷所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)是否匹配;
第一確定單元,用于在所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)匹配時(shí),確定所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的進(jìn)程為目標(biāo)進(jìn)程,確定屬于所述目標(biāo)進(jìn)程的有效線程為目標(biāo)線程。
進(jìn)一步的,所述獲取模塊,還包括:
第四確定單元,用于在所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)不匹配時(shí),確定所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的進(jìn)程為非目標(biāo)進(jìn)程。
進(jìn)一步的,所述設(shè)置模塊,包括:
第二獲取單元,用于獲取所述目標(biāo)線程的線程結(jié)構(gòu)體中的線程類型字段,所述線程類型字段用于標(biāo)識(shí)所述目標(biāo)線程是否為系統(tǒng)線程;
設(shè)置單元,用于將所述線程類型字段的值設(shè)置為0X10,以使CPU根據(jù)所述線程類型字段將所述目標(biāo)線程識(shí)別為系統(tǒng)線程。
本申請(qǐng)實(shí)施例的惡意進(jìn)程結(jié)束裝置,通過(guò)查詢模塊查詢獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí);獲取模塊根據(jù)有效線程的線程標(biāo)識(shí)查詢獲取待結(jié)束的目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體;調(diào)用模塊獲取終端設(shè)備上待結(jié)束的目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體,從而實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程的徹底結(jié)束,提高殺毒軟件結(jié)束惡意進(jìn)程的效果,以提高殺毒軟件的可靠性和安全性。
附圖說(shuō)明
本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:
圖1是本申請(qǐng)一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束方法的流程圖;
圖2是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束方法的流程圖;
圖3是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束方法的流程圖;
圖4是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束方法的流程圖;
圖5是本申請(qǐng)一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束裝置的結(jié)構(gòu)示意圖;
圖6是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束裝置的結(jié)構(gòu)示意圖;
圖7是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束裝置的結(jié)構(gòu)示意圖;
圖8是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束裝置的結(jié)構(gòu)示意圖;
圖9是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束裝置的結(jié)構(gòu)示意圖;
圖10是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面詳細(xì)描述本申請(qǐng)的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本申請(qǐng),而不能理解為對(duì)本申請(qǐng)的限制。
下面參考附圖描述本申請(qǐng)實(shí)施例的惡意進(jìn)程結(jié)束方法及裝置。
圖1是本申請(qǐng)一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束方法的流程圖。
如圖1所示,該惡意進(jìn)程結(jié)束方法包括:
步驟101,查詢獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí)。
本發(fā)明提供的惡意進(jìn)程結(jié)束方法的執(zhí)行主體為惡意進(jìn)程結(jié)束裝置,惡意進(jìn)程結(jié)束裝置具體可以為毒霸等殺毒軟件,或者安裝有毒霸等殺毒軟件的終端設(shè)備。
步驟102,根據(jù)有效線程的線程標(biāo)識(shí)查詢獲取待結(jié)束的目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體。
其中,用戶根據(jù)自身的需求在終端設(shè)備上安裝了至少一個(gè)應(yīng)用或程序,其中部分應(yīng)用或程序可能感染了病毒、木馬等惡意程序,病毒、木馬等惡意程序的進(jìn)程為待結(jié)束的目標(biāo)進(jìn)程,為了結(jié)束目標(biāo)進(jìn)程,需要先在用戶使用的終端設(shè)備上獲取待結(jié)束的目標(biāo)進(jìn)程以及從終端設(shè)備上所有有效線程中獲取屬于目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體。
另外,若從終端設(shè)備上未獲取到待結(jié)束的目標(biāo)進(jìn)程以及屬于目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體,則表明該終端設(shè)備未感染病毒、木馬等惡意程序。
步驟103,將所述目標(biāo)線程的線程結(jié)構(gòu)體作為參數(shù),調(diào)用線程結(jié)束內(nèi)核函數(shù)來(lái)結(jié)束所述目標(biāo)線程。
具體的,惡意進(jìn)程結(jié)束裝置可以將目標(biāo)線程的線程結(jié)構(gòu)體作為參數(shù),調(diào)用NtTerminateThread內(nèi)核函數(shù)來(lái)結(jié)束目標(biāo)線程。
本申請(qǐng)實(shí)施例的惡意進(jìn)程結(jié)束方法,首先獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí),根據(jù)有效線程的線程標(biāo)識(shí)查詢獲取待結(jié)束的目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體,從而實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程的徹底結(jié)束,提高殺毒軟件結(jié)束惡意進(jìn)程的效果,以提高殺毒軟件的可靠性和安全性。
圖2是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束方法的流程圖。
如圖2所示,針對(duì)圖1所示實(shí)施例,步驟103之后,還可以包括:
步驟104,判斷所述線程結(jié)束內(nèi)核函數(shù)是否返回成功。
若線程結(jié)束內(nèi)核函數(shù)返回成功,則表明目標(biāo)線程結(jié)束成功。惡意進(jìn)程結(jié)束裝置可以繼續(xù)調(diào)用線程結(jié)束內(nèi)核函數(shù)結(jié)束其它目標(biāo)線程。
若線程結(jié)束內(nèi)核函數(shù)返回失敗,則表明目標(biāo)線程結(jié)束失敗。惡意進(jìn)程結(jié)束裝置需要對(duì)當(dāng)前目標(biāo)線程進(jìn)行設(shè)置,使得終端設(shè)備的中央處理器CPU能夠優(yōu)先調(diào)用當(dāng)前目標(biāo)線程并結(jié)束當(dāng)前目標(biāo)線程,然后繼續(xù)調(diào)用線程結(jié)束內(nèi)核函數(shù)結(jié)束其它目標(biāo)線程。
步驟105,若所述線程結(jié)束內(nèi)核函數(shù)未返回成功,則將所述目標(biāo)線程設(shè)置為系統(tǒng)線程,并在所述目標(biāo)線程的線程結(jié)構(gòu)體中插入APC回調(diào)函數(shù),使得所述終端設(shè)備的中央處理器CPU優(yōu)先調(diào)度所述目標(biāo)線程,并觸發(fā)APC回調(diào)函數(shù)結(jié)束所述目標(biāo)線程。
具體的,在線程結(jié)束內(nèi)核函數(shù)未返回成功時(shí),惡意進(jìn)程結(jié)束裝置可以先獲取所述目標(biāo)線程的線程結(jié)構(gòu)體中的線程類型字段,所述線程類型字段用于標(biāo)識(shí)所述目標(biāo)線程是否為系統(tǒng)線程;將所述線程類型字段的值設(shè)置為0X10,以使CPU根據(jù)所述線程類型字段將所述目標(biāo)線程識(shí)別為系統(tǒng)線程;然后在所述目標(biāo)線程的線程結(jié)構(gòu)體中插入APC回調(diào)函數(shù),使得所述終端設(shè)備的中央處理器CPU優(yōu)先調(diào)度所述目標(biāo)線程,并觸發(fā)APC回調(diào)函數(shù)結(jié)束所述目標(biāo)線程。
其中,線程類型字段具體可以為SysThreadFlag字段。將該字段的值設(shè)置為0X10后,中央處理器CPU就能夠?qū)⒛繕?biāo)線程識(shí)別為系統(tǒng)線程。由于系統(tǒng)線程優(yōu)先級(jí)很高,處于報(bào)警狀態(tài),中央處理器CPU會(huì)優(yōu)先調(diào)用。
另外,惡意進(jìn)程結(jié)束裝置調(diào)用內(nèi)核函數(shù)KeInsertQueueApc可以在所述目標(biāo)線程的線程結(jié)構(gòu)體中插入一個(gè)APC回調(diào)函數(shù),當(dāng)中央處理器優(yōu)先調(diào)度該目標(biāo)線程時(shí),就會(huì)觸發(fā)APC回調(diào)函數(shù),APC回調(diào)函數(shù)中調(diào)用的PsTerminateSystemThread函數(shù)就可以把目標(biāo)線程退出,即可結(jié)束目標(biāo)線程。
本申請(qǐng)實(shí)施例的惡意進(jìn)程結(jié)束方法,首先獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí),根據(jù)有效線程的線程標(biāo)識(shí)查詢獲取待結(jié)束的目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體;在調(diào)用線程結(jié)束內(nèi)核函數(shù)結(jié)束目標(biāo)線程失敗后,將所述目標(biāo)線程設(shè)置為系統(tǒng)線程,并在所述目標(biāo)線程的線程結(jié)構(gòu)體中插入APC回調(diào)函數(shù),使得所述終端設(shè)備的中央處理器CPU優(yōu)先調(diào)度所述目標(biāo)線程,并觸發(fā)APC回調(diào)函數(shù)結(jié)束所述目標(biāo)線程。從而實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程的徹底結(jié)束,提高殺毒軟件結(jié)束惡意進(jìn)程的效果,以提高殺毒軟件的可靠性和安全性。
圖3是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束方法的流程圖。
如圖3所示,針對(duì)圖1所示實(shí)施例,步驟102具體可以包括:
步驟1021,根據(jù)所述有效線程的線程標(biāo)識(shí)查詢獲取所述有效線程所屬的進(jìn)程的進(jìn)程標(biāo)識(shí)以及進(jìn)程結(jié)構(gòu)體。
其中,有效線程為終端設(shè)備上具有對(duì)應(yīng)的線程結(jié)構(gòu)體的線程。
具體的,惡意進(jìn)程結(jié)束裝置可以根據(jù)有效線程的線程標(biāo)識(shí),調(diào)用內(nèi)核函數(shù)IoThreadToProcess查詢有效線程是屬于哪一個(gè)進(jìn)程,并返回一個(gè)進(jìn)程結(jié)構(gòu)體。進(jìn)程結(jié)構(gòu)體中會(huì)保存有進(jìn)程標(biāo)識(shí)。其中,有效線程的線程標(biāo)識(shí)具體可以為線程身份標(biāo)識(shí)(Identification,ID)等可以唯一標(biāo)識(shí)線程的標(biāo)識(shí)。進(jìn)程標(biāo)識(shí)可以為進(jìn)程ID等可以唯一標(biāo)識(shí)進(jìn)程的標(biāo)識(shí)。
步驟1022,判斷所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)是否匹配。
步驟1023,若所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)匹配,則確定所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的進(jìn)程為目標(biāo)進(jìn)程,確定屬于所述目標(biāo)進(jìn)程的有效線程為目標(biāo)線程。
其中,若所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)不匹配,則確定所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的進(jìn)程為非目標(biāo)進(jìn)程。
本申請(qǐng)實(shí)施例的惡意進(jìn)程結(jié)束方法,首先查詢獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí);根據(jù)所述有效線程的線程標(biāo)識(shí)查詢獲取所述有效線程所屬的進(jìn)程的進(jìn)程標(biāo)識(shí)以及進(jìn)程結(jié)構(gòu)體;在所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)匹配時(shí),確定所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的進(jìn)程為目標(biāo)進(jìn)程,確定屬于所述目標(biāo)進(jìn)程的有效線程為目標(biāo)線程,從而實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程的徹底結(jié)束,提高殺毒軟件結(jié)束惡意進(jìn)程的效果,以提高殺毒軟件的可靠性和安全性。
圖4是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束方法的流程圖。
如圖4所示,針對(duì)圖1所示實(shí)施例,步驟101具體可以包括:
步驟1011,獲取所有線程標(biāo)識(shí)。
其中,每一個(gè)線程都有一個(gè)ID值,線程ID值取值可以是0-65536,且是4的倍數(shù)。
步驟1012,根據(jù)所述線程標(biāo)識(shí)查詢所述終端設(shè)備,判斷所述終端設(shè)備上是否存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體。
步驟1013,若所述終端設(shè)備上存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體,則確定所述線程標(biāo)識(shí)對(duì)應(yīng)的線程為有效線程。
具體的,惡意進(jìn)程結(jié)束裝置可以從0到65536,且每次遞增4搜索,調(diào)用內(nèi)核函數(shù)PsLookupThreadByThreadId由線程ID轉(zhuǎn)為線程結(jié)構(gòu)體,如果該函數(shù)返回成功,則表明終端設(shè)備上存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體,說(shuō)明搜索到的線程ID是有效的。
如果該函數(shù)返回失敗,則表明終端上不存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體,說(shuō)明搜索到的線程ID是無(wú)效的。
本申請(qǐng)實(shí)施例的惡意進(jìn)程結(jié)束方法,首先獲取所有線程標(biāo)識(shí);根據(jù)所述線程標(biāo)識(shí)查詢所述終端設(shè)備,判斷所述終端設(shè)備上是否存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體;若所述終端設(shè)備上存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體,則確定所述線程標(biāo)識(shí)對(duì)應(yīng)的線程為有效線程;根據(jù)所述有效線程的線程標(biāo)識(shí)查詢獲取所述有效線程所屬的進(jìn)程的進(jìn)程標(biāo)識(shí)以及進(jìn)程結(jié)構(gòu)體;在所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)匹配時(shí),確定所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的進(jìn)程為目標(biāo)進(jìn)程,確定屬于所述目標(biāo)進(jìn)程的有效線程為目標(biāo)線程,從而實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程的徹底結(jié)束,提高殺毒軟件結(jié)束惡意進(jìn)程的效果,以提高殺毒軟件的可靠性和安全性。
為了實(shí)現(xiàn)上述實(shí)施例,本申請(qǐng)還提出一種惡意進(jìn)程結(jié)束裝置。
圖5是本申請(qǐng)一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束裝置的結(jié)構(gòu)示意圖。
如圖5所示,該惡意進(jìn)程結(jié)束裝置包括:
查詢模塊51,用于查詢獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí);
獲取模塊52,用于根據(jù)有效線程的線程標(biāo)識(shí)查詢獲取待結(jié)束的目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體;
調(diào)用模塊53,用于將所述目標(biāo)線程的線程結(jié)構(gòu)體作為參數(shù),調(diào)用線程結(jié)束內(nèi)核函數(shù)來(lái)結(jié)束所述目標(biāo)線程。
進(jìn)一步的,如圖6所示,圖6是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束裝置的結(jié)構(gòu)示意圖,該惡意進(jìn)程結(jié)束裝置還包括:
判斷模塊54,用于判斷所述線程結(jié)束內(nèi)核函數(shù)是否返回成功;
設(shè)置模塊55,用于在所述線程結(jié)束內(nèi)核函數(shù)未返回成功時(shí),將所述目標(biāo)線程設(shè)置為系統(tǒng)線程,并在所述目標(biāo)線程的線程結(jié)構(gòu)體中插入APC回調(diào)函數(shù),使得所述終端設(shè)備的中央處理器CPU優(yōu)先調(diào)度所述目標(biāo)線程,并觸發(fā)APC回調(diào)函數(shù)結(jié)束所述目標(biāo)線程。
進(jìn)一步的,設(shè)置模塊55可以包括:第二獲取單元和設(shè)置單元。
第二獲取單元,用于獲取所述目標(biāo)線程的線程結(jié)構(gòu)體中的線程類型字段,所述線程類型字段用于標(biāo)識(shí)所述目標(biāo)線程是否為系統(tǒng)線程;
設(shè)置單元,用于將所述線程類型字段的值設(shè)置為0X10,以使CPU根據(jù)所述線程類型字段將所述目標(biāo)線程識(shí)別為系統(tǒng)線程。
需要說(shuō)明的是,前述對(duì)惡意進(jìn)程結(jié)束方法實(shí)施例的解釋說(shuō)明也適用于該實(shí)施例的惡意進(jìn)程結(jié)束裝置,此處不再贅述。
本申請(qǐng)實(shí)施例的惡意進(jìn)程結(jié)束裝置,通過(guò)查詢模塊獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí),獲取模塊根據(jù)有效線程的線程標(biāo)識(shí)查詢獲取待結(jié)束的目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體;調(diào)用模塊獲取終端設(shè)備上待結(jié)束的目標(biāo)進(jìn)程以及屬于所述目標(biāo)進(jìn)程的目標(biāo)線程的線程結(jié)構(gòu)體;在調(diào)用模塊結(jié)束目標(biāo)線程失敗后,設(shè)置模塊將所述目標(biāo)線程設(shè)置為系統(tǒng)線程,并在所述目標(biāo)線程的線程結(jié)構(gòu)體中插入APC回調(diào)函數(shù),使得所述終端設(shè)備的中央處理器CPU優(yōu)先調(diào)度所述目標(biāo)線程,并觸發(fā)APC回調(diào)函數(shù)結(jié)束所述目標(biāo)線程。從而實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程的徹底結(jié)束,提高殺毒軟件結(jié)束惡意進(jìn)程的效果,以提高殺毒軟件的可靠性和安全性。
圖7是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束裝置的結(jié)構(gòu)示意圖,如圖7所示,基于圖5所示實(shí)施例,獲取模塊52,包括:
查詢單元521,用于根據(jù)所述有效線程的線程標(biāo)識(shí)查詢獲取所述有效線程所屬的進(jìn)程的進(jìn)程標(biāo)識(shí)以及進(jìn)程結(jié)構(gòu)體;
第一判斷單元522,用于判斷所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)是否匹配;
第一確定單元523,用于在所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)匹配時(shí),確定所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的進(jìn)程為目標(biāo)進(jìn)程,確定屬于所述目標(biāo)進(jìn)程的有效線程為目標(biāo)線程。
進(jìn)一步的,如圖8所示,圖8是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束裝置的結(jié)構(gòu)示意圖,所述獲取模塊52,還包括:第四確定單元524,用于在所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)不匹配時(shí),確定所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的進(jìn)程為非目標(biāo)進(jìn)程。
需要說(shuō)明的是,前述對(duì)惡意進(jìn)程結(jié)束方法實(shí)施例的解釋說(shuō)明也適用于該實(shí)施例的惡意進(jìn)程結(jié)束裝置,此處不再贅述。
本申請(qǐng)實(shí)施例的惡意進(jìn)程結(jié)束裝置,首先查詢獲取終端設(shè)備上所有有效線程的線程標(biāo)識(shí);根據(jù)所述有效線程的線程標(biāo)識(shí)查詢獲取所述有效線程所屬的進(jìn)程的進(jìn)程標(biāo)識(shí)以及進(jìn)程結(jié)構(gòu)體;在所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)匹配時(shí),確定所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的進(jìn)程為目標(biāo)進(jìn)程,確定屬于所述目標(biāo)進(jìn)程的有效線程為目標(biāo)線程;在調(diào)用線程結(jié)束內(nèi)核函數(shù)結(jié)束目標(biāo)線程失敗后,將所述目標(biāo)線程設(shè)置為系統(tǒng)線程,并在所述目標(biāo)線程的線程結(jié)構(gòu)體中插入APC回調(diào)函數(shù),使得所述終端設(shè)備的中央處理器CPU優(yōu)先調(diào)度所述目標(biāo)線程,并觸發(fā)APC回調(diào)函數(shù)結(jié)束所述目標(biāo)線程。從而實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程的徹底結(jié)束,提高殺毒軟件結(jié)束惡意進(jìn)程的效果,以提高殺毒軟件的可靠性和安全性。
圖9是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束裝置的結(jié)構(gòu)示意圖,如圖9所示,基于圖5所示實(shí)施例,查詢模塊51包括:
第一獲取單元511,用于獲取所有線程標(biāo)識(shí);
第二判斷單元512,用于根據(jù)所述線程標(biāo)識(shí)查詢所述終端設(shè)備,判斷所述終端設(shè)備上是否存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體;
第二確定單元513,用于在所述終端設(shè)備上存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體時(shí),確定所述線程標(biāo)識(shí)對(duì)應(yīng)的線程為有效線程。
進(jìn)一步的,如圖10所示,圖10是本申請(qǐng)另一個(gè)實(shí)施例的惡意進(jìn)程結(jié)束裝置的結(jié)構(gòu)示意圖,查詢模塊51還包括:第三確定單元514,用于在所述終端設(shè)備上不存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體時(shí),確定所述線程標(biāo)識(shí)對(duì)應(yīng)的線程為無(wú)效線程。
需要說(shuō)明的是,前述對(duì)惡意進(jìn)程結(jié)束方法實(shí)施例的解釋說(shuō)明也適用于該實(shí)施例的惡意進(jìn)程結(jié)束裝置,此處不再贅述。
本申請(qǐng)實(shí)施例的惡意進(jìn)程結(jié)束裝置,首先獲取所有線程標(biāo)識(shí);根據(jù)所述線程標(biāo)識(shí)查詢所述終端設(shè)備,判斷所述終端設(shè)備上是否存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體;若所述終端設(shè)備上存在所述線程標(biāo)識(shí)對(duì)應(yīng)的線程結(jié)構(gòu)體,則確定所述線程標(biāo)識(shí)對(duì)應(yīng)的線程為有效線程;根據(jù)所述有效線程的線程標(biāo)識(shí)查詢獲取所述有效線程所屬的進(jìn)程的進(jìn)程標(biāo)識(shí)以及進(jìn)程結(jié)構(gòu)體;在所述進(jìn)程標(biāo)識(shí)與預(yù)設(shè)的目標(biāo)進(jìn)程標(biāo)識(shí)匹配時(shí),確定所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的進(jìn)程為目標(biāo)進(jìn)程,確定屬于所述目標(biāo)進(jìn)程的有效線程為目標(biāo)線程;在調(diào)用線程結(jié)束內(nèi)核函數(shù)結(jié)束目標(biāo)線程失敗后,將所述目標(biāo)線程設(shè)置為系統(tǒng)線程,并在所述目標(biāo)線程的線程結(jié)構(gòu)體中插入APC回調(diào)函數(shù),使得所述終端設(shè)備的中央處理器CPU優(yōu)先調(diào)度所述目標(biāo)線程,并觸發(fā)APC回調(diào)函數(shù)結(jié)束所述目標(biāo)線程。從而實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程的徹底結(jié)束,提高殺毒軟件結(jié)束惡意進(jìn)程的效果,以提高殺毒軟件的可靠性和安全性。
在本說(shuō)明書的描述中,參考術(shù)語(yǔ)“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本申請(qǐng)的至少一個(gè)實(shí)施例或示例中。在本說(shuō)明書中,對(duì)上述術(shù)語(yǔ)的示意性表述不必須針對(duì)的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說(shuō)明書中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
此外,術(shù)語(yǔ)“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括至少一個(gè)該特征。在本申請(qǐng)的描述中,“多個(gè)”的含義是至少兩個(gè),例如兩個(gè),三個(gè)等,除非另有明確具體的限定。
流程圖中或在此以其他方式描述的任何過(guò)程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過(guò)程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本申請(qǐng)的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來(lái)執(zhí)行功能,這應(yīng)被本申請(qǐng)的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
應(yīng)當(dāng)理解,本申請(qǐng)的各部分可以用硬件、軟件、固件或它們的組合來(lái)實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來(lái)實(shí)現(xiàn)。例如,如果用硬件來(lái)實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來(lái)實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場(chǎng)可編程門陣列(FPGA)等。
本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
此外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)第一處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。
上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。盡管上面已經(jīng)示出和描述了本申請(qǐng)的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本申請(qǐng)的限制,本領(lǐng)域的普通技術(shù)人員在本申請(qǐng)的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。