欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

防注入的方法和裝置與流程

文檔序號(hào):12600466閱讀:425來源:國知局
防注入的方法和裝置與流程

本發(fā)明涉及信息安全領(lǐng)域,特別是涉及一種防注入的方法和裝置。



背景技術(shù):

注入是指以某種方式或通過系統(tǒng)機(jī)制把可執(zhí)行模塊強(qiáng)行加載到進(jìn)程中。常見的注入發(fā)生在API(Applicant Programming Interface,應(yīng)用程序編程接口)的內(nèi)部,當(dāng)代碼中調(diào)用某個(gè)系統(tǒng)API時(shí)(如SHELL32.dll的特定API),API內(nèi)部會(huì)主動(dòng)讀取注冊(cè)表特定的位置,檢查是否有第三方的DLL(Dynamic Link Library,動(dòng)態(tài)鏈接庫)注冊(cè)信息,如果存在第三方的DLL信息,API會(huì)把這些第三方DLL加載到當(dāng)前進(jìn)程中,這個(gè)就是一次注入過程。

為了防止注入,傳統(tǒng)的方式是避免調(diào)用有注入行為的API。然而,采用避免調(diào)用的方式,需要清晰知道哪類API內(nèi)部具有注入行為,對(duì)軟件開發(fā)者要求過高,且出錯(cuò)機(jī)會(huì)較大;一些核心功能的API,實(shí)現(xiàn)功能比較復(fù)雜,并且沒有替代的API,如果調(diào)用這些API則會(huì)被注入,容易被攻擊者通過注入的DLL進(jìn)行攻擊,安全性低,若不調(diào)用這些API,則需要自己實(shí)現(xiàn)其相應(yīng)的功能,代價(jià)非常大。



技術(shù)實(shí)現(xiàn)要素:

基于此,有必要針對(duì)傳統(tǒng)的避免調(diào)用方式防止注入,出錯(cuò)幾率大且安全性低的問題,提供一種防注入的方法,能防止出錯(cuò)且安全性高。

此外,還有必要提供一種防注入的裝置,能防止出錯(cuò)且安全性高。

一種防注入的方法,包括以下步驟:

獲取應(yīng)用程序編程接口的調(diào)用指令;

根據(jù)所述調(diào)用指令在應(yīng)用程序編程接口內(nèi)部讀取注冊(cè)表信息時(shí),進(jìn)入Hook函數(shù);

通過所述Hook函數(shù)讀取注冊(cè)表信息,并根據(jù)預(yù)設(shè)策略獲取動(dòng)態(tài)鏈接庫信息;

加載獲取的動(dòng)態(tài)鏈接庫信息到當(dāng)前進(jìn)程。

一種防注入的裝置,包括:

調(diào)用模塊,用于獲取應(yīng)用程序編程接口的調(diào)用指令;

進(jìn)入模塊,用于根據(jù)所述調(diào)用指令在應(yīng)用程序編程接口內(nèi)部讀取注冊(cè)表信息時(shí),進(jìn)入Hook函數(shù);

獲取模塊,用于通過所述Hook函數(shù)讀取注冊(cè)表信息,并根據(jù)預(yù)設(shè)策略獲取動(dòng)態(tài)鏈接庫信息;

加載模塊,用于加載獲取的動(dòng)態(tài)鏈接庫信息到當(dāng)前進(jìn)程。

上述防注入的方法和裝置,調(diào)用應(yīng)用程序編程接口時(shí),通過Hook函數(shù)讀取注冊(cè)表信息,并按照預(yù)設(shè)策略獲取動(dòng)態(tài)鏈接庫信息,加載動(dòng)態(tài)鏈接庫信息到當(dāng)前進(jìn)程中,通過預(yù)設(shè)策略篩選了動(dòng)態(tài)鏈接庫,而不是直接由應(yīng)用程序編程接口讀取注冊(cè)表信息獲取動(dòng)態(tài)鏈接庫進(jìn)行加載,不需人工識(shí)別,能防止出錯(cuò),且能加載應(yīng)用程序編程接口,因篩選過動(dòng)態(tài)鏈接庫,調(diào)用應(yīng)用程序編程接口安全性高。

附圖說明

圖1A為一個(gè)實(shí)施例中終端的內(nèi)部結(jié)構(gòu)示意圖;

圖1B為一個(gè)實(shí)施例中服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖;

圖2為一個(gè)實(shí)施例中防注入的方法的流程圖;

圖3為一個(gè)實(shí)施例中使用上述防注入的方法注入動(dòng)態(tài)鏈接庫的框架示意圖;

圖4為一個(gè)實(shí)施例中通過該Hook函數(shù)讀取注冊(cè)表信息,并根據(jù)預(yù)設(shè)策略獲取動(dòng)態(tài)鏈接庫信息的具體流程圖;

圖5為一個(gè)實(shí)施例中防注入的裝置的結(jié)構(gòu)框圖;

圖6為另一個(gè)實(shí)施例中防注入的裝置的結(jié)構(gòu)框圖;

圖7為注入第三方的DLL的結(jié)果示意圖;

圖8為防止注入第三方的DLL的結(jié)果示意圖。

具體實(shí)施方式

為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

圖1A為一個(gè)實(shí)施例中終端的內(nèi)部結(jié)構(gòu)示意圖。如圖1A所示,該終端包括通過系統(tǒng)總線連接的處理器、存儲(chǔ)介質(zhì)、內(nèi)存和網(wǎng)絡(luò)接口、聲音采集裝置、顯示屏、揚(yáng)聲器和輸入裝置。其中,終端的存儲(chǔ)介質(zhì)存儲(chǔ)有操作系統(tǒng),還包括一種防注入的裝置,該防注入的裝置用于實(shí)現(xiàn)一種防注入的方法。存儲(chǔ)介質(zhì)中還存儲(chǔ)有白名單和/或黑名單、動(dòng)態(tài)鏈接庫注入信息的注冊(cè)表位置等,白名單用于記錄允許注入的動(dòng)態(tài)鏈接庫的屬性信息,黑名單用于記錄不允許注入的動(dòng)態(tài)鏈接庫的屬性信息。屬性信息可包括DLL(Dynamic Link Library,動(dòng)態(tài)鏈接庫)的路徑、DLL的CLSID信息(Class Identity,全局唯一標(biāo)識(shí)符)、DLL的哈希信息等。該處理器用于提供計(jì)算和控制能力,支撐整個(gè)終端的運(yùn)行。終端中的內(nèi)存為存儲(chǔ)介質(zhì)中的防注入的裝置的運(yùn)行提供環(huán)境,網(wǎng)絡(luò)接口用于與服務(wù)器進(jìn)行網(wǎng)絡(luò)通信,如發(fā)送數(shù)據(jù)請(qǐng)求至服務(wù)器,接收服務(wù)器返回的數(shù)據(jù)等。終端的顯示屏可以是液晶顯示屏或者電子墨水顯示屏等,輸入裝置可以是顯示屏上覆蓋的觸摸層,也可以是終端外殼上設(shè)置的按鍵、軌跡球或觸控板,也可以是外接的鍵盤、觸控板或鼠標(biāo)等。該終端可以是手機(jī)、平板電腦或者個(gè)人數(shù)字助理。本領(lǐng)域技術(shù)人員可以理解,圖1A中示出的結(jié)構(gòu),僅僅是與本申請(qǐng)方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對(duì)本申請(qǐng)方案所應(yīng)用于其上的終端的限定,具體的終端可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。

圖1B為一個(gè)實(shí)施例中服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖。如圖1B所示,該服務(wù)器包括通過系統(tǒng)總線連接的處理器、存儲(chǔ)介質(zhì)、內(nèi)存和網(wǎng)絡(luò)接口。其中,該服務(wù)器的存儲(chǔ)介質(zhì)存儲(chǔ)有操作系統(tǒng)、數(shù)據(jù)庫和防注入的裝置,數(shù)據(jù)庫中存儲(chǔ)有白名單和/或黑名單、動(dòng)態(tài)鏈接庫注入信息的注冊(cè)表位置等,白名單用于記錄允許注入的動(dòng)態(tài)鏈接庫的屬性信息,黑名單用于記錄不允許注入的動(dòng)態(tài)鏈接庫的屬性信息。屬性信息可包括DLL(Dynamic Link Library,動(dòng)態(tài)鏈接庫)的路徑、DLL的CLSID信息(Class Identity,全局唯一標(biāo)識(shí)符)、DLL的哈希信息等。該防注入的裝置用于實(shí)現(xiàn)適用于服務(wù)器的一種防注入的方法。該服務(wù)器的處理器用于提 供計(jì)算和控制能力,支撐整個(gè)服務(wù)器的運(yùn)行。該服務(wù)器的內(nèi)存為存儲(chǔ)介質(zhì)中的防注入的裝置的運(yùn)行提供環(huán)境。該服務(wù)器的網(wǎng)絡(luò)接口用于據(jù)以與外部的終端通過網(wǎng)絡(luò)連接通信,比如接收終端發(fā)送的數(shù)據(jù)請(qǐng)求以及向終端返回壓縮后的數(shù)據(jù)等。服務(wù)器可以用獨(dú)立的服務(wù)器或者是多個(gè)服務(wù)器組成的服務(wù)器集群來實(shí)現(xiàn)。本領(lǐng)域技術(shù)人員可以理解,圖1B中示出的結(jié)構(gòu),僅僅是與本申請(qǐng)方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對(duì)本申請(qǐng)方案所應(yīng)用于其上的服務(wù)器的限定,具體的服務(wù)器可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。

圖2為一個(gè)實(shí)施例中防注入的方法的流程圖。圖2中的防注入的方法可應(yīng)用于終端或服務(wù)器上。如圖2所示,一種防注入的方法,包括以下步驟:

步驟202,獲取應(yīng)用程序編程接口的調(diào)用指令。

具體地,程序調(diào)用應(yīng)用程序編程接口時(shí),產(chǎn)生調(diào)用指令。

步驟204,根據(jù)該調(diào)用指令在應(yīng)用程序編程接口內(nèi)部讀取注冊(cè)表信息時(shí),進(jìn)入Hook函數(shù)。

具體地,程序調(diào)用API時(shí),API內(nèi)部會(huì)讀取注冊(cè)表信息。讀取注冊(cè)表信息是讀取各個(gè)注冊(cè)表位置上的信息。

步驟206,通過該Hook函數(shù)讀取注冊(cè)表信息,并根據(jù)預(yù)設(shè)策略獲取動(dòng)態(tài)鏈接庫信息。

具體地,Hook函數(shù)讀取注冊(cè)表信息后,根據(jù)預(yù)設(shè)策略從注冊(cè)表信息中獲取動(dòng)態(tài)鏈接庫信息。

預(yù)設(shè)策略可根據(jù)需要設(shè)定。

在一個(gè)實(shí)施例中,預(yù)設(shè)策略可包括白名單和/或黑名單。其中,白名單用于記錄允許注入的動(dòng)態(tài)鏈接庫的屬性信息,該黑名單用于記錄不允許注入的動(dòng)態(tài)鏈接庫的屬性信息。屬性信息可包括DLL的路徑、DLL的CLSID(全局唯一標(biāo)識(shí)符)信息、DLL的哈希信息等中的一種或多種。DLL的路徑是指動(dòng)態(tài)鏈接庫所處的位置,例如D:\program files/abc。DLL的CLSID是指windows系統(tǒng)對(duì)于不同的應(yīng)用程序、文件類型、對(duì)象等以及各種系統(tǒng)組件分配的一個(gè)唯一表示它的ID代碼,用于對(duì)其身份的標(biāo)示和其他對(duì)象進(jìn)行區(qū)分。

步驟206包括:通過該Hook函數(shù)讀取注冊(cè)表信息,并根據(jù)白名單和/或黑名單篩選得到允許注入的動(dòng)態(tài)鏈接庫。

具體地,根據(jù)白名單篩選出允許加載的動(dòng)態(tài)鏈接庫,根據(jù)黑名單刪除不允許加載的動(dòng)態(tài)鏈接庫。

在另一個(gè)實(shí)施例中,預(yù)設(shè)策略為不允許任何動(dòng)態(tài)鏈接庫注入。步驟206包括:通過該Hook函數(shù)讀取注冊(cè)表信息,并根據(jù)預(yù)設(shè)策略獲取空信息給應(yīng)用程序編程接口。

具體地,當(dāng)預(yù)設(shè)策略為不允許任何動(dòng)態(tài)鏈接庫注入時(shí),Hook函數(shù)返回空信息給API,這樣就不會(huì)有任何動(dòng)態(tài)鏈接庫被加載。

在另一個(gè)實(shí)施例中,預(yù)設(shè)策略可包括動(dòng)態(tài)鏈接庫的數(shù)字簽名信息。步驟206包括:通過Hook函數(shù)讀取注冊(cè)表信息,獲取動(dòng)態(tài)鏈接庫信息,從動(dòng)態(tài)鏈接庫信息中篩選出具有數(shù)字簽名的動(dòng)態(tài)鏈接庫作為允許注入的動(dòng)態(tài)鏈接庫。

具體地,動(dòng)態(tài)鏈接庫信息可包括DLL的路徑、DLL的CLSID(全局唯一標(biāo)識(shí)符)信息、DLL的哈希信息等中的一種或多種。

在另一個(gè)實(shí)施例中,預(yù)設(shè)策略可包括動(dòng)態(tài)鏈接庫的數(shù)字簽名信息、白名單和/或黑名單。步驟206包括:通過Hook函數(shù)讀取注冊(cè)表信息,獲取動(dòng)態(tài)鏈接庫信息,從動(dòng)態(tài)鏈接庫信息中篩選出具有數(shù)字簽名的動(dòng)態(tài)鏈接庫,再從具有數(shù)字簽名的動(dòng)態(tài)鏈接庫中按照白名單和/或黑名單篩選得到允許注入的動(dòng)態(tài)鏈接庫。

步驟208,加載獲取的動(dòng)態(tài)鏈接庫信息到當(dāng)前進(jìn)程。

具體地,獲取的動(dòng)態(tài)鏈接庫信息可包括允許注入的動(dòng)態(tài)鏈接庫,或者為空信息。若動(dòng)態(tài)鏈接庫信息為允許注入的動(dòng)態(tài)鏈接庫,則加載獲取的動(dòng)態(tài)鏈接庫到當(dāng)前進(jìn)程中。若動(dòng)態(tài)鏈接庫信息為空信息,則不加載任何動(dòng)態(tài)鏈接庫。

當(dāng)前進(jìn)程是指調(diào)用應(yīng)用程序編程接口的程序運(yùn)行時(shí)所啟動(dòng)的進(jìn)程。

上述防注入的方法,調(diào)用應(yīng)用程序編程接口時(shí),通過Hook函數(shù)讀取注冊(cè)表信息,并按照預(yù)設(shè)策略獲取動(dòng)態(tài)鏈接庫信息,加載動(dòng)態(tài)鏈接庫信息到當(dāng)前進(jìn)程中,通過預(yù)設(shè)策略篩選了動(dòng)態(tài)鏈接庫,而不是直接由應(yīng)用程序編程接口讀取注冊(cè)表信息獲取動(dòng)態(tài)鏈接庫進(jìn)行加載,不需人工識(shí)別,能防止出錯(cuò),且能加載應(yīng) 用程序編程接口,因篩選過動(dòng)態(tài)鏈接庫,調(diào)用應(yīng)用程序編程接口安全性高。

圖3為一個(gè)實(shí)施例中使用上述防注入的方法注入動(dòng)態(tài)鏈接庫的框架示意圖。如圖3所示,注入動(dòng)態(tài)鏈接庫的過程包括:API調(diào)用后,(1)API內(nèi)部讀取注冊(cè)表信息;(2)從Hook函數(shù)讀取DLL信息;(3)Hook函數(shù)讀取注冊(cè)表;(4)獲取注冊(cè)表返回的注冊(cè)表信息;(5)Hook函數(shù)根據(jù)返回的注冊(cè)表信息及預(yù)設(shè)策略返回DLL信息給API;(6)API加載獲取到的DLL到當(dāng)前進(jìn)程。

圖4為一個(gè)實(shí)施例中通過該Hook函數(shù)讀取注冊(cè)表信息,并根據(jù)預(yù)設(shè)策略獲取動(dòng)態(tài)鏈接庫信息的具體流程圖。如圖4所示,通過該Hook函數(shù)讀取注冊(cè)表信息,并根據(jù)預(yù)設(shè)策略獲取動(dòng)態(tài)鏈接庫信息步驟包括:

步驟402,通過該Hook函數(shù)讀取注冊(cè)表信息,判斷讀取的注冊(cè)表位置是否為預(yù)先記錄的與注入相關(guān)的注冊(cè)表位置,若是,則執(zhí)行步驟404,若否,執(zhí)行步驟410。

本實(shí)施例中,預(yù)先記錄動(dòng)態(tài)鏈接庫注入信息的注冊(cè)表位置。具體地,軟件開發(fā)者統(tǒng)計(jì)出系統(tǒng)中所有保存DLL注入信息的注冊(cè)表位置,并記錄。預(yù)先記錄的與注入相關(guān)的注冊(cè)表位置即為預(yù)先記錄的動(dòng)態(tài)鏈接庫注入信息的注冊(cè)表位置。

步驟404,根據(jù)該調(diào)用指令分析讀取到的動(dòng)態(tài)鏈接庫信息,然后執(zhí)行步驟406。

步驟406,根據(jù)預(yù)設(shè)策略從讀取到的動(dòng)態(tài)鏈接庫信息中剔除不需要注入的動(dòng)態(tài)鏈接庫,然后執(zhí)行步驟408。

步驟408,獲取剩余的動(dòng)態(tài)鏈接庫。

具體地,預(yù)設(shè)策略可包括數(shù)字簽名、黑名單、白名單其中一種或兩種以上組合。

本實(shí)施例中,加載獲取的動(dòng)態(tài)鏈接庫信息到當(dāng)前進(jìn)程的步驟包括:加載該剩余的動(dòng)態(tài)鏈接庫到當(dāng)前進(jìn)程。

步驟410,根據(jù)調(diào)用指令直接獲取動(dòng)態(tài)鏈接庫信息。

具體地,判斷出讀取的注冊(cè)表位置不為預(yù)先記錄的與注入相關(guān)的注冊(cè)表位 置,則根據(jù)調(diào)用指令直接獲取動(dòng)態(tài)鏈接庫信息,后續(xù)根據(jù)獲取的動(dòng)態(tài)鏈接庫信息直接進(jìn)行加載。

上述通過Hook函數(shù)判斷讀取的注冊(cè)表位置是否為與注入相關(guān)的位置,若是,則分析讀取到的DLL信息,根據(jù)預(yù)設(shè)策略篩選能加載的DLL,如此加載的DLL均為信任的DLL,其安全性高,通過Hook函數(shù)進(jìn)行檢測(cè)判斷,方便且準(zhǔn)確性高,能防止出錯(cuò)。

圖5為一個(gè)實(shí)施例中防注入的裝置的結(jié)構(gòu)框圖。圖5的防注入的裝置的內(nèi)部模塊為對(duì)應(yīng)于圖2中防注入的方法所建立的虛擬功能模塊,但不限于此功能模塊劃分。如圖5所示,一種防注入的裝置,包括調(diào)用模塊510、進(jìn)入模塊520、獲取模塊530和加載模塊540。其中:

調(diào)用模塊510用于獲取應(yīng)用程序編程接口的調(diào)用指令。

具體地,程序調(diào)用應(yīng)用程序編程接口時(shí),產(chǎn)生調(diào)用指令。

進(jìn)入模塊520用于根據(jù)該調(diào)用指令在應(yīng)用程序編程接口內(nèi)部讀取注冊(cè)表信息時(shí),進(jìn)入Hook函數(shù)。

具體地,程序調(diào)用API時(shí),API內(nèi)部會(huì)讀取注冊(cè)表信息。讀取注冊(cè)表信息是讀取各個(gè)注冊(cè)表位置上的信息。

獲取模塊530用于通過該Hook函數(shù)讀取注冊(cè)表信息,并根據(jù)預(yù)設(shè)策略獲取動(dòng)態(tài)鏈接庫信息。

具體地,Hook函數(shù)讀取注冊(cè)表信息后,根據(jù)預(yù)設(shè)策略從注冊(cè)表信息中獲取動(dòng)態(tài)鏈接庫信息。預(yù)設(shè)策略可根據(jù)需要設(shè)定。

在一個(gè)實(shí)施例中,預(yù)設(shè)策略可包括白名單和/或黑名單。其中,白名單用于記錄允許注入的動(dòng)態(tài)鏈接庫的屬性信息,該黑名單用于記錄不允許注入的動(dòng)態(tài)鏈接庫的屬性信息。屬性信息可包括DLL的路徑、DLL的CLSID(全局唯一標(biāo)識(shí)符)信息、DLL的哈希信息等中的一種或多種。DLL的路徑是指動(dòng)態(tài)鏈接庫所處的位置,例如D:\program files/abc。DLL的CLSID是指windows系統(tǒng)對(duì)于不同的應(yīng)用程序、文件類型、對(duì)象等以及各種系統(tǒng)組件分配的一個(gè)唯一表示它的ID代碼,用于對(duì)其身份的標(biāo)示和其他對(duì)象進(jìn)行區(qū)分。

獲取模塊530還用于通過該Hook函數(shù)讀取注冊(cè)表信息,并根據(jù)白名單和/或黑名單篩選得到動(dòng)態(tài)鏈接庫。具體地,根據(jù)白名單篩選出允許加載的動(dòng)態(tài)鏈接庫,根據(jù)黑名單刪除不允許加載的動(dòng)態(tài)鏈接庫。

在另一個(gè)實(shí)施例中,預(yù)設(shè)策略為不允許任何動(dòng)態(tài)鏈接庫注入。獲取模塊530還用于通過該Hook函數(shù)讀取注冊(cè)表信息,并根據(jù)預(yù)設(shè)策略獲取空信息給應(yīng)用程序編程接口。

具體地,當(dāng)預(yù)設(shè)策略為不允許任何動(dòng)態(tài)鏈接庫注入時(shí),Hook函數(shù)返回空信息給API,這樣就不會(huì)有任何動(dòng)態(tài)鏈接庫被加載。

在另一個(gè)實(shí)施例中,預(yù)設(shè)策略可包括動(dòng)態(tài)鏈接庫的數(shù)字簽名信息。獲取模塊530還用于通過Hook函數(shù)讀取注冊(cè)表信息,獲取動(dòng)態(tài)鏈接庫信息,從動(dòng)態(tài)鏈接庫信息中篩選出具有數(shù)字簽名的動(dòng)態(tài)鏈接庫作為允許注入的動(dòng)態(tài)鏈接庫。

具體地,動(dòng)態(tài)鏈接庫信息可包括DLL的路徑、DLL的CLSID(全局唯一標(biāo)識(shí)符)信息、DLL的哈希信息等中的一種或多種。

在另一個(gè)實(shí)施例中,預(yù)設(shè)策略可包括動(dòng)態(tài)鏈接庫的數(shù)字簽名信息、白名單和/或黑名單。獲取模塊530還用于通過Hook函數(shù)讀取注冊(cè)表信息,獲取動(dòng)態(tài)鏈接庫信息,從動(dòng)態(tài)鏈接庫信息中篩選出具有數(shù)字簽名的動(dòng)態(tài)鏈接庫,再從具有數(shù)字簽名的動(dòng)態(tài)鏈接庫中按照白名單和/或黑名單篩選得到允許注入的動(dòng)態(tài)鏈接庫。

加載模塊540用于加載獲取的動(dòng)態(tài)鏈接庫信息到當(dāng)前進(jìn)程。

具體地,獲取的動(dòng)態(tài)鏈接庫信息可包括允許注入的動(dòng)態(tài)鏈接庫,或者為空信息。若動(dòng)態(tài)鏈接庫信息為允許注入的動(dòng)態(tài)鏈接庫,則加載獲取的動(dòng)態(tài)鏈接庫到當(dāng)前進(jìn)程中。若動(dòng)態(tài)鏈接庫信息為空信息,則不加載任何動(dòng)態(tài)鏈接庫。

當(dāng)前進(jìn)程是指調(diào)用應(yīng)用程序編程接口的程序運(yùn)行時(shí)所啟動(dòng)的進(jìn)程。

上述防注入的裝置,調(diào)用應(yīng)用程序編程接口時(shí),通過Hook函數(shù)讀取注冊(cè)表信息,并按照預(yù)設(shè)策略獲取動(dòng)態(tài)鏈接庫信息,加載動(dòng)態(tài)鏈接庫信息到當(dāng)前進(jìn)程中,通過預(yù)設(shè)策略篩選了動(dòng)態(tài)鏈接庫,而不是直接由應(yīng)用程序編程接口讀取注冊(cè)表信息獲取動(dòng)態(tài)鏈接庫進(jìn)行加載,不需人工識(shí)別,能防止出錯(cuò),且能加載應(yīng)用程序編程接口,因篩選過動(dòng)態(tài)鏈接庫,調(diào)用應(yīng)用程序編程接口安全性高。

在一個(gè)實(shí)施例中,該獲取模塊530還用于通過該Hook函數(shù)讀取注冊(cè)表信息,判斷讀取的注冊(cè)表位置是否為預(yù)先記錄的與注入相關(guān)的注冊(cè)表位置,若判斷出讀取的注冊(cè)表位置為預(yù)先記錄的與注入相關(guān)的注冊(cè)表位置,則根據(jù)該調(diào)用指令分析讀取到的動(dòng)態(tài)鏈接庫信息,根據(jù)預(yù)設(shè)策略從讀取到的動(dòng)態(tài)鏈接庫信息中剔除不需要注入的動(dòng)態(tài)鏈接庫,并獲取剩余的動(dòng)態(tài)鏈接庫;以及還用于若判斷出讀取的注冊(cè)表位置不為預(yù)先記錄的與注入相關(guān)的注冊(cè)表位置,則根據(jù)調(diào)用指令直接獲取動(dòng)態(tài)鏈接庫信息。

該加載模塊540還用于加載該剩余的動(dòng)態(tài)鏈接庫到當(dāng)前進(jìn)程。

上述通過Hook函數(shù)判斷讀取的注冊(cè)表位置是否為與注入相關(guān)的位置,若是,則分析讀取到的DLL信息,根據(jù)預(yù)設(shè)策略篩選能加載的DLL,如此加載的DLL均為信任的DLL,其安全性高,通過Hook函數(shù)進(jìn)行檢測(cè)判斷,方便且準(zhǔn)確性高,能防止出錯(cuò)。

圖6為另一個(gè)實(shí)施例中防注入的裝置的結(jié)構(gòu)框圖。如圖6所示,一種防注入的裝置,除了包括調(diào)用模塊510、進(jìn)入模塊520、獲取模塊530和加載模塊540,還包括記錄模塊550。其中:

記錄模塊550用于預(yù)先記錄動(dòng)態(tài)鏈接庫注入信息的注冊(cè)表位置。通過記錄動(dòng)態(tài)鏈接庫注入信息的注冊(cè)表位置方便進(jìn)行比較判斷獲取的注冊(cè)表位置是否為動(dòng)態(tài)鏈接庫注入信息的注冊(cè)表位置。

為了更加清楚的說明防注入的方法和裝置,以電腦管家應(yīng)用程序?yàn)槔R蚍€(wěn)定性是軟件的基礎(chǔ),軟件在運(yùn)行過程中需要加載系統(tǒng)的模塊、軟件自身模塊以及第三方注入的模塊,一般來說,軟件自身模塊經(jīng)過軟件開發(fā)組的測(cè)試是相對(duì)穩(wěn)定的,而對(duì)于第三方注入的模塊,由于種類眾多,開發(fā)力量懸殊,測(cè)試不充分等原因,注入到軟件后導(dǎo)致軟件工作不正常、崩潰等,對(duì)軟件的打擊是致命的。注入的模塊即指動(dòng)態(tài)鏈接庫(DLL)。如圖7所示,在未采用防注入的方法之前,電腦管家應(yīng)用程序啟動(dòng)后對(duì)應(yīng)的進(jìn)程被注入了相關(guān)的軟件模塊,例如, DLL的名稱為TortoiseSVN32.dll,描述為TortoiseSVN shell extension client,公司名稱為http://tortoisesvn.net,路徑為D:\TortoiseSVN\bin\TortoiseSVN32.dll;DLL的名稱為TortoiseStub32.dll,描述為TortoiseSVN shell extension client,公司名稱為http://tortoisesvn.net,路徑為D:\TortoiseSVN\bin\TortoiseStub32.dll;DLL的名稱為libsvn_tsvn32.dll,描述為subversion library dll built for TortoiseSVN shell extension client,公司名稱為http://subversion.apache.org/,路徑為D:\TortoiseSVN\bin\libsvn_tsvn32.dll等,電腦管家自身所需的軟件模塊可包括DLL的名稱為GdiPlus.dll,描述為Microsoft GDI+,公司名稱為Microsoft Corporation,路徑為C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64;DLL的名稱為comctl32.dll,描述為用戶體驗(yàn)控件庫,公司名稱為Microsoft Corporation,路徑為C:\Windows\winsxs\x86_microsoft.windows.commom-controls;DLL的名稱為msvcr80.dll,描述為Microsoft C Runtime Library,公司名稱為Microsoft Corporation,路徑為C:\Windows\winsxs\x86_microsoft.vc80.crt_lfc8b3b9ale8e3等。一旦這些模塊內(nèi)部發(fā)生了異常會(huì)導(dǎo)致整個(gè)管家進(jìn)程也異常退出,從某個(gè)角度來看,攻擊者也可以通過注入的DLL,攻擊電腦管家。

通過防注入的方法,電腦管家調(diào)用API時(shí),API內(nèi)部讀取注冊(cè)表,進(jìn)入Hook函數(shù),Hook函數(shù)讀取注冊(cè)表信息,篩選剔除第三方的DLL,得到剩余的DLL信息,將剩余的DLL信息返回給API,API加載剩余的DLL到當(dāng)前電腦管家進(jìn)程。如圖8所示,電腦管家的進(jìn)程不再注入第三方的DLL模塊,只加載系統(tǒng)自身的一些DLL,例如DLL的名稱為GdiPlus.dll,描述為Microsoft GDI+,公司名稱為Microsoft Corporation;DLL的名稱為comctl32.dll,描述為用戶體驗(yàn)控件庫,公司名稱為Microsoft Corporation;DLL的名稱為msvcr80.dll,描述為Microsoft C Runtime Library,公司名稱為Microsoft Corporation等。如此不但節(jié)省了內(nèi)存,還保證了電腦管家進(jìn)程的穩(wěn)定性。

本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一非易失性計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施 例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)等。

以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
福贡县| 大连市| 仙游县| 托克托县| 阳山县| 井陉县| 邻水| 大厂| 石渠县| 东乌珠穆沁旗| 合山市| 化州市| 西和县| 廊坊市| 东阿县| 琼海市| 鹤壁市| 巴林右旗| 涞水县| 屏东县| 尤溪县| 盐津县| 九江市| 淮安市| 丰县| 舒兰市| 云阳县| 建平县| 夏津县| 苍溪县| 独山县| 苗栗市| 金湖县| 高尔夫| 吴忠市| 舟曲县| 玉环县| 英德市| 五华县| 武隆县| 会理县|