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

應(yīng)用程序的防護(hù)方法及裝置與流程

文檔序號:12467702閱讀:422來源:國知局
應(yīng)用程序的防護(hù)方法及裝置與流程

本發(fā)明涉及安全防護(hù)技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用程序的防護(hù)方法及裝置。



背景技術(shù):

在Windows操作系統(tǒng)中,許多應(yīng)用程序并不是一個完整的可執(zhí)行文件,它們被分割成一些相對獨(dú)立的動態(tài)鏈接庫,即DLL(Dynamic Link Library)文件,放置于系統(tǒng)中。當(dāng)執(zhí)行某一個應(yīng)用程序時,相應(yīng)的DLL文件就會被調(diào)用。一個應(yīng)用程序可有多個DLL文件,一個DLL文件也可能被幾個應(yīng)用程序所共用,這樣的DLL文件被稱為共享DLL文件。

在一個應(yīng)用程序的自保護(hù)生效前,惡意軟件可以通過DLL注入文件的方式,把一個DLL文件注入到應(yīng)用程序的進(jìn)程中,這樣惡意軟件就可以在應(yīng)用程序的進(jìn)程空間內(nèi)為所欲為,破應(yīng)用程序的功能,比如結(jié)束應(yīng)用程序的進(jìn)程。



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

有鑒于此,本發(fā)明實(shí)施例提供一種應(yīng)用程序的防護(hù)方法及裝置,能夠有效避免應(yīng)用程序被惡意DLL文件所破壞。

第一方面,本發(fā)明實(shí)施例提供一種應(yīng)用程序的防護(hù)方法,包括:

對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視;

判斷調(diào)用所述加載函數(shù)的進(jìn)程是否是要防護(hù)的應(yīng)用程序的進(jìn)程;

若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則判斷所述進(jìn)程當(dāng)前要加載的DLL文件是否是惡意的DLL文件;

若所述要加載的DLL文件是惡意的DLL文件,則返回拒絕加載消息。

結(jié)合第一方面,在第一方面的第一種可實(shí)施方式中,所述要防護(hù)的應(yīng)用程序?yàn)榘踩雷o(hù)類應(yīng)用程序;所述對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視,包括:

在windows操作系統(tǒng)開機(jī)過程中,通過鉤子函數(shù)對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視;其中,所述鉤子函數(shù)包含在所述安全防護(hù)類應(yīng)用程序的防御驅(qū)動中。

結(jié)合第一方面的第一種可實(shí)施方式中,在第一方面的第二種可實(shí)施方式中,所述判斷調(diào)用所述加載函數(shù)的進(jìn)程是否是要防護(hù)的應(yīng)用程序的進(jìn)程,包括:通過所述鉤子函數(shù)獲取所述進(jìn)程的路徑信息,根據(jù)所述進(jìn)程的路徑信息,判斷所述進(jìn)程是否是要防護(hù)的應(yīng)用程序目錄下的進(jìn)程。

結(jié)合第一方面的第二種可實(shí)施方式中,在第一方面的第三種可實(shí)施方式中,所述若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則判斷所述進(jìn)程當(dāng)前要加載的DLL文件是否是惡意的DLL文件,包括:

若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則通過所述鉤子函數(shù)獲取所述進(jìn)程當(dāng)前要加載的DLL文件的路徑信息;

所述鉤子函數(shù)根據(jù)獲取的所述DLL文件的路徑信息,在攔截規(guī)則庫中進(jìn)行匹配查詢,判斷所述要加載的DLL文件是否是惡意的DLL文件;其中,所述攔截規(guī)則庫中保存有惡意的DLL文件的路徑信息。

結(jié)合第一方面的第三種可實(shí)施方式中,在第一方面的第四種可實(shí)施方式中,所述調(diào)用所述加載函數(shù),通過所述加載函數(shù)完成對所述DLL文件的加載,包括:

所述鉤子函數(shù)根據(jù)預(yù)先保存的所述加載函數(shù)的原始入口地址,調(diào)用所述加載函數(shù),通過所述加載函數(shù)完成對所述DLL文件的加載。

第二方面,本發(fā)明實(shí)施例提供一種應(yīng)用程序的防護(hù)裝置,包括:監(jiān)視模塊,用于對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視;第一判斷模塊,用于判斷調(diào)用所述加載函數(shù)的進(jìn)程是否是要防護(hù)的應(yīng)用程序的進(jìn)程;第二判斷模塊,用于若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則判斷所述進(jìn)程當(dāng)前要加載的DLL文件是否是惡意的DLL文件;拒絕加載模塊,用于若所述要加載的DLL文件是惡意的DLL文件,則返回拒絕加載消息。

結(jié)合第二方面,在第二方面的第一種可實(shí)施方式中,所述要防護(hù)的應(yīng)用程序?yàn)榘踩雷o(hù)類應(yīng)用程序;所述安全防護(hù)類應(yīng)用程序包括防御驅(qū)動模塊,所述監(jiān)視模塊設(shè)于所述安全防護(hù)類應(yīng)用程序的防御驅(qū)動模塊中;所述監(jiān)視模塊,用于在windows操作系統(tǒng)開機(jī)過程中,對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視。

結(jié)合第二方面的第一種可實(shí)施方式,在第二方面的第二種可實(shí)施方式中,所述第一判斷模塊,包括:第一獲取子模塊,用于獲取所述進(jìn)程的路徑信息;第一判斷子模塊,用于根據(jù)所述進(jìn)程的路徑信息,判斷所述進(jìn)程是否是要防護(hù)的應(yīng)用程序目錄下的進(jìn)程;第一通知子模塊,用于若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則通知所述第二判斷模塊。

結(jié)合第二方面的第二種可實(shí)施方式,在第二方面的第三種可實(shí)施方式中,所述第二判斷模塊,包括:第二獲取子模塊,用于若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則獲取所述進(jìn)程當(dāng)前要加載的DLL文件的路徑信息;第二判斷子模塊,用于根據(jù)所述要加載的DLL文件的路徑信息,在攔截規(guī)則庫中進(jìn)行匹配查詢,判斷所述要加載的DLL文件是否是惡意的DLL文件;其中,所述攔截規(guī)則庫中保存有惡意的DLL文件的路徑信息;第二通知子模塊,用于若所述要加載的DLL文件是惡意的DLL文件,則通知所述拒絕加載模塊。

本發(fā)明實(shí)施例提供的應(yīng)用程序的防護(hù)方法及裝置,通過對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視,判斷調(diào)用所述加載函數(shù)的進(jìn)程是否是要防護(hù)的應(yīng)用程序的進(jìn)程,若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則進(jìn)一步判斷當(dāng)前要加載的DLL文件是否是惡意的DLL文件,若是,則返回拒絕加載消息,這樣能夠避免惡意的DLL文件注入到要防護(hù)的應(yīng)用程序的進(jìn)程中,從而能夠使要防護(hù)的應(yīng)用程序免于被惡意的DLL文件所破壞。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付 出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。

圖1為本發(fā)明應(yīng)用程序的防護(hù)方法實(shí)施例一的流程示意圖;

圖2為本發(fā)明應(yīng)用程序的防護(hù)方法實(shí)施例二的流程示意圖;

圖3為本發(fā)明應(yīng)用程序的防護(hù)裝置實(shí)施例一的結(jié)構(gòu)示意圖;

圖4為本發(fā)明應(yīng)用程序的防護(hù)裝置實(shí)施例二的結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面結(jié)合附圖對本發(fā)明實(shí)施例一種應(yīng)用程序的防護(hù)方法及裝置進(jìn)行詳細(xì)描述。

應(yīng)當(dāng)明確,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明防護(hù)的范圍。

圖1為本發(fā)明應(yīng)用程序的防護(hù)方法實(shí)施例一的流程示意圖。參看圖1,本發(fā)明應(yīng)用程序的防護(hù)方法實(shí)施例,包括如下步驟:

S101、對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視。

本實(shí)施例中,所述要防護(hù)的應(yīng)用程可以是金山毒霸、金山衛(wèi)士等安全防護(hù)類應(yīng)用程序,也可以是非安全防護(hù)類的普通應(yīng)用程序,如即時通訊類應(yīng)用程序、游戲類應(yīng)用程序等等。

安全防護(hù)類應(yīng)用程序通常具有自我防護(hù)功能,然而,在安全防護(hù)類應(yīng)用程序的自我防護(hù)功能生效之前,一些惡意的DLL文件,如病毒、蠕蟲或特洛伊馬程序等,會注入到安全防護(hù)類應(yīng)用程序的進(jìn)程中,通過破壞安全防護(hù)類應(yīng)用程序的進(jìn)程來實(shí)施控制,從而破壞安全防護(hù)類應(yīng)用程序的防御功能。將一個DLL文件的注入某個進(jìn)程,是指將一個DLL文件放進(jìn)到該某個進(jìn)程的地址空間里,使所述DLL文件稱為該某個進(jìn)程的一部分。

windows操作系統(tǒng)中,DLL文件的加載函數(shù)為NtCreateSection函數(shù), windows操作系統(tǒng)內(nèi)核中通過調(diào)用NtCreateSection函數(shù)來加載DLL文件。本實(shí)施例中,通過對NtCreateSection函數(shù)的調(diào)用進(jìn)行監(jiān)視,能夠捕獲到惡意的DLL文件,從而便于阻止其注入到要防護(hù)的應(yīng)用程序的進(jìn)程中。

S102、判斷調(diào)用所述加載函數(shù)的進(jìn)程是否是要防護(hù)的應(yīng)用程序的進(jìn)程。

本實(shí)施例中,可通過獲取所述進(jìn)程的路徑信息,根據(jù)所述進(jìn)程的路徑信息,判斷所述進(jìn)程是否是要防護(hù)的應(yīng)用程序的進(jìn)程。

根據(jù)所述判斷,若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則執(zhí)行步驟S103,若所述進(jìn)程不是要防護(hù)的應(yīng)用程序的進(jìn)程,則執(zhí)行步驟S105。

S103、判斷所述進(jìn)程當(dāng)前要加載的DLL文件是否是惡意的DLL文件。

根據(jù)步驟S102的判斷,若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則進(jìn)一步判斷所述進(jìn)程當(dāng)前要加載的DLL文件是否是惡意的DLL文件。

可預(yù)先將惡意的DLL文件建立黑名單,若所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件在黑名單當(dāng)中,即可判斷所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件是惡意的DLL文件。

也可預(yù)先將要保護(hù)的應(yīng)用程序正常運(yùn)行所需要的DLL文件建立白名單。若所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件不在白名單當(dāng)中,即可判斷所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件是惡意的DLL文件。

根據(jù)所述判斷,若所述要加載的DLL文件是惡意的DLL文件,則執(zhí)行步驟S104,若所述要加載的DLL文件不是惡意的DLL文件,則執(zhí)行步驟S105。

S104、返回拒絕加載消息。

根據(jù)步驟S103的判斷,若所述要加載的DLL文件是惡意的DLL文件,則可向windows操作系統(tǒng)或向要保護(hù)的應(yīng)用程序的進(jìn)程返回拒絕加載消息,從而阻止將惡意的DLL文件注入到要保護(hù)的應(yīng)用程序的進(jìn)程中。

S105、調(diào)用所述加載函數(shù),通過所述加載函數(shù)完成對所述DLL文件的加載。

本發(fā)明實(shí)施例提供的應(yīng)用程序的防護(hù)方法,通過對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視,判斷調(diào)用所述加載函數(shù)的進(jìn)程是否是要防護(hù)的應(yīng)用程序的進(jìn)程,若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則進(jìn)一步判斷當(dāng)前要加載的DLL文件是否是惡意的DLL文件,若是,則返回拒絕加載消息,這樣能夠避免惡意的DLL文件注入到要防護(hù)的應(yīng)用程序的進(jìn)程中,從而能夠使要防護(hù)的應(yīng)用程序免于被惡意的DLL文件所破壞。

圖2為本發(fā)明應(yīng)用程序的防護(hù)方法實(shí)施例二的流程示意圖。本實(shí)施例適用于金山毒霸或金山衛(wèi)士等安全防護(hù)類應(yīng)用程序的自我防護(hù)。參看圖2,本發(fā)明應(yīng)用程序的防護(hù)方法實(shí)施例,包括如下步驟:

S201、在windows操作系統(tǒng)開機(jī)過程中,通過鉤子函數(shù)對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視;其中,所述鉤子函數(shù)建立在安全防護(hù)類應(yīng)用程序的防御驅(qū)動中。

安全防護(hù)類應(yīng)用程序的防御驅(qū)動和防御進(jìn)程在windows操作系統(tǒng)開機(jī)后開始運(yùn)行。其中,防御驅(qū)動運(yùn)行在系統(tǒng)的內(nèi)核層,防御進(jìn)程運(yùn)行在應(yīng)用層,防御驅(qū)動的運(yùn)行先于防御進(jìn)程的運(yùn)行。

在本步驟之前,可由編程人員在所述防御驅(qū)動中建立鉤子(HOOK)函數(shù)。鉤子函數(shù)實(shí)際上是一個處理消息的程序段,通過系統(tǒng)調(diào)用,把它掛入系統(tǒng)。每當(dāng)特定的消息發(fā)出,在沒有到達(dá)目的窗口前,鉤子函數(shù)就先捕獲該消息,亦即鉤子函數(shù)先得到控制權(quán)。這時鉤子函數(shù)即可以加工處理該消息,也可以不作處理而繼續(xù)傳遞該消息,還可以強(qiáng)制結(jié)束消息的傳遞。

本實(shí)施例中,將NtCreateSection函數(shù)的原始入口地址修改為本實(shí)施例中的鉤子函數(shù)的入口地址。安全防護(hù)類應(yīng)用程序的進(jìn)程在調(diào)用NtCreateSection函數(shù)時,由于NtCreateSection函數(shù)的原始入口地址已被修改為本實(shí)施例的鉤子函數(shù)的入口地址,通過對NtCreateSection函數(shù)的調(diào)用,即可跳至本實(shí)施例的鉤子函數(shù)的執(zhí)行,由此實(shí)現(xiàn)對NtCreateSection函數(shù)的監(jiān)視。

為了實(shí)現(xiàn)對NtCreateSection函數(shù)的回調(diào),在將NtCreateSection函數(shù)的原始入口地址修改為本實(shí)施例中的鉤子函數(shù)的入口地址之前,需要對NtCreateSection函數(shù)的原始入口地址進(jìn)行保存。

本實(shí)施例中,應(yīng)用程序的進(jìn)程對NtCreateSection函數(shù)的調(diào)用,可通過windows操作系統(tǒng)對NtCreateSection函數(shù)的調(diào)用來實(shí)現(xiàn)。具體來講,可以是應(yīng)用程序的進(jìn)程向windows操作系統(tǒng)發(fā)出調(diào)用NtCreateSection函數(shù)的消息,windows操作系統(tǒng)根據(jù)該消息調(diào)用NtCreateSection函數(shù)。

S202、通過所述鉤子函數(shù)獲取調(diào)用NtCreateSection函數(shù)的進(jìn)程的路徑信息。

S203、判斷所述進(jìn)程是否是要防護(hù)的安全防護(hù)類應(yīng)用程序目錄下的進(jìn)程。

本實(shí)施例中,根據(jù)步驟S202獲取的所述進(jìn)程的路徑信息,判斷所述進(jìn)程是否是要防護(hù)的安全防護(hù)類應(yīng)用程序目錄下的進(jìn)程,若所述進(jìn)程是要所述安全防護(hù)類應(yīng)用程序的進(jìn)程,則執(zhí)行步驟S204;若所述進(jìn)程不是所述安全防護(hù)類應(yīng)用程序的進(jìn)程,則執(zhí)行步驟S207。

S204、通過所述鉤子函數(shù)獲取所述進(jìn)程當(dāng)前要加載的DLL文件的路徑信息。

S205、判斷所述要加載的DLL文件是否是惡意的DLL文件。

本實(shí)施例中,所述鉤子函數(shù)根據(jù)獲取的所述DLL文件的路徑信息,在攔截規(guī)則庫中進(jìn)行匹配查詢,判斷所述要加載的DLL文件是否是惡意的DLL文件。其中,所述攔截規(guī)則庫中保存有惡意的DLL文件的路徑信息;經(jīng)過所述判斷,若所述要加載的DLL文件是惡意的DLL文件,則執(zhí)行步驟S206;若所述要加載的DLL文件不是惡意的DLL文件,則執(zhí)行步驟S207。

本實(shí)施例中,可預(yù)先將惡意的DLL文件建立黑名單,若所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件在黑名單當(dāng)中,即可判斷所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件是惡意的DLL文件。

作為一種可選方式,也可預(yù)先將要保護(hù)的應(yīng)用程序正常運(yùn)行所需要的DLL文件建立白名單。若所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件不在白名單當(dāng)中,即可判斷所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件是惡意的DLL文件。

S206、返回拒絕加載消息。

本實(shí)施例中,所述鉤子函數(shù)可向windows操作系統(tǒng)或向要保護(hù)的應(yīng)用程序的進(jìn)程返回拒絕加載消息,從而阻止將惡意的DLL文件注入到要保護(hù)的應(yīng)用程序的進(jìn)程中。

S207、調(diào)用所述加載函數(shù),通過所述加載函數(shù)完成對所述DLL文件的加載。

本實(shí)施例中,所述鉤子函數(shù)根據(jù)預(yù)先保存的NtCreateSection函數(shù)的原始入口地址,調(diào)用NtCreateSection函數(shù),通過NtCreateSection函數(shù)完成對待加載的DLL文件的加載。

本發(fā)明實(shí)施例提供的應(yīng)用程序的防護(hù)方法,通過建立在安全防護(hù)類應(yīng)用程序的防御驅(qū)動中的鉤子函數(shù),對NtCreateSection函數(shù)的調(diào)用進(jìn)行監(jiān)視,能夠在windows操作系統(tǒng)的內(nèi)核層對NtCreateSection函數(shù)的調(diào)用進(jìn)行監(jiān)視,能夠在安全防護(hù)類應(yīng)用程序的自防護(hù)生效前,快速準(zhǔn)確地捕獲到惡意的DLL文件,阻止惡意的DLL文件注入到安全防護(hù)類應(yīng)用程序的進(jìn)程中,從而能夠使安全防護(hù)類應(yīng)用程序免于被惡意的DLL文件所破壞。

本實(shí)施例主要是以安全防護(hù)類應(yīng)用程序的防護(hù)為例進(jìn)行說明的,對于非安全防護(hù)類應(yīng)用程序的防護(hù)方法與本實(shí)施例相似,不同之處在于在非安全防護(hù)類應(yīng)用程序的防護(hù)方法中,主要是在windows操作系統(tǒng)開機(jī)完成后,通過鉤子函數(shù)對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視。

圖3為本發(fā)明應(yīng)用程序的防護(hù)裝置實(shí)施例一的結(jié)構(gòu)示意圖。

參看圖3,本發(fā)明應(yīng)用程序的防護(hù)裝置實(shí)施例,包括:監(jiān)視模塊31、第一判斷模塊32、第二判斷模塊33、拒絕加載模塊34和調(diào)用模塊35;其中,

監(jiān)視模塊31,用于對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視。

本實(shí)施例中,所述要防護(hù)的應(yīng)用程可以是金山毒霸、金山衛(wèi)士等安全防護(hù)類應(yīng)用程序,也可以是非安全防護(hù)類的普通應(yīng)用程序,如即時通訊類應(yīng)用程序、游戲類應(yīng)用程序等等。

安全防護(hù)類應(yīng)用程序通常具有自我防護(hù)功能,然而,在安全防護(hù)類應(yīng)用程序的自我防護(hù)功能生效之前,一些惡意的DLL文件,如病毒、蠕蟲或特洛伊馬程序等,會注入到安全防護(hù)類應(yīng)用程序的進(jìn)程中,通過破壞安全防護(hù)類應(yīng)用程序的進(jìn)程來實(shí)施控制,從而破壞安全防護(hù)類應(yīng)用程序的防御功能。將一個DLL文件的注入某個進(jìn)程,是指將一個DLL文件放進(jìn)到該某個進(jìn)程的地址空間里,使所述DLL文件稱為該某個進(jìn)程的一部分。

windows操作系統(tǒng)中,DLL文件的加載函數(shù)為NtCreateSection函數(shù),windows操作系統(tǒng)內(nèi)核中通過調(diào)用NtCreateSection函數(shù)來加載DLL文件。本實(shí)施例中,通過對NtCreateSection函數(shù)的調(diào)用進(jìn)行監(jiān)視,能夠捕獲到惡意的DLL文件,從而便于阻止其注入到要防護(hù)的應(yīng)用程序的進(jìn)程中。

第一判斷模塊32,用于判斷調(diào)用所述加載函數(shù)的進(jìn)程是否是要防護(hù)的應(yīng)用程序的進(jìn)程。

本實(shí)施例中,可通過獲取所述進(jìn)程的路徑信息,根據(jù)所述進(jìn)程的路徑信息,判斷所述進(jìn)程是否是要防護(hù)的應(yīng)用程序的進(jìn)程。

根據(jù)所述判斷,若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則通知第二判斷模塊33,若所述進(jìn)程不是要防護(hù)的應(yīng)用程序的進(jìn)程,則通知調(diào)用模塊35。

第二判斷模塊33,用于若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則判斷所述進(jìn)程當(dāng)前要加載的DLL文件是否是惡意的DLL文件。

可預(yù)先將惡意的DLL文件建立黑名單,若所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件在黑名單當(dāng)中,即可判斷所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件是惡意的DLL文件。

也可預(yù)先將要保護(hù)的應(yīng)用程序正常運(yùn)行所需要的DLL文件建立白名單。若 所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件不在白名單當(dāng)中,即可判斷所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件是惡意的DLL文件。

根據(jù)所述判斷,若所述要加載的DLL文件是惡意的DLL文件,則通知拒絕加載模塊34,若所述要加載的DLL文件不是惡意的DLL文件,則通知調(diào)用模塊35。

拒絕加載模塊34,用于若所述要加載的DLL文件是惡意的DLL文件,則返回拒絕加載消息。

本實(shí)施例中,若所述要加載的DLL文件是惡意的DLL文件,則可向windows操作系統(tǒng)或向要保護(hù)的應(yīng)用程序的進(jìn)程返回拒絕加載消息,從而阻止將惡意的DLL文件注入到要保護(hù)的應(yīng)用程序的進(jìn)程中。

調(diào)用模塊35,用于若所述進(jìn)程不是要防護(hù)的應(yīng)用程序的進(jìn)程,或者若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,但所述要加載的DLL文件不是惡意的DLL文件,則調(diào)用加載函數(shù),通過所述加載函數(shù)完成對所述DLL文件的加載。

本發(fā)明實(shí)施例提供的應(yīng)用程序的防護(hù)裝置,通過對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視,判斷調(diào)用所述加載函數(shù)的進(jìn)程是否是要防護(hù)的應(yīng)用程序的進(jìn)程,若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則進(jìn)一步判斷當(dāng)前要加載的DLL文件是否是惡意的DLL文件,若是,則返回拒絕加載消息,這樣能夠避免惡意的DLL文件注入到要防護(hù)的應(yīng)用程序的進(jìn)程中,從而能夠使要防護(hù)的應(yīng)用程序免于被惡意的DLL文件所破壞。

本實(shí)施例的裝置,可以用于執(zhí)行圖1所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。

圖4為本發(fā)明應(yīng)用程序的防護(hù)裝置實(shí)施例二的結(jié)構(gòu)示意圖。本實(shí)施例中,所述要防護(hù)的應(yīng)用程序?yàn)榘踩雷o(hù)類應(yīng)用程序;所述安全防護(hù)類應(yīng)用程序包括防御驅(qū)動模塊,所述監(jiān)視模塊31設(shè)于所述安全防護(hù)類應(yīng)用程序的防御驅(qū)動模塊中;所述監(jiān)視模塊31,用于在windows操作系統(tǒng)開機(jī)過程中,通過鉤子函數(shù)對 DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視;其中,所述鉤子函數(shù)建立在安全防護(hù)類應(yīng)用程序的防御驅(qū)動中。

安全防護(hù)類應(yīng)用程序的防御驅(qū)動和防御進(jìn)程在windows操作系統(tǒng)開機(jī)后開始運(yùn)行。其中,防御驅(qū)動運(yùn)行在系統(tǒng)的內(nèi)核層,防御進(jìn)程運(yùn)行在應(yīng)用層,防御驅(qū)動的運(yùn)行先于防御進(jìn)程的運(yùn)行。

本實(shí)施例中,可由編程人員在所述防御驅(qū)動中建立鉤子(HOOK)函數(shù)。鉤子函數(shù)實(shí)際上是一個處理消息的程序段,通過系統(tǒng)調(diào)用,把它掛入系統(tǒng)。每當(dāng)特定的消息發(fā)出,在沒有到達(dá)目的窗口前,鉤子函數(shù)就先捕獲該消息,亦即鉤子函數(shù)先得到控制權(quán)。這時鉤子函數(shù)即可以加工處理該消息,也可以不作處理而繼續(xù)傳遞該消息,還可以強(qiáng)制結(jié)束消息的傳遞。

本實(shí)施例中,將NtCreateSection函數(shù)的原始入口地址修改為本實(shí)施例中的鉤子函數(shù)的入口地址。安全防護(hù)類應(yīng)用程序的進(jìn)程在調(diào)用NtCreateSection函數(shù)時,由于NtCreateSection函數(shù)的原始入口地址已被修改為本實(shí)施例的鉤子函數(shù)的入口地址,通過對NtCreateSection函數(shù)的調(diào)用,即可跳至本實(shí)施例的鉤子函數(shù)的執(zhí)行,由此實(shí)現(xiàn)對NtCreateSection函數(shù)的監(jiān)視。

為了實(shí)現(xiàn)對NtCreateSection函數(shù)的回調(diào),在將NtCreateSection函數(shù)的原始入口地址修改為本實(shí)施例中的鉤子函數(shù)的入口地址之前,需要對NtCreateSection函數(shù)的原始入口地址進(jìn)行保存。

本實(shí)施例中,應(yīng)用程序的進(jìn)程對NtCreateSection函數(shù)的調(diào)用,可通過windows操作系統(tǒng)對NtCreateSection函數(shù)的調(diào)用來實(shí)現(xiàn)。具體來講,可以是應(yīng)用程序的進(jìn)程向windows操作系統(tǒng)發(fā)出調(diào)用NtCreateSection函數(shù)的消息,windows操作系統(tǒng)根據(jù)該消息調(diào)用NtCreateSection函數(shù)。

參看圖4,本實(shí)施例的裝置在圖3所示裝置結(jié)構(gòu)的基礎(chǔ)上,進(jìn)一步地,所述 第一判斷模塊32,可以包括:第一獲取子模塊321、第一判斷子模塊322以及第一通知子模塊323;其中,

第一獲取子模塊321,用于獲取所述進(jìn)程的路徑信息。

第一判斷子模塊322,用于根據(jù)所述進(jìn)程的路徑信息,判斷所述進(jìn)程是否是要防護(hù)的應(yīng)用程序目錄下的進(jìn)程。

本實(shí)施例中,根據(jù)第一獲取子模塊321獲取的所述進(jìn)程的路徑信息,判斷所述進(jìn)程是否是要防護(hù)的安全防護(hù)類應(yīng)用程序目錄下的進(jìn)程。

第一通知子模塊323,用于若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則通知所述第二判斷模塊33,若所述進(jìn)程不是要防護(hù)的應(yīng)用程序的進(jìn)程,則通知所述調(diào)用模塊35。

本實(shí)施例中,進(jìn)一步地,所述第二判斷模塊33,可以包括:第二獲取子模塊331、第二判斷子模塊332和第二通知子模塊333;其中,

第二獲取子模塊331,用于若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,則獲取所述進(jìn)程當(dāng)前要加載的DLL文件的路徑信息。

第二判斷子模塊332,用于根據(jù)所述要加載的DLL文件的路徑信息,在攔截規(guī)則庫中進(jìn)行匹配查詢,判斷所述要加載的DLL文件是否是惡意的DLL文件;其中,所述攔截規(guī)則庫中保存有惡意的DLL文件的路徑信息。

本實(shí)施例中,根據(jù)獲取的所述DLL文件的路徑信息,在攔截規(guī)則庫中進(jìn)行匹配查詢,判斷所述要加載的DLL文件是否是惡意的DLL文件。

本實(shí)施例中,可預(yù)先將惡意的DLL文件建立黑名單,若所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件在黑名單當(dāng)中,即可判斷所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件是惡意的DLL文件。

作為一種可選方式,也可預(yù)先將要保護(hù)的應(yīng)用程序正常運(yùn)行所需要的DLL文件建立白名單。若所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件不在白名單當(dāng) 中,即可判斷所述應(yīng)用程序的進(jìn)程當(dāng)前要加載的DLL文件是惡意的DLL文件。

第二通知子模塊333,用于若所述要加載的DLL文件是惡意的DLL文件,則通知所述拒絕加載模塊34,若所述要加載的DLL文件不是惡意的DLL文件,則通知所述調(diào)用模塊35。

本實(shí)施例中,所述拒絕加載模塊34可向windows操作系統(tǒng)或向要保護(hù)的應(yīng)用程序的進(jìn)程返回拒絕加載消息,從而阻止將惡意的DLL文件注入到要保護(hù)的應(yīng)用程序的進(jìn)程中。

所述調(diào)用模塊35,用于若所述進(jìn)程不是要防護(hù)的應(yīng)用程序的進(jìn)程,或者若所述進(jìn)程是要防護(hù)的應(yīng)用程序的進(jìn)程,但所述要加載的DLL文件不是惡意的DLL文件,則根據(jù)預(yù)先保存的所述加載函數(shù)的原始入口地址調(diào)用所述加載函數(shù),通過所述加載函數(shù)完成對所述DLL文件的加載。

本實(shí)施例中,可根據(jù)預(yù)先保存的NtCreateSection函數(shù)的原始入口地址,調(diào)用NtCreateSection函數(shù),通過NtCreateSection函數(shù)完成對待加載的DLL文件的加載。

本發(fā)明實(shí)施例提供的應(yīng)用程序的防護(hù)裝置,通過建立在安全防護(hù)類應(yīng)用程序的防御驅(qū)動中的監(jiān)視模塊31,對NtCreateSection函數(shù)的調(diào)用進(jìn)行監(jiān)視,能夠在windows操作系統(tǒng)的內(nèi)核層對NtCreateSection函數(shù)的調(diào)用進(jìn)行監(jiān)視,能夠在安全防護(hù)類應(yīng)用程序的自防護(hù)生效前,快速準(zhǔn)確地捕獲到惡意的DLL文件,阻止惡意的DLL文件注入到安全防護(hù)類應(yīng)用程序的進(jìn)程中,從而能夠使安全防護(hù)類應(yīng)用程序免于被惡意的DLL文件所破壞。

本實(shí)施例的裝置,可以用于執(zhí)行圖2所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。

本實(shí)施例主要是以安全防護(hù)類應(yīng)用程序的防護(hù)為例進(jìn)行說明的,對于非安全防護(hù)類應(yīng)用程序的防護(hù)方法與本實(shí)施例相似,不同之處在于在非安全防護(hù)類應(yīng)用程序的防護(hù)方法中,主要是在windows操作系統(tǒng)開機(jī)完成后,通過鉤子函 數(shù)對DLL文件的加載函數(shù)的調(diào)用進(jìn)行監(jiān)視。

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

以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的防護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的防護(hù)范圍之內(nèi)。因此,本發(fā)明的防護(hù)范圍應(yīng)以權(quán)利要求的防護(hù)范圍為準(zhǔn)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
贡山| 井冈山市| 浏阳市| 德兴市| 克拉玛依市| 视频| 香格里拉县| 虎林市| 新化县| 民乐县| 新安县| 郎溪县| 永新县| 夹江县| 白银市| 天津市| 长白| 镇宁| 屏东县| 丹巴县| 望江县| 太湖县| 新津县| 辽宁省| 搜索| 尉氏县| 屯门区| 德安县| 大名县| 扬中市| 汤阴县| 阳新县| 宜昌市| 建昌县| 西乌珠穆沁旗| 浪卡子县| 龙门县| 论坛| 中牟县| 泰顺县| 茌平县|