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

一種保護(hù)驅(qū)動(dòng)程序的方法、裝置及電子設(shè)備的制造方法

文檔序號(hào):10489266閱讀:192來(lái)源:國(guó)知局
一種保護(hù)驅(qū)動(dòng)程序的方法、裝置及電子設(shè)備的制造方法
【專利摘要】本發(fā)明的實(shí)施例公開一種保護(hù)驅(qū)動(dòng)程序的方法、裝置及電子設(shè)備。方法包括:在預(yù)先注入到內(nèi)核層中的鉤子函數(shù)監(jiān)測(cè)到應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)時(shí),鉤住所述驅(qū)動(dòng)程序加載函數(shù);提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息,獲取所述文件路徑信息映射的驅(qū)動(dòng)程序;如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序相同,拒絕所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求。應(yīng)用本發(fā)明,可以提升操作系統(tǒng)的安全防護(hù)效率。
【專利說明】
一種保護(hù)驅(qū)動(dòng)程序的方法、裝置及電子設(shè)備
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)通信安全技術(shù),尤其涉及一種保護(hù)驅(qū)動(dòng)程序的方法、裝置及電子設(shè)備。
【背景技術(shù)】
[0002]隨著Windows操作系統(tǒng)內(nèi)核層技術(shù)細(xì)節(jié)的逐漸公開,越來(lái)越多的木馬病毒等惡意應(yīng)用程序開始使用內(nèi)核層驅(qū)動(dòng)程序來(lái)保護(hù)自身的進(jìn)程,受內(nèi)核層驅(qū)動(dòng)程序保護(hù)的惡意應(yīng)用程序的進(jìn)程,可以結(jié)束(殺死Windows操作系統(tǒng)中的其它進(jìn)程,從而使得惡意應(yīng)用程序的進(jìn)程可以根據(jù)惡意應(yīng)用程序提供者的意圖,對(duì)用戶的進(jìn)程或系統(tǒng)進(jìn)程進(jìn)行惡意攻擊,可能造成計(jì)算機(jī)運(yùn)行不穩(wěn)定,甚至可能給用戶帶來(lái)非常大的經(jīng)濟(jì)損失,例如,加載惡意應(yīng)用程序?qū)?yīng)的驅(qū)動(dòng)程序,使得惡意應(yīng)用程序可對(duì)操作系統(tǒng)進(jìn)行攻擊。其中,驅(qū)動(dòng)程序一般指的是設(shè)備驅(qū)動(dòng)(Device Driver)應(yīng)用程序,是一種可以使計(jì)算機(jī)和設(shè)備通信的特殊應(yīng)用程序,相當(dāng)于硬件的接口,操作系統(tǒng)通過該接口控制硬件設(shè)備的工作,如果設(shè)備的驅(qū)動(dòng)程序未能正確安裝,該設(shè)備便不能正常工作。進(jìn)程(Process)是計(jì)算機(jī)中的應(yīng)用程序關(guān)于數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是Windows操作系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是Windows操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。在早期面向進(jìn)程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是應(yīng)用程序的基本執(zhí)行實(shí)體;在當(dāng)代面向線程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是線程的容器。也就是說,應(yīng)用程序是指令、數(shù)據(jù)及其組織形式的描述,進(jìn)程是應(yīng)用程序的實(shí)體。
[0003]目前,加載驅(qū)動(dòng)程序的方法是調(diào)用操作系統(tǒng)提供的內(nèi)核NtLoadDriver函數(shù),因而,惡意應(yīng)用程序可以通過調(diào)用內(nèi)核NtLoadDriver函數(shù)完成惡意驅(qū)動(dòng)程序的加載,從而使得惡意應(yīng)用程序可以運(yùn)行并攻擊操作系統(tǒng)。為了保護(hù)Windows操作系統(tǒng)不被非法攻擊的方法是利用鉤子(Η00Κ)技術(shù),通過對(duì)加載驅(qū)動(dòng)程序的內(nèi)核NtLoadDriver函數(shù)進(jìn)行鉤子處理,SPHook加載驅(qū)動(dòng)程序的內(nèi)核NtLoadDriver函數(shù),分析該內(nèi)核NtLoadDriver函數(shù)中的預(yù)定參數(shù),該參數(shù)用于配置待加載驅(qū)動(dòng)程序的服務(wù)注冊(cè)表信息,通過解析配置的服務(wù)注冊(cè)表信息,可以獲得文件路徑信息,從而依據(jù)文件路徑信息得到待加載驅(qū)動(dòng)程序,判斷得到的待加載驅(qū)動(dòng)程序是否是需要攔截的驅(qū)動(dòng)程序,如果是,則返回拒絕,從而攔截該待加載驅(qū)動(dòng)程序的加載。
[0004]但該保護(hù)驅(qū)動(dòng)程序的方法,是通過Hook內(nèi)核NtLoadDriver函數(shù)攔截成惡意驅(qū)動(dòng)程序的加載,但在Windows操作系統(tǒng)中,通過統(tǒng)計(jì)分析,還存在另一隱蔽的加載驅(qū)動(dòng)程序的方法,使得惡意應(yīng)用程序可以通過該隱蔽的加載驅(qū)動(dòng)程序的方法,實(shí)現(xiàn)惡意驅(qū)動(dòng)程序的加載,從而對(duì)Windows操作系統(tǒng)進(jìn)行攻擊,導(dǎo)致Windows操作系統(tǒng)的安全防護(hù)效率較低,安全性不尚O

【發(fā)明內(nèi)容】

[0005]有鑒于此,本發(fā)明實(shí)施例提供一種保護(hù)驅(qū)動(dòng)程序的方法、裝置及電子設(shè)備,提升操作系統(tǒng)的安全防護(hù)效率。
[0006]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0007]第一方面,本發(fā)明實(shí)施例提供一種保護(hù)驅(qū)動(dòng)程序的方法,包括:
[0008]在預(yù)先注入到內(nèi)核層中的鉤子函數(shù)監(jiān)測(cè)到應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)時(shí),鉤住所述驅(qū)動(dòng)程序加載函數(shù);
[0009]提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息,獲取所述文件路徑信息映射的驅(qū)動(dòng)程序;
[0010]如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序相同,拒絕所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求。
[0011]可選的,所述驅(qū)動(dòng)程序加載函數(shù)包括:內(nèi)核驅(qū)動(dòng)加載函數(shù)、內(nèi)核系統(tǒng)信息設(shè)置函數(shù)、扇區(qū)創(chuàng)建函數(shù)以及扇區(qū)映射函數(shù)中的一種或其任意組合。
[0012]可選的,所述驅(qū)動(dòng)程序加載函數(shù)為內(nèi)核驅(qū)動(dòng)加載函數(shù),所述提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息包括:
[0013]獲取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)時(shí)的內(nèi)存地址;
[0014]解析所述內(nèi)存地址,得到調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的進(jìn)程句柄;
[0015]利用所述進(jìn)程句柄的內(nèi)核對(duì)象獲取文件路徑信息。
[0016]可選的,所述驅(qū)動(dòng)程序加載函數(shù)為內(nèi)核系統(tǒng)信息設(shè)置函數(shù),所述提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息包括:
[0017]解析所述內(nèi)核系統(tǒng)信息設(shè)置函數(shù),獲取第一參數(shù)以及第二參數(shù);
[0018]如果第一參數(shù)中的操作系統(tǒng)信息的類型索引號(hào)值為預(yù)先設(shè)置的索引值,提取第二參數(shù)中包含的待加載驅(qū)動(dòng)程序的文件路徑信息。
[0019]可選的,所述內(nèi)核系統(tǒng)信息設(shè)置函數(shù)為內(nèi)核NtSetSyStemInformat1n函數(shù),所述預(yù)先設(shè)置的索引值為38。
[0020]可選的,所述方法還包括:
[0021]如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序不相同,通知所述驅(qū)動(dòng)程序加載函數(shù)執(zhí)行所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求,以進(jìn)行驅(qū)動(dòng)程序加載操作。
[0022]可選的,所述驅(qū)動(dòng)程序特征庫(kù)由用戶在本地進(jìn)行設(shè)置,所述方法還包括:
[0023]將拒絕的驅(qū)動(dòng)程序信息上報(bào)至預(yù)先設(shè)置的網(wǎng)絡(luò)服務(wù)器。
[0024]第二方面,本發(fā)明實(shí)施例提供一種保護(hù)驅(qū)動(dòng)程序的裝置,包括:鉤子模塊、驅(qū)動(dòng)程序提取模塊以及操作處理模塊,其中,
[0025]鉤子模塊,用于在預(yù)先注入到內(nèi)核層中的鉤子函數(shù)監(jiān)測(cè)到應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)時(shí),鉤住所述驅(qū)動(dòng)程序加載函數(shù);
[0026]驅(qū)動(dòng)程序提取模塊,用于提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息,獲取所述文件路徑信息映射的驅(qū)動(dòng)程序;
[0027]操作處理模塊,如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序相同,拒絕所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求。
[0028]可選的,所述驅(qū)動(dòng)程序加載函數(shù)包括:內(nèi)核驅(qū)動(dòng)加載函數(shù)、內(nèi)核系統(tǒng)信息設(shè)置函數(shù)、扇區(qū)創(chuàng)建函數(shù)以及扇區(qū)映射函數(shù)中的一種或其任意組合。
[0029]可選的,所述驅(qū)動(dòng)程序加載函數(shù)為內(nèi)核驅(qū)動(dòng)加載函數(shù),所述驅(qū)動(dòng)程序提取模塊包括:內(nèi)存地址獲取單元、進(jìn)程句柄獲取單元、文件路徑信息獲取單元以及驅(qū)動(dòng)程序獲取單元,其中,
[0030]內(nèi)存地址獲取單元,用于獲取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)時(shí)的內(nèi)存地址;
[0031]進(jìn)程句柄獲取單元,用于解析所述內(nèi)存地址,得到調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的進(jìn)程句柄;
[0032]文件路徑信息獲取單元,用戶利用所述進(jìn)程句柄的內(nèi)核對(duì)象獲取文件路徑信息;
[0033]驅(qū)動(dòng)程序獲取單元,用于獲取所述文件路徑信息中包含的驅(qū)動(dòng)程序。
[0034]可選的,所述驅(qū)動(dòng)程序加載函數(shù)為內(nèi)核系統(tǒng)信息設(shè)置函數(shù),所述驅(qū)動(dòng)程序提取模塊包括:參數(shù)解析單元、文件路徑信息提取單元以及驅(qū)動(dòng)程序獲取單元,其中,
[0035]參數(shù)解析單元,用于解析所述內(nèi)核系統(tǒng)信息設(shè)置函數(shù),獲取第一參數(shù)以及第二參數(shù);
[0036]文件路徑信息提取單元,如果第一參數(shù)中的操作系統(tǒng)信息的類型索引號(hào)值為預(yù)先設(shè)置的索引值,提取第二參數(shù)中包含的待加載驅(qū)動(dòng)程序的文件路徑信息;
[0037]驅(qū)動(dòng)程序獲取單元,用于獲取所述文件路徑信息中包含的驅(qū)動(dòng)程序。
[0038]可選的,所述內(nèi)核系統(tǒng)信息設(shè)置函數(shù)為內(nèi)核NtSetSyStemInformat1n函數(shù),所述預(yù)先設(shè)置的索引值為38。
[0039]可選的,所述操作處理模塊還用于如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序不相同,通知所述驅(qū)動(dòng)程序加載函數(shù)執(zhí)行所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求,以進(jìn)行驅(qū)動(dòng)程序加載操作。
[0040]可選的,所述驅(qū)動(dòng)程序特征庫(kù)由用戶在本地進(jìn)行設(shè)置,所述裝置還包括:
[0041]信息上報(bào)模塊,用于將拒絕的驅(qū)動(dòng)程序信息上報(bào)至預(yù)先設(shè)置的網(wǎng)絡(luò)服務(wù)器。
[0042]第三方面,本發(fā)明實(shí)施例提供一種電子設(shè)備,所述電子設(shè)備包括:殼體、處理器、存儲(chǔ)器、電路板和電源電路,其中,電路板安置在殼體圍成的空間內(nèi)部,處理器和存儲(chǔ)器設(shè)置在電路板上;電源電路,用于為上述電子設(shè)備的各個(gè)電路或器件供電;存儲(chǔ)器用于存儲(chǔ)可執(zhí)行程序代碼;處理器通過讀取存儲(chǔ)器中存儲(chǔ)的可執(zhí)行程序代碼來(lái)運(yùn)行與可執(zhí)行程序代碼對(duì)應(yīng)的程序,用于執(zhí)行前述任一所述的保護(hù)驅(qū)動(dòng)程序的方法。
[0043]本發(fā)明實(shí)施例提供的保護(hù)驅(qū)動(dòng)程序的方法、裝置及電子設(shè)備,在預(yù)先注入到內(nèi)核層中的鉤子函數(shù)監(jiān)測(cè)到應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)時(shí),鉤住所述驅(qū)動(dòng)程序加載函數(shù);提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息,獲取所述文件路徑信息映射的驅(qū)動(dòng)程序;如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序相同,拒絕所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求。這樣,通過Hook驅(qū)動(dòng)程序加載函數(shù),當(dāng)應(yīng)用程序調(diào)用驅(qū)動(dòng)程序加載函數(shù)以加載對(duì)應(yīng)的驅(qū)動(dòng)程序時(shí),能夠及時(shí)攔截應(yīng)用程序的加載行為,提升了操作系統(tǒng)的安全防護(hù)效率,增強(qiáng)了操作系統(tǒng)的安全性。
【附圖說明】
[0044]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
[0045]圖1為本發(fā)明實(shí)施例保護(hù)驅(qū)動(dòng)程序的方法流程示意圖;
[0046]圖2為本發(fā)明實(shí)施例提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息的流程示意圖;
[0047]圖3為本發(fā)明實(shí)施例保護(hù)驅(qū)動(dòng)程序的裝置結(jié)構(gòu)示意圖;
[0048]圖4為本發(fā)明電子設(shè)備一個(gè)實(shí)施例的結(jié)構(gòu)不意圖。
【具體實(shí)施方式】
[0049]下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)描述。
[0050]應(yīng)當(dāng)明確,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0051]圖1為本發(fā)明實(shí)施例保護(hù)驅(qū)動(dòng)程序的方法流程示意圖。參見圖1,該方法包括:
[0052]步驟11,在預(yù)先注入到內(nèi)核層中的鉤子函數(shù)監(jiān)測(cè)到應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)時(shí),鉤住所述驅(qū)動(dòng)程序加載函數(shù);
[0053]本步驟中,作為一可選實(shí)施例,驅(qū)動(dòng)程序加載函數(shù)包括但不限于:內(nèi)核驅(qū)動(dòng)加載函數(shù)、內(nèi)核系統(tǒng)信息設(shè)置函數(shù)、扇區(qū)創(chuàng)建函數(shù)以及扇區(qū)映射函數(shù)中的一種或其任意組合。其中,內(nèi)核驅(qū)動(dòng)加載函數(shù)可以是內(nèi)核NtLoadDriver函數(shù),內(nèi)核系統(tǒng)信息設(shè)置函數(shù)可以是內(nèi)核NtSetSystemInformat1n函數(shù),扇區(qū)創(chuàng)建函數(shù)可以是內(nèi)核NtCreateSect1n函數(shù),扇區(qū)映射函數(shù)可以是內(nèi)核NtMapV i ewOfSecti on函數(shù)。
[°°54] 本發(fā)明實(shí)施例中,作為一可選實(shí)施例,調(diào)用內(nèi)核NtSetSystemInformat1n函數(shù)是一種隱蔽的加載驅(qū)動(dòng)程序的方法。操作系統(tǒng)提供的內(nèi)核NtSetSystemInformat1n函數(shù)用于設(shè)置操作系統(tǒng)的一些信息,至少包含兩個(gè)參數(shù),分別用于設(shè)置時(shí)間信息、處理器信息、進(jìn)程信息、內(nèi)存信息等信息。其中,第一參數(shù)用于設(shè)置操作系統(tǒng)信息的類型索引號(hào),例如,設(shè)置時(shí)間信息對(duì)應(yīng)的類型索引號(hào)為28,設(shè)置進(jìn)程信息對(duì)應(yīng)的類型索引號(hào)為5,設(shè)置操作系統(tǒng)擴(kuò)展服務(wù)注冊(cè)表信息對(duì)應(yīng)的類型索引號(hào)為38 (將SYSTEM-1NFORMAT1N-CLASS的值設(shè)置為SystemLoadAndCalIImage)等;第二參數(shù)用于設(shè)置類型索引號(hào)的具體數(shù)據(jù),例如,如果類型索引號(hào)為28,則設(shè)置具體的時(shí)間信息,如果類型索引號(hào)為38,則設(shè)置待加載驅(qū)動(dòng)程序的文件路徑信息。
[0055]本發(fā)明實(shí)施例中,注入的鉤子(Hook)函數(shù)用于監(jiān)聽?wèi)?yīng)用層進(jìn)程的函數(shù)調(diào)用相關(guān)操作,并在應(yīng)用層進(jìn)程調(diào)用的相關(guān)函數(shù)與預(yù)先設(shè)置的函數(shù)相匹配時(shí),攔截該調(diào)用的函數(shù),轉(zhuǎn)由注入的鉤子函數(shù)替換該調(diào)用函數(shù)進(jìn)行處理,并返回相應(yīng)處理結(jié)果。
[0056]作為一可選實(shí)施例,鉤子函數(shù)可在金山毒霸防御驅(qū)動(dòng)程序加載時(shí)注入,其中,
[0057]Hook函數(shù)是Windows操作系統(tǒng)中消息處理機(jī)制的一段程序代碼段,驅(qū)動(dòng)程序可以通過該程序代碼段,設(shè)置子程序代碼段以監(jiān)視指定窗口的某種消息(操作),而且所監(jiān)視的指定窗口可以是其他進(jìn)程所創(chuàng)建的c^Hook函數(shù)具有的鉤子機(jī)制通過Windows操作系統(tǒng)調(diào)用,將具有優(yōu)先控制權(quán)的Hook函數(shù)掛入Windows操作系統(tǒng),允許Hook函數(shù)截獲Windows操作系統(tǒng)發(fā)出的消息或特定事件,每當(dāng)Windows操作系統(tǒng)中消息或特定事件發(fā)出,在沒有到達(dá)目的窗口前,Hook函數(shù)能夠先捕獲該消息或特定事件,從而可以加工處理(改變)該消息或特定事件,也可以不作處理而繼續(xù)傳遞,還可以強(qiáng)制結(jié)束消息或特定事件的傳遞。
[0058]本發(fā)明實(shí)施例中,通過Hook驅(qū)動(dòng)程序加載函數(shù),在應(yīng)用層進(jìn)程,例如,應(yīng)用程序通過向操作系統(tǒng)發(fā)送驅(qū)動(dòng)程序加載請(qǐng)求,所述操作系統(tǒng)依據(jù)接收的驅(qū)動(dòng)程序加載請(qǐng)求為所述應(yīng)用程序創(chuàng)建相應(yīng)的應(yīng)用層進(jìn)程,該應(yīng)用層進(jìn)程調(diào)用驅(qū)動(dòng)程序加載函數(shù)以加載驅(qū)動(dòng)程序時(shí),就會(huì)先調(diào)用本發(fā)明實(shí)施例的Hook函數(shù),從而依據(jù)預(yù)先設(shè)置在Hook函數(shù)中的攔截規(guī)則進(jìn)行相應(yīng)處理。
[0059]本發(fā)明實(shí)施例中,作為一可選實(shí)施例,所述應(yīng)用層進(jìn)程為一應(yīng)用程序向操作系統(tǒng)發(fā)送驅(qū)動(dòng)程序加載請(qǐng)求時(shí),所述操作系統(tǒng)為該應(yīng)用程序創(chuàng)建的進(jìn)程。
[0060]作為一可選實(shí)施例,應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)包括:
[0061 ] 應(yīng)用層進(jìn)程調(diào)用內(nèi)核NtLoadDriver函數(shù)。
[0062]作為另一可選實(shí)施例,應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)包括:
[0063]應(yīng)用層進(jìn)程調(diào)用內(nèi)核NtSetSystemInf ormat1n函數(shù)。
[0064]作為再一可選實(shí)施例,應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)包括:
[0065]應(yīng)用層進(jìn)程調(diào)用內(nèi)核NtCreateSect1n函數(shù)。
[0066]作為再一可選實(shí)施例,應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)包括:
[0067]應(yīng)用層進(jìn)程調(diào)用內(nèi)核NtMapViewOfSect1n函數(shù)。
[0068]步驟12,提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息,獲取所述文件路徑信息映射的驅(qū)動(dòng)程序;
[0069]本步驟中,作為一可選實(shí)施例,如果驅(qū)動(dòng)程序加載函數(shù)為內(nèi)核驅(qū)動(dòng)加載函數(shù),提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息包括:
[0070]Al,獲取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)時(shí)的內(nèi)存地址;
[0071]A2,解析所述內(nèi)存地址,得到調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的進(jìn)程句柄;
[0072]A3,利用所述進(jìn)程句柄的內(nèi)核對(duì)象獲取文件路徑信息。
[0073]本發(fā)明實(shí)施例中,步驟Al至步驟A3為公知技術(shù),在此略去詳述。
[0074]作為另一可選實(shí)施例,如果驅(qū)動(dòng)程序加載函數(shù)為內(nèi)核系統(tǒng)信息設(shè)置函數(shù),圖2為本發(fā)明實(shí)施例提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息的流程示意圖。參見圖2,該流程包括:
[0075]步驟21,解析所述內(nèi)核系統(tǒng)信息設(shè)置函數(shù),獲取第一參數(shù)以及第二參數(shù);
[0076]步驟22,如果第一參數(shù)中的操作系統(tǒng)信息的類型索引號(hào)值為預(yù)先設(shè)置的索引值,提取第二參數(shù)中包含的待加載驅(qū)動(dòng)程序的文件路徑信息。
[0077]本步驟中,作為一可選實(shí)施例,預(yù)先設(shè)置的索引值為38,通過判斷第一參數(shù)中的操作系統(tǒng)信息的類型索引號(hào)是否為38,如果是,表明該參數(shù)是用于為待加載驅(qū)動(dòng)程序設(shè)置操作系統(tǒng)擴(kuò)展服務(wù)注冊(cè)表信息對(duì)應(yīng)的類型索引號(hào),如果不是,則表明應(yīng)用層進(jìn)程的調(diào)用不是進(jìn)行驅(qū)動(dòng)程序的加載操作,則通知內(nèi)核系統(tǒng)信息設(shè)置函數(shù)進(jìn)行相應(yīng)操作。
[0078]本發(fā)明實(shí)施例中,對(duì)于扇區(qū)創(chuàng)建函數(shù)以及扇區(qū)映射函數(shù),提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息的流程與內(nèi)核系統(tǒng)信息設(shè)置函數(shù)相類似。文件路徑信息中包含有驅(qū)動(dòng)文件,通過驅(qū)動(dòng)文件,可以獲知驅(qū)動(dòng)程序,驅(qū)動(dòng)程序與應(yīng)用程序?yàn)橐灰粚?duì)應(yīng)關(guān)系,因而,通過獲取驅(qū)動(dòng)程序加載操作的文件路徑信息,可以獲知應(yīng)用層進(jìn)程對(duì)應(yīng)的應(yīng)用程序,即可以獲知向操作系統(tǒng)發(fā)送驅(qū)動(dòng)程序加載請(qǐng)求的應(yīng)用程序信息。
[0079]步驟13,如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序相同,拒絕所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求。
[0080]本步驟中,將獲取的驅(qū)動(dòng)程序在驅(qū)動(dòng)程序特征庫(kù)中進(jìn)行搜索匹配,判斷調(diào)用驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程加載的驅(qū)動(dòng)程序是否是驅(qū)動(dòng)程序,如果與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序不相同,則可以確定發(fā)起驅(qū)動(dòng)程序加載請(qǐng)求的應(yīng)用程序是正常應(yīng)用程序。
[0081 ]因而,作為一可選實(shí)施例,該方法還可以包括:
[0082]如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序不相同,通知所述驅(qū)動(dòng)程序加載函數(shù)執(zhí)行所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求,以進(jìn)行驅(qū)動(dòng)程序加載操作。
[0083]本步驟中,如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序不相同,解除對(duì)驅(qū)動(dòng)程序加載函數(shù)的Hook操作,使得驅(qū)動(dòng)程序加載函數(shù)可以進(jìn)行驅(qū)動(dòng)程序加載操作。
[0084]本發(fā)明實(shí)施例中,如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序相同,則認(rèn)為該應(yīng)用層進(jìn)程為預(yù)先設(shè)置的應(yīng)用程序進(jìn)程,需要進(jìn)行攔截,則結(jié)束本次操作,返回拒絕,從而拒絕該應(yīng)用程序(或?qū)?yīng)的應(yīng)用層進(jìn)程)的驅(qū)動(dòng)程序加載請(qǐng)求,使得應(yīng)用程序加載驅(qū)動(dòng)程序的請(qǐng)求失敗。例如,在用戶電腦環(huán)境中,存在一應(yīng)用程序A,對(duì)應(yīng)的驅(qū)動(dòng)程序?yàn)轵?qū)動(dòng)程序B,由于驅(qū)動(dòng)程序工作在操作系統(tǒng)內(nèi)核中,能嚴(yán)重地破壞操作系統(tǒng)。假設(shè)通過在金山毒霸的防御驅(qū)動(dòng)中注入Hook函數(shù),Hook用以執(zhí)行驅(qū)動(dòng)程序加載的內(nèi)核NtSetSystemlnformat1n函數(shù),這樣,當(dāng)應(yīng)用程序A的進(jìn)程調(diào)用內(nèi)核NtShutdownSystem函數(shù),以加載該應(yīng)用程序?qū)?yīng)的驅(qū)動(dòng)程序B時(shí),注入在金山毒霸的防御驅(qū)動(dòng)中的Hook函數(shù)對(duì)該加載驅(qū)動(dòng)程序B的行為進(jìn)行攔截,并返回拒絕,使得應(yīng)用程序A不能加載驅(qū)動(dòng)程序B,應(yīng)用程序A就不能在內(nèi)核層中實(shí)現(xiàn)攻擊操作系統(tǒng)的目的,從而更好地保護(hù)操作系統(tǒng)環(huán)境不被破壞。
[0085]本發(fā)明實(shí)施例中,作為一可選實(shí)施例,驅(qū)動(dòng)程序特征庫(kù)可通過相關(guān)技術(shù)人員在網(wǎng)絡(luò)服務(wù)器通過對(duì)各應(yīng)用程序運(yùn)行的分析,選取能夠?qū)Σ僮飨到y(tǒng)產(chǎn)生破壞的應(yīng)用程序?qū)?yīng)的驅(qū)動(dòng)程序,形成驅(qū)動(dòng)程序特征庫(kù),并將形成的驅(qū)動(dòng)程序特征庫(kù)下發(fā)至各應(yīng)用終端,應(yīng)用終端接收網(wǎng)絡(luò)服務(wù)器下發(fā)的驅(qū)動(dòng)程序特征庫(kù)進(jìn)行保存。當(dāng)然,實(shí)際應(yīng)用中,也可以由用戶在本地設(shè)置驅(qū)動(dòng)程序特征庫(kù),本發(fā)明實(shí)施例對(duì)此不作限定。
[0086]作為另一可選實(shí)施例,如果由用戶在本地設(shè)置驅(qū)動(dòng)程序特征庫(kù),該方法還可以包括:
[0087]將拒絕的驅(qū)動(dòng)程序信息上報(bào)至預(yù)先設(shè)置的網(wǎng)絡(luò)服務(wù)器。
[0088]本步驟中,用戶設(shè)置或由操作系統(tǒng)自動(dòng)將拒絕的驅(qū)動(dòng)程序的相關(guān)信息進(jìn)行上報(bào),可以便于網(wǎng)絡(luò)服務(wù)器統(tǒng)計(jì)各應(yīng)用終端上報(bào)的驅(qū)動(dòng)程序信息,并依據(jù)統(tǒng)計(jì),確定哪些驅(qū)動(dòng)程序?yàn)轵?qū)動(dòng)程序,并設(shè)置該驅(qū)動(dòng)程序的風(fēng)險(xiǎn)提示,從而在用戶下載該驅(qū)動(dòng)程序?qū)?yīng)的應(yīng)用程序時(shí),提示相應(yīng)的風(fēng)險(xiǎn),使得用戶能夠慎重考慮是否下載該應(yīng)用程序,以避免對(duì)用戶的應(yīng)用終端帶來(lái)的安全隱患。
[0089]由上述可見,本發(fā)明實(shí)施例保護(hù)驅(qū)動(dòng)程序的方法,在預(yù)先注入到內(nèi)核層中的鉤子函數(shù)監(jiān)測(cè)到應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)時(shí),鉤住所述驅(qū)動(dòng)程序加載函數(shù);提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息,獲取所述文件路徑信息映射的驅(qū)動(dòng)程序;如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序相同,拒絕所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求。這樣,通過Hook驅(qū)動(dòng)程序加載函數(shù),當(dāng)應(yīng)用程序調(diào)用驅(qū)動(dòng)程序加載函數(shù)以加載對(duì)應(yīng)的驅(qū)動(dòng)程序時(shí),能夠及時(shí)攔截應(yīng)用程序的加載行為,使得應(yīng)用程序加載驅(qū)動(dòng)程序的行為失敗,從而更好地保護(hù)操作系統(tǒng)的安全,提升了操作系統(tǒng)的安全防護(hù)效率,增強(qiáng)了操作系統(tǒng)的安全性。
[0090]圖3為本發(fā)明實(shí)施例保護(hù)驅(qū)動(dòng)程序的裝置結(jié)構(gòu)示意圖。參見圖3,該裝置包括:鉤子模塊31、驅(qū)動(dòng)程序提取模塊32以及操作處理模塊33,其中,
[0091]鉤子模塊31,用于在預(yù)先注入到內(nèi)核層中的鉤子函數(shù)監(jiān)測(cè)到應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)時(shí),鉤住所述驅(qū)動(dòng)程序加載函數(shù);
[0092]本發(fā)明實(shí)施例中,作為一可選實(shí)施例,所述應(yīng)用層進(jìn)程為一應(yīng)用程序向操作系統(tǒng)發(fā)送驅(qū)動(dòng)程序加載請(qǐng)求時(shí),所述操作系統(tǒng)依據(jù)所述驅(qū)動(dòng)程序加載請(qǐng)求為所述應(yīng)用程序創(chuàng)建的進(jìn)程。
[0093]本發(fā)明實(shí)施例中,驅(qū)動(dòng)程序加載函數(shù)包括:內(nèi)核驅(qū)動(dòng)加載函數(shù)、內(nèi)核系統(tǒng)信息設(shè)置函數(shù)、扇區(qū)創(chuàng)建函數(shù)以及扇區(qū)映射函數(shù)中的一種或其任意組合。其中,內(nèi)核驅(qū)動(dòng)加載函數(shù)可以是內(nèi)核NtLoadDriver函數(shù),內(nèi)核系統(tǒng)信息設(shè)置函數(shù)可以是內(nèi)核NtSetSystemInformat1n函數(shù),扇區(qū)創(chuàng)建函數(shù)可以是內(nèi)核NtCreateSect1n函數(shù),扇區(qū)映射函數(shù)可以是內(nèi)核NtMapViewOfSect 1n函數(shù)。
[0094]本發(fā)明實(shí)施例中,鉤子函數(shù)可在金山毒霸防御驅(qū)動(dòng)程序加載時(shí)注入。
[0095]作為一可選實(shí)施例,鉤子模塊31包括:鉤子函數(shù)注入單元、操作請(qǐng)求單元、進(jìn)程創(chuàng)建單元、監(jiān)測(cè)單元以及鉤子單元(圖中未示出),其中,
[0096]鉤子函數(shù)注入單元,用于在內(nèi)核層中注入預(yù)先設(shè)置的鉤子函數(shù),在操作系統(tǒng)啟動(dòng)后,激活所述鉤子函數(shù);
[0097]操作請(qǐng)求單元,用于接收應(yīng)用程序向操作系統(tǒng)發(fā)送的驅(qū)動(dòng)程序加載請(qǐng)求;
[0098]進(jìn)程創(chuàng)建單元,用于依據(jù)所述驅(qū)動(dòng)程序加載請(qǐng)求為所述應(yīng)用程序創(chuàng)建應(yīng)用層進(jìn)程;
[0099]監(jiān)測(cè)單元,用于利用所述鉤子函數(shù)監(jiān)測(cè)所述應(yīng)用層進(jìn)程是否調(diào)用驅(qū)動(dòng)程序加載函數(shù),在監(jiān)測(cè)到應(yīng)用層進(jìn)程調(diào)用驅(qū)動(dòng)程序加載函數(shù)時(shí),通知鉤子單元;
[0100]鉤子單元,用戶鉤住所述驅(qū)動(dòng)程序加載函數(shù)。
[0101]驅(qū)動(dòng)程序提取模塊32,用于提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息,獲取所述文件路徑信息映射的驅(qū)動(dòng)程序;
[0102]本發(fā)明實(shí)施例中,作為一可選實(shí)施例,所述驅(qū)動(dòng)程序加載函數(shù)為內(nèi)核驅(qū)動(dòng)加載函數(shù),驅(qū)動(dòng)程序提取模塊32包括:內(nèi)存地址獲取單元、進(jìn)程句柄獲取單元、文件路徑信息獲取單元以及驅(qū)動(dòng)程序獲取單元(圖中未示出),其中,
[0103]內(nèi)存地址獲取單元,用于獲取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)時(shí)的內(nèi)存地址;
[0104]進(jìn)程句柄獲取單元,用于解析所述內(nèi)存地址,得到調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的進(jìn)程句柄;
[0105]文件路徑信息獲取單元,用戶利用所述進(jìn)程句柄的內(nèi)核對(duì)象獲取文件路徑信息;
[0106]驅(qū)動(dòng)程序獲取單元,用于獲取所述文件路徑信息中包含的驅(qū)動(dòng)程序。
[0107]作為另一可選實(shí)施例,所述驅(qū)動(dòng)程序加載函數(shù)為內(nèi)核系統(tǒng)信息設(shè)置函數(shù),驅(qū)動(dòng)程序提取模塊32包括:參數(shù)解析單元、文件路徑信息提取單元以及驅(qū)動(dòng)程序獲取單元,其中,
[0108]參數(shù)解析單元,用于解析所述內(nèi)核系統(tǒng)信息設(shè)置函數(shù),獲取第一參數(shù)以及第二參數(shù);
[0109]文件路徑信息提取單元,如果第一參數(shù)中的操作系統(tǒng)信息的類型索引號(hào)值為預(yù)先設(shè)置的索引值,提取第二參數(shù)中包含的待加載驅(qū)動(dòng)程序的文件路徑信息;
[0110]驅(qū)動(dòng)程序獲取單元,用于獲取所述文件路徑信息中包含的驅(qū)動(dòng)程序。
[0111]本發(fā)明實(shí)施例中,作為一可選實(shí)施例,所述內(nèi)核系統(tǒng)信息設(shè)置函數(shù)為內(nèi)核NtSetSystemInformat 1n函數(shù),所述預(yù)先設(shè)置的索引值為38。
[0112]本發(fā)明實(shí)施例中,對(duì)于扇區(qū)創(chuàng)建函數(shù)以及扇區(qū)映射函數(shù),提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息的流程與內(nèi)核系統(tǒng)信息設(shè)置函數(shù)相類似。文件路徑信息中包含有驅(qū)動(dòng)文件,通過驅(qū)動(dòng)文件,可以獲知驅(qū)動(dòng)程序,驅(qū)動(dòng)程序與應(yīng)用程序?yàn)橐灰粚?duì)應(yīng)關(guān)系。
[0113]操作處理模塊33,如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序相同,拒絕所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求。
[0114]本發(fā)明實(shí)施例中,作為一可選實(shí)施例,操作處理模塊33還用于如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序不相同,通知所述驅(qū)動(dòng)程序加載函數(shù)執(zhí)行所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求,以進(jìn)行驅(qū)動(dòng)程序加載操作。
[0115]本發(fā)明實(shí)施例中,作為一可選實(shí)施例,所述驅(qū)動(dòng)程序特征庫(kù)由用戶在本地進(jìn)行設(shè)置,該裝置還包括:
[0116]信息上報(bào)模塊34,用于將拒絕的驅(qū)動(dòng)程序信息上報(bào)至預(yù)先設(shè)置的網(wǎng)絡(luò)服務(wù)器。
[0117]本發(fā)明實(shí)施例還提供一種電子設(shè)備,所述電子設(shè)備包含前述任一實(shí)施例所述的裝置。
[0118]圖4為本發(fā)明電子設(shè)備一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,可以實(shí)現(xiàn)本發(fā)明圖1-3所示實(shí)施例的流程,如圖4所示,上述電子設(shè)備可以包括:殼體41、處理器42、存儲(chǔ)器43、電路板44和電源電路45,其中,電路板44安置在殼體41圍成的空間內(nèi)部,處理器42和存儲(chǔ)器43設(shè)置在電路板44上;電源電路45,用于為上述電子設(shè)備的各個(gè)電路或器件供電;存儲(chǔ)器43用于存儲(chǔ)可執(zhí)行程序代碼;處理器42通過讀取存儲(chǔ)器43中存儲(chǔ)的可執(zhí)行程序代碼來(lái)運(yùn)行與可執(zhí)行程序代碼對(duì)應(yīng)的程序,用于執(zhí)行前述任一實(shí)施例所述的保護(hù)驅(qū)動(dòng)程序的方法。
[0119]處理器42對(duì)上述步驟的具體執(zhí)行過程以及處理器42通過運(yùn)行可執(zhí)行程序代碼來(lái)進(jìn)一步執(zhí)行的步驟,可以參見本發(fā)明圖1-3所示實(shí)施例的描述,在此不再贅述。
[0120]該電子設(shè)備以多種形式存在,包括但不限于:
[0121](I)移動(dòng)通信設(shè)備:這類設(shè)備的特點(diǎn)是具備移動(dòng)通信功能,并且以提供話音、數(shù)據(jù)通信為主要目標(biāo)。這類終端包括:智能手機(jī)(例如iPhone)、多媒體手機(jī)、功能性手機(jī),以及低端手機(jī)等。
[0122](2)超移動(dòng)個(gè)人計(jì)算機(jī)設(shè)備:這類設(shè)備屬于個(gè)人計(jì)算機(jī)的范疇,有計(jì)算和處理功能,一般也具備移動(dòng)上網(wǎng)特性。這類終端包括:PDA、MID和UMPC設(shè)備等,例如iPad。
[0123](3)便攜式娛樂設(shè)備:這類設(shè)備可以顯示和播放多媒體內(nèi)容。該類設(shè)備包括:音頻、視頻播放器(例如iPod),掌上游戲機(jī),電子書,以及智能玩具和便攜式車載導(dǎo)航設(shè)備。
[0124](4)服務(wù)器:提供計(jì)算服務(wù)的設(shè)備,服務(wù)器的構(gòu)成包括處理器、硬盤、內(nèi)存、系統(tǒng)總線等,服務(wù)器和通用的計(jì)算機(jī)架構(gòu)類似,但是由于需要提供高可靠的服務(wù),因此在處理能力、穩(wěn)定性、可靠性、安全性、可擴(kuò)展性、可管理性等方面要求較高。
[0125](5)其他具有數(shù)據(jù)交互功能的電子設(shè)備。
[0126]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random AccessMemory,RAM)等。
[0127]以上所述,僅為本發(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)。
【主權(quán)項(xiàng)】
1.一種保護(hù)驅(qū)動(dòng)程序的方法,其特征在于,該方法包括: 在預(yù)先注入到內(nèi)核層中的鉤子函數(shù)監(jiān)測(cè)到應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)時(shí),鉤住所述驅(qū)動(dòng)程序加載函數(shù); 提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息,獲取所述文件路徑信息映射的驅(qū)動(dòng)程序; 如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序相同,拒絕所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述驅(qū)動(dòng)程序加載函數(shù)包括:內(nèi)核驅(qū)動(dòng)加載函數(shù)、內(nèi)核系統(tǒng)信息設(shè)置函數(shù)、扇區(qū)創(chuàng)建函數(shù)以及扇區(qū)映射函數(shù)中的一種或其任意組合。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述驅(qū)動(dòng)程序加載函數(shù)為內(nèi)核驅(qū)動(dòng)加載函數(shù),所述提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息包括: 獲取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)時(shí)的內(nèi)存地址; 解析所述內(nèi)存地址,得到調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的進(jìn)程句柄; 利用所述進(jìn)程句柄的內(nèi)核對(duì)象獲取文件路徑信息。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述驅(qū)動(dòng)程序加載函數(shù)為內(nèi)核系統(tǒng)信息設(shè)置函數(shù),所述提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息包括: 解析所述內(nèi)核系統(tǒng)信息設(shè)置函數(shù),獲取第一參數(shù)以及第二參數(shù); 如果第一參數(shù)中的操作系統(tǒng)信息的類型索引號(hào)值為預(yù)先設(shè)置的索引值,提取第二參數(shù)中包含的待加載驅(qū)動(dòng)程序的文件路徑信息。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述內(nèi)核系統(tǒng)信息設(shè)置函數(shù)為內(nèi)核NtSetSystemInfomat 1n函數(shù),所述預(yù)先設(shè)置的索引值為38。6.根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,其特征在于,所述方法還包括: 如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序不相同,通知所述驅(qū)動(dòng)程序加載函數(shù)執(zhí)行所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求,以進(jìn)行驅(qū)動(dòng)程序加載操作。7.根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,其特征在于,所述驅(qū)動(dòng)程序特征庫(kù)由用戶在本地進(jìn)行設(shè)置,所述方法還包括: 將拒絕的驅(qū)動(dòng)程序信息上報(bào)至預(yù)先設(shè)置的網(wǎng)絡(luò)服務(wù)器。8.一種保護(hù)驅(qū)動(dòng)程序的裝置,其特征在于,該裝置包括:鉤子模塊、驅(qū)動(dòng)程序提取模塊以及操作處理模塊,其中, 鉤子模塊,用于在預(yù)先注入到內(nèi)核層中的鉤子函數(shù)監(jiān)測(cè)到應(yīng)用層進(jìn)程調(diào)用預(yù)先設(shè)置的驅(qū)動(dòng)程序加載函數(shù)時(shí),鉤住所述驅(qū)動(dòng)程序加載函數(shù); 驅(qū)動(dòng)程序提取模塊,用于提取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的文件路徑信息,獲取所述文件路徑信息映射的驅(qū)動(dòng)程序; 操作處理模塊,如果獲取的驅(qū)動(dòng)程序與預(yù)先設(shè)置的驅(qū)動(dòng)程序特征庫(kù)中的任一驅(qū)動(dòng)程序相同,拒絕所述應(yīng)用層進(jìn)程的驅(qū)動(dòng)程序加載請(qǐng)求。9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述驅(qū)動(dòng)程序加載函數(shù)包括:內(nèi)核驅(qū)動(dòng)加載函數(shù)、內(nèi)核系統(tǒng)信息設(shè)置函數(shù)、扇區(qū)創(chuàng)建函數(shù)以及扇區(qū)映射函數(shù)中的一種或其任意組合。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述驅(qū)動(dòng)程序加載函數(shù)為內(nèi)核驅(qū)動(dòng)加載函數(shù),所述驅(qū)動(dòng)程序提取模塊包括:內(nèi)存地址獲取單元、進(jìn)程句柄獲取單元、文件路徑信息獲取單元以及驅(qū)動(dòng)程序獲取單元,其中, 內(nèi)存地址獲取單元,用于獲取調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)時(shí)的內(nèi)存地址; 進(jìn)程句柄獲取單元,用于解析所述內(nèi)存地址,得到調(diào)用所述驅(qū)動(dòng)程序加載函數(shù)的應(yīng)用層進(jìn)程的進(jìn)程句柄; 文件路徑信息獲取單元,用戶利用所述進(jìn)程句柄的內(nèi)核對(duì)象獲取文件路徑信息; 驅(qū)動(dòng)程序獲取單元,用于獲取所述文件路徑信息中包含的驅(qū)動(dòng)程序。
【文檔編號(hào)】G06F21/51GK105844146SQ201610149567
【公開日】2016年8月10日
【申請(qǐng)日】2016年3月16日
【發(fā)明人】楊峰
【申請(qǐng)人】北京金山安全軟件有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
噶尔县| 莲花县| 双柏县| 上高县| 朝阳市| 永和县| 乳源| 新化县| 都江堰市| 隆林| 莎车县| 东安县| 那曲县| 抚州市| 南岸区| 拉萨市| 武强县| 鄯善县| 平凉市| 莒南县| 阿拉善右旗| 石景山区| 印江| 余干县| 奎屯市| 祥云县| 专栏| 安康市| 垣曲县| 青阳县| 米易县| 兴海县| 云龙县| 上杭县| 临汾市| 敦化市| 新蔡县| 囊谦县| 陇西县| 富平县| 新营市|