本發(fā)明涉及安全防護技術(shù)領(lǐng)域,特別涉及一種防止遠(yuǎn)程線程注入的方法、裝置及電子設(shè)備。
背景技術(shù):
進(jìn)程(process)是計算機中的程序關(guān)于某數(shù)據(jù)集合上的一次運行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。在早期面向進(jìn)程設(shè)計的計算機結(jié)構(gòu)中,進(jìn)程是程序的基本執(zhí)行實體;在當(dāng)代面向線程設(shè)計的計算機結(jié)構(gòu)中,進(jìn)程是線程的容器。程序是指令、數(shù)據(jù)及其組織形式的描述,進(jìn)程是程序的實體。
線程是進(jìn)程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。一個線程可以創(chuàng)建和撤消另一個線程,同一進(jìn)程中的多個線程之間可以并發(fā)執(zhí)行。
基礎(chǔ)類軟件為計算機的正常運行提供基礎(chǔ)的服務(wù)和保存系統(tǒng)重要的數(shù)據(jù)信息,由于操作系統(tǒng)提供了createremotethreadex系列函數(shù),用于遠(yuǎn)程創(chuàng)建線程的運行,此時便可以入侵基礎(chǔ)服務(wù)類進(jìn)程,讀取,破壞計算機基礎(chǔ)信息,從而破壞系統(tǒng)正常運行。
技術(shù)實現(xiàn)要素:
本發(fā)明所要達(dá)到的目的就是提供一種防止遠(yuǎn)程線程注入的方法、裝置及電子設(shè)備,能夠保護應(yīng)用程序的正常運行。
為了達(dá)到上述目的,本發(fā)明采用如下技術(shù)方案:
一種防止遠(yuǎn)程線程注入的方法,包括:
應(yīng)用程序預(yù)先設(shè)置需要保護的進(jìn)程標(biāo)識信息;
待創(chuàng)建線程之前,操作系統(tǒng)觸發(fā)調(diào)用回調(diào)函數(shù)指令以對所述待創(chuàng)建線程進(jìn)行監(jiān)視;
根據(jù)所述監(jiān)視,獲取所述待創(chuàng)建線程所歸屬的進(jìn)程的標(biāo)識信息;
根據(jù)所述待創(chuàng)建線程所歸屬的進(jìn)程的標(biāo)識信息,同預(yù)先設(shè)定需要保護的進(jìn)程信息進(jìn)行比較,判斷所述待創(chuàng)建線程所屬進(jìn)程是否是要保護的進(jìn)程;若是則同意創(chuàng)建所述待創(chuàng)建線程。
在本發(fā)明的一個優(yōu)選實施例中,在同意創(chuàng)建所述待創(chuàng)建線程之前還包括判斷步驟:
獲取發(fā)起所述待創(chuàng)建線程的進(jìn)程的標(biāo)識信息,判斷此次發(fā)起所述待創(chuàng)建線程的進(jìn)程的標(biāo)識信息是否等于待創(chuàng)建線程目標(biāo)應(yīng)用程序的進(jìn)程信息。
在本發(fā)明的一個優(yōu)選實施例中,若所述目標(biāo)應(yīng)用程序的線程數(shù)等于0或發(fā)起所述待創(chuàng)建線程的進(jìn)程等于目標(biāo)應(yīng)用程序的進(jìn)程,則同意所述創(chuàng)建線程;
若發(fā)起所述待創(chuàng)建線程的進(jìn)程不是目標(biāo)應(yīng)用程序的進(jìn)程或目標(biāo)應(yīng)用程序的線程數(shù)大于0,則拒絕創(chuàng)建所述待創(chuàng)建的線程。
在本發(fā)明的一個優(yōu)選實施例中,所述標(biāo)識信息是windows記錄進(jìn)程的各種信息的結(jié)構(gòu)體,每個進(jìn)程信息內(nèi)容都是唯一的。
在本發(fā)明的一個優(yōu)選實施例中,所述回調(diào)函數(shù)是指當(dāng)操作系統(tǒng)本身發(fā)生某種事件時刻,操作系統(tǒng)自主選擇調(diào)用的函數(shù)。
在本發(fā)明的一個優(yōu)選實施例中,所述回調(diào)函數(shù)經(jīng)由微軟官方提供的pssetcreatethreadnotifyroutine系列函數(shù)設(shè)置形成。
在本發(fā)明的一個優(yōu)選實施例中,所述操作系統(tǒng)的線程創(chuàng)建函數(shù)為操作系統(tǒng)應(yīng)用層的createremotethreadex系列函數(shù)。
一種防止遠(yuǎn)程線程注入的裝置,包括:
設(shè)置模塊,所述設(shè)置模塊用于應(yīng)用程序預(yù)先設(shè)置需要保護的進(jìn)程標(biāo)識信息;
驅(qū)動模塊,所述驅(qū)動模塊調(diào)用回調(diào)函數(shù)對所述待創(chuàng)建線程進(jìn)行監(jiān)視;
比較模塊,將所述待創(chuàng)建線程所歸屬的進(jìn)程的標(biāo)識信息,同預(yù)先設(shè)定需要保護的進(jìn)程信息進(jìn)行比較;
控制模塊,根據(jù)由比較模塊獲取的比較結(jié)果動態(tài)調(diào)整所述待創(chuàng)建線程。
在本發(fā)明的一個優(yōu)選實施例中,還包括判斷模塊,所述判斷模塊用于獲取發(fā)起所述待創(chuàng)建線程的進(jìn)程的標(biāo)識信息,判斷此次發(fā)起所述待創(chuàng)建線程的進(jìn)程的標(biāo)識信息是否等于待創(chuàng)建線程目標(biāo)應(yīng)用程序的進(jìn)程信息。
一種防止遠(yuǎn)程線程注入的電子設(shè)備,包括上述的裝置,所述電子設(shè)備為電腦,平板或手機。
采用上述技術(shù)方案后,本發(fā)明具有如下優(yōu)點:
本發(fā)明能夠保護應(yīng)用程序的正常運行,防止其進(jìn)程被惡意應(yīng)用程序遠(yuǎn)程注入,提高整個系統(tǒng)的安全性和便捷性。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明的工作原理框圖。
圖2為本發(fā)明的結(jié)構(gòu)框圖。
具體實施方式
下面結(jié)合附圖說明和具體實施方式對本發(fā)明做進(jìn)一步的說明。
如圖1所示,一種防止遠(yuǎn)程線程注入的方法,包括:
應(yīng)用程序預(yù)先設(shè)置需要保護的進(jìn)程標(biāo)識信息即(eprocess),其中標(biāo)識信息即(eprocess)是windows記錄進(jìn)程的各種信息的結(jié)構(gòu)體,每個進(jìn)程信息內(nèi)容都是唯一的,因此我們可以當(dāng)作進(jìn)程的標(biāo)識信息,每個版本操作系統(tǒng)保存的信息各不相同,例windowsvista保存信息如下:
待創(chuàng)建線程之前,操作系統(tǒng)(一般為應(yīng)用程序的防御驅(qū)動程序)觸發(fā)調(diào)用回調(diào)函數(shù)指令以對所述待創(chuàng)建線程進(jìn)行監(jiān)視;該回調(diào)函數(shù)可以由微軟官方提供的pssetcreatethreadnotifyroutine系列函數(shù)設(shè)置;
根據(jù)所述監(jiān)視,獲取所述待創(chuàng)建線程所歸屬的進(jìn)程的標(biāo)識信息;根據(jù)所述待創(chuàng)建線程所歸屬的進(jìn)程的標(biāo)識信息,同預(yù)先設(shè)定需要保護的進(jìn)程信息進(jìn)行比較,判斷所述待創(chuàng)建線程所屬進(jìn)程是否是要保護的進(jìn)程;如果相等即為要保護的進(jìn)程,如果不等即非保護進(jìn)程。
具體地,若所述待創(chuàng)建線程所屬進(jìn)程是要保護的進(jìn)程,則獲取此次發(fā)起所述待創(chuàng)建線程的進(jìn)程的標(biāo)識信息;(待創(chuàng)建的線程有兩個信息,一個是歸屬進(jìn)程,一個為發(fā)起創(chuàng)建的進(jìn)程,此處獲取為發(fā)起創(chuàng)建的進(jìn)程)
進(jìn)一步地,獲取發(fā)起所述待創(chuàng)建線程的進(jìn)程的標(biāo)識信息,判斷此次發(fā)起所述待創(chuàng)建線程的進(jìn)程的標(biāo)識信息是否等于待創(chuàng)建線程目標(biāo)應(yīng)用程序的進(jìn)程信息。
若所述目標(biāo)應(yīng)用程序的線程數(shù)等于0或發(fā)起所述待創(chuàng)建線程的進(jìn)程等于目標(biāo)應(yīng)用程序的進(jìn)程,則同意所述創(chuàng)建線程;若發(fā)起所述待創(chuàng)建線程的進(jìn)程不是目標(biāo)應(yīng)用程序的進(jìn)程或目標(biāo)應(yīng)用程序的線程數(shù)大于0,則拒絕創(chuàng)建所述待創(chuàng)建的線程。
通過上述一整套的流程判斷,能夠保護應(yīng)用程序的正常運行,防止其進(jìn)程被惡意應(yīng)用程序遠(yuǎn)程注入。
優(yōu)選的,上述標(biāo)識信息是windows記錄進(jìn)程的各種信息的結(jié)構(gòu)體,每個進(jìn)程信息內(nèi)容都是唯一的,而操作系統(tǒng)的線程創(chuàng)建函數(shù)為操作系統(tǒng)應(yīng)用層的createremotethreadex系列函數(shù)。
如圖2所示,一種防止遠(yuǎn)程線程注入的裝置,包括:設(shè)置模塊,所述設(shè)置模塊用于應(yīng)用程序預(yù)先設(shè)置需要保護的進(jìn)程標(biāo)識信息;
驅(qū)動模塊,所述驅(qū)動模塊調(diào)用回調(diào)函數(shù)對所述待創(chuàng)建線程進(jìn)行監(jiān)視;
比較模塊,將所述待創(chuàng)建線程所歸屬的進(jìn)程的標(biāo)識信息,同預(yù)先設(shè)定需要保護的進(jìn)程信息進(jìn)行比較;
控制模塊,根據(jù)由比較模塊獲取的比較結(jié)果動態(tài)調(diào)整所述待創(chuàng)建線程。
還包括判斷模塊,所述判斷模塊用于獲取發(fā)起所述待創(chuàng)建線程的進(jìn)程的標(biāo)識信息,判斷此次發(fā)起所述待創(chuàng)建線程的進(jìn)程的標(biāo)識信息是否等于待創(chuàng)建線程目標(biāo)應(yīng)用程序的進(jìn)程信息。
另外地一種防止遠(yuǎn)程線程注入的電子設(shè)備,包括上述的裝置,所述電子設(shè)備為電腦,平板或手機。
在本發(fā)明的描述中,需要理解的是,術(shù)語“中心”、“橫向”、“厚度”、“上”、“下”、“豎直”、“水平”、“頂”、“底”、“內(nèi)”、“外”、“徑向”、“周向”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對本發(fā)明的限制。
此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括一個或者更多個該特征。在本發(fā)明的描述中,“多個”的含義是兩個或兩個以上,除非另有明確具體的限定。
在本發(fā)明中,除非另有明確的規(guī)定和限定,術(shù)語“安裝”、“相連”、“連接”、“固定”等術(shù)語應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或成一體;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個元件內(nèi)部的連通或兩個元件的相互作用關(guān)系。對于本領(lǐng)域的普通技術(shù)人員而言,可以根據(jù)具體情況理解上述術(shù)語在本發(fā)明中的具體含義。
在本發(fā)明中,除非另有明確的規(guī)定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接觸,或第一和第二特征通過中間媒介間接接觸。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或僅僅表示第一特征水平高度高于第二特征。
以上顯示和描述了本發(fā)明的基本原理和主要特征和本發(fā)明的優(yōu)點。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實施例的限制,上述實施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護的本發(fā)明范圍內(nèi)。本發(fā)明要求保護范圍由所附的權(quán)利要求書及其等效物界定。