本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種攔截系統(tǒng)調(diào)用的方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,計(jì)算機(jī)在用戶的日常生活中也變得越來(lái)越重要。但是也有越來(lái)越多的惡意程序(如,計(jì)算機(jī)病毒、后門(mén)程序、木馬、間諜軟件以及廣告軟件等)在攻擊著用戶使用的計(jì)算機(jī),威脅著用戶的個(gè)人信息(如,賬號(hào)信息、身份信息等)安全,極大的影響了用戶對(duì)互聯(lián)網(wǎng)的使用。
為了保護(hù)用戶的計(jì)算機(jī)不受惡意程序的侵害,越來(lái)越多的用戶選擇在個(gè)人電腦(Personal Computer,PC)上安裝第三方的安全防御軟件,以達(dá)到防御惡意程序攻擊的目的。
其中,安全防御軟件可以提供主動(dòng)防御技術(shù),該技術(shù)是基于程序行為自主分析判斷的實(shí)時(shí)防護(hù)技術(shù)。安全防御軟件在進(jìn)行主動(dòng)防御時(shí),首先需要對(duì)惡意程序進(jìn)行行為攔截,然后進(jìn)行相應(yīng)處理。因而安全防御軟件在進(jìn)行主動(dòng)防御時(shí),最重要的一步是對(duì)程序行為的攔截。
然而,目前現(xiàn)有的一些計(jì)算機(jī)操作系統(tǒng)(如,微軟的64位Windows操作系統(tǒng)等),禁止第三方安全防御軟件對(duì)程序行為的攔截,導(dǎo)致第三方安全防御軟件無(wú)法為用戶提供主動(dòng)防御。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例提供一種攔截系統(tǒng)調(diào)用的方法,用以解決由于計(jì)算機(jī)操作系統(tǒng)禁止攔截系統(tǒng)調(diào)用,而導(dǎo)致第三方安全軟件無(wú)法為用戶提供主動(dòng)防御的問(wèn)題。
本申請(qǐng)實(shí)施例還提供一種攔截系統(tǒng)調(diào)用的裝置,用以解決由于計(jì)算機(jī)操作系統(tǒng)禁止攔截系統(tǒng)調(diào)用,而導(dǎo)致第三方安全軟件無(wú)法為用戶提供主動(dòng)防御的問(wèn)題。
本申請(qǐng)實(shí)施例采用下述技術(shù)方案:
一種攔截系統(tǒng)調(diào)用的方法,包括:
監(jiān)控程序?qū)ο到y(tǒng)調(diào)用接口的系統(tǒng)調(diào)用請(qǐng)求,并判斷監(jiān)控到的對(duì)系統(tǒng)調(diào)用接口發(fā)送系統(tǒng)調(diào)用請(qǐng)求的目標(biāo)程序是否為安全程序;
當(dāng)判斷結(jié)果為否時(shí),屏蔽所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用;
當(dāng)判斷結(jié)果為是時(shí),向系統(tǒng)調(diào)用接口返回模式專(zhuān)用寄存器中保存的用于指示防護(hù)程序驅(qū)動(dòng)所在位置的虛擬值,并根據(jù)所述虛擬值,將所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用發(fā)送至防護(hù)程序驅(qū)動(dòng);
所述虛擬值,是根據(jù)虛擬寄存器中保存的防護(hù)程序驅(qū)動(dòng)入口地址,對(duì)所述模式專(zhuān)用寄存器中保存的、與所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用對(duì)應(yīng)的真實(shí)值進(jìn)行修改而得到的;所述虛擬寄存器是對(duì)計(jì)算機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;
所述虛擬寄存器,還保存有用于提供給計(jì)算機(jī)操作系統(tǒng)保護(hù)程序進(jìn)行校驗(yàn)的所述真實(shí)值。
一種攔截系統(tǒng)調(diào)用的裝置,包括:
系統(tǒng)調(diào)用監(jiān)控單元,用于監(jiān)控程序?qū)ο到y(tǒng)調(diào)用接口的系統(tǒng)調(diào)用請(qǐng)求,并判斷監(jiān)控到的對(duì)系統(tǒng)調(diào)用接口發(fā)送系統(tǒng)調(diào)用請(qǐng)求的目標(biāo)程序是否為安全程序;
系統(tǒng)調(diào)用屏蔽單元,用于當(dāng)判斷結(jié)果為否時(shí),屏蔽所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用;
系統(tǒng)調(diào)用攔截單元,用于當(dāng)判斷結(jié)果為是時(shí),向系統(tǒng)調(diào)用接口返回模式專(zhuān)用寄存器中保存的用于指示防護(hù)程序驅(qū)動(dòng)所在位置的虛擬值,并根據(jù)所述虛擬值,將所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用發(fā)送至防護(hù)程序驅(qū)動(dòng);所述虛擬值,是根據(jù)所述虛擬寄存器中保存的防護(hù)程序驅(qū)動(dòng)入口地址,對(duì)所述模式專(zhuān)用寄存器 中保存的、與所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用對(duì)應(yīng)的真實(shí)值進(jìn)行修改而得到的;所述虛擬寄存器是對(duì)計(jì)算機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;所述虛擬寄存器,還保存有用于提供給計(jì)算機(jī)操作系統(tǒng)保護(hù)程序進(jìn)行校驗(yàn)的所述真實(shí)值。
本申請(qǐng)實(shí)施例采用的上述至少一個(gè)技術(shù)方案能夠達(dá)到以下有益效果:
由于對(duì)于不安全的目標(biāo)程序,可以直接屏蔽所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用,從而避免所述不安全的目標(biāo)程序通過(guò)的系統(tǒng)調(diào)用的方式,對(duì)計(jì)算機(jī)進(jìn)行的攻擊;而對(duì)于安全的目標(biāo)程序,可以根據(jù)模式專(zhuān)用寄存器中保存的用于指示防護(hù)程序驅(qū)動(dòng)所在位置的虛擬值,將所述程序所請(qǐng)求的系統(tǒng)調(diào)用發(fā)送至用于攔截系統(tǒng)調(diào)用的防護(hù)程序驅(qū)動(dòng),且虛擬寄存器中還保存有用于提供給計(jì)算機(jī)操作系統(tǒng)保護(hù)程序進(jìn)行校驗(yàn)的所述真實(shí)值,以使得計(jì)算機(jī)操作系統(tǒng)保護(hù)程序成功進(jìn)行校驗(yàn),而不會(huì)造成計(jì)算機(jī)藍(lán)屏,從而可以達(dá)到利用防護(hù)程序驅(qū)動(dòng)成功攔截程序的系統(tǒng)調(diào)用的目的。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1為本申請(qǐng)實(shí)施例提供的一種攔截系統(tǒng)調(diào)用的方法的具體流程示意圖;
圖2為本申請(qǐng)實(shí)施例提供的一種攔截系統(tǒng)調(diào)用的裝置的具體結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例。基于本申請(qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施 例,都屬于本申請(qǐng)保護(hù)的范圍。
以下結(jié)合附圖,詳細(xì)說(shuō)明本申請(qǐng)各實(shí)施例提供的技術(shù)方案。
實(shí)施例1
本申請(qǐng)實(shí)施例1提供了一種攔截系統(tǒng)調(diào)用的方法,用以解決由于計(jì)算機(jī)操作系統(tǒng)禁止攔截系統(tǒng)調(diào)用,而導(dǎo)致第三方安全軟件無(wú)法為用戶提供主動(dòng)防御的問(wèn)題。
本申請(qǐng)實(shí)施例提供的攔截系統(tǒng)調(diào)用方法的執(zhí)行主體,可以但不限于為平板電腦以及個(gè)人電腦(Personal Computer,PC)等終端設(shè)備中的至少一種。此外,該方法的執(zhí)行主體,也可以是終端設(shè)備上安裝的應(yīng)用程序。
為便于描述,下文以該方法的執(zhí)行主體為防護(hù)程序?yàn)槔?,?duì)該方法的實(shí)施方式進(jìn)行介紹。可以理解,該方法的執(zhí)行主體為防護(hù)程序只是一種示例性的說(shuō)明,并不應(yīng)理解為對(duì)該方法的限定。
該方法的具體實(shí)現(xiàn)流程示意圖如圖1所示,主要包括下述步驟:
步驟11,防護(hù)程序監(jiān)控其他程序?qū)ο到y(tǒng)調(diào)用接口的系統(tǒng)調(diào)用請(qǐng)求;
所述防護(hù)程序,可以為計(jì)算機(jī)提供病毒查殺、插件清理、漏洞修復(fù)、操作行為監(jiān)控、操作行為攔截、隱私數(shù)據(jù)保護(hù)、垃圾數(shù)據(jù)清理以及訪問(wèn)痕跡清理,等多種功能。
所述系統(tǒng)調(diào)用接口,為應(yīng)用程序與操作系統(tǒng)之間的接口。通過(guò)所述系統(tǒng)調(diào)用接口,將應(yīng)用程序所請(qǐng)求調(diào)用的功能可以發(fā)送至操作系統(tǒng),達(dá)到應(yīng)用程序調(diào)用操作系統(tǒng)功能的目的。
所述系統(tǒng)調(diào)用請(qǐng)求,為應(yīng)用程序?yàn)榱苏{(diào)用系統(tǒng)調(diào)用接口,而向所述系統(tǒng)調(diào)用接口發(fā)送的請(qǐng)求。
需要說(shuō)明的是,目前運(yùn)行在計(jì)算機(jī)中的程序有兩類(lèi),一類(lèi)是應(yīng)用程序,另一類(lèi)是系統(tǒng)程序。其中,應(yīng)用程序運(yùn)行在特權(quán)級(jí)最低的用戶模式,而系統(tǒng)程序運(yùn)行在特權(quán)級(jí)最高的內(nèi)核模式。由于用戶模式是特權(quán)級(jí)最低的運(yùn)行模式,因而 運(yùn)行在用戶模式下的應(yīng)用程序沒(méi)有權(quán)限管理各個(gè)進(jìn)程,且無(wú)法進(jìn)行某些操作(如,訪問(wèn)硬件設(shè)備或者無(wú)限制的訪問(wèn)系統(tǒng)存儲(chǔ),等等)。因此,運(yùn)行在用戶模式下的應(yīng)用程序往往需要通過(guò)系統(tǒng)調(diào)用的方式來(lái)調(diào)用操作系統(tǒng)的不同功能。
步驟11中所述的其他程序,一般是指運(yùn)行在用戶模式的、除防護(hù)程序以外的程序,如,安裝在計(jì)算機(jī)上的視頻播放程序、音樂(lè)播放程序以及聊天程序,等等。
一般地,用戶使用的計(jì)算機(jī)上可能存在有惡意程序(如,計(jì)算機(jī)病毒、后門(mén)程序、木馬、間諜軟件以及廣告軟件等),這些惡意程序往往也可以通過(guò)系統(tǒng)調(diào)用的方式,對(duì)用戶使用的計(jì)算機(jī)進(jìn)行攻擊。因此,對(duì)惡意程序的識(shí)別,是防護(hù)程序保護(hù)計(jì)算機(jī)不受攻擊的重要環(huán)節(jié),本申請(qǐng)實(shí)施例中,防護(hù)程序除了監(jiān)控所述的其他程序?qū)ο到y(tǒng)調(diào)用接口的系統(tǒng)調(diào)用請(qǐng)求,還需要判斷監(jiān)控到的對(duì)系統(tǒng)調(diào)用接口發(fā)送系統(tǒng)調(diào)用請(qǐng)求的程序(后文稱為目標(biāo)程序)是否為安全程序。
所述安全程序,是相對(duì)與惡意程序而言的,是指可以在計(jì)算機(jī)上安全運(yùn)行,且不會(huì)對(duì)計(jì)算機(jī)進(jìn)行攻擊的程序。
在一種實(shí)施方式中,本申請(qǐng)實(shí)施例可以通過(guò)以下兩種方式,判斷監(jiān)控到的對(duì)系統(tǒng)調(diào)用接口發(fā)送系統(tǒng)調(diào)用請(qǐng)求的目標(biāo)程序是否為安全程序:
方式1:根據(jù)所述目標(biāo)程序的特征碼,判斷所述目標(biāo)程序是否為安全程序。
比如,防護(hù)程序可以保存由已確定的惡意程序的特征碼構(gòu)成的惡意程序特征碼集,則防護(hù)程序可以將監(jiān)控到的所述目標(biāo)程序的特征碼與惡意程序特征碼集中的特征碼進(jìn)行比對(duì),當(dāng)所述惡意程序特征碼集中存在有所述目標(biāo)程序特征碼相同的特征碼時(shí),可以確定所述目標(biāo)程序?yàn)閻阂獬绦颍捶前踩绦颉?/p>
方式2:判斷所述目標(biāo)程序是否屬于預(yù)先設(shè)置的安全程序集,根據(jù)判斷結(jié)果確定所述目標(biāo)程序是否為安全程序。
比如,防護(hù)程序可以保存由已確定的安全程序的程序名稱(或者其他可以表示該程序的標(biāo)識(shí))構(gòu)成的安全程序集。其中,所述已確定的安全程序,可以是防護(hù)程序根據(jù)計(jì)算機(jī)程序的運(yùn)行日志確定的、已在計(jì)算機(jī)上安全運(yùn)行的應(yīng)用 程序,也可以為由用戶根據(jù)需要自行設(shè)置的應(yīng)用程序。
則防護(hù)程序可以將監(jiān)控到的所述目標(biāo)程序的名稱與安全程序集中的名稱進(jìn)行比對(duì),當(dāng)所述安全程序集中存在有所述目標(biāo)程序名稱相同的名稱時(shí),可以確定所述目標(biāo)程序?yàn)榘踩绦颉?/p>
步驟12,當(dāng)判斷結(jié)果為否時(shí),屏蔽所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用;
為了防止惡意程序通過(guò)系統(tǒng)調(diào)用的方式,對(duì)用戶使用的計(jì)算機(jī)進(jìn)行攻擊,在一種實(shí)施方式中,當(dāng)通過(guò)執(zhí)行步驟11,判斷出所述目標(biāo)程序不是安全程序時(shí),防護(hù)程序?qū)⑵帘嗡瞿繕?biāo)程序?qū)ο到y(tǒng)調(diào)用接口的系統(tǒng)調(diào)用請(qǐng)求,以達(dá)到屏蔽所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用的目的。
為了避免惡意程序通過(guò)其他方式對(duì)計(jì)算機(jī)進(jìn)行攻擊,在一種實(shí)施方式中,當(dāng)判斷出所述目標(biāo)程序?yàn)閻阂獬绦蚝?,防護(hù)程序可以對(duì)所述目標(biāo)程序進(jìn)行特定處理,具體的可以包括:確定所述目標(biāo)程序的類(lèi)型;在預(yù)先設(shè)置的處理方式集中,根據(jù)所述目標(biāo)程序的類(lèi)型,確定所述類(lèi)型所對(duì)應(yīng)的處理方式;其中,所述處理方式集中存儲(chǔ)有至少一種類(lèi)型的程序所對(duì)應(yīng)的處理方式;根據(jù)確定的處理方式,對(duì)所述目標(biāo)程序進(jìn)行處理。
需要說(shuō)明的是,所述防護(hù)程序保存有預(yù)先設(shè)置的處理方式集,其中所述處理方式集中存儲(chǔ)有不同類(lèi)型的惡意程序與不同處理方式之間的映射關(guān)系,以及不同的處理方式,以使得防護(hù)程序可以根據(jù)所述映射關(guān)系以及確定的惡意程序的類(lèi)型,在所述處理方式集中查找該類(lèi)型的惡意程序?qū)?yīng)的處理方式。
還需要說(shuō)明的是,對(duì)任意一種類(lèi)型的惡意程序,可以有一種處理方式,也可以有多種處理方式;而對(duì)不同類(lèi)型的惡意程序,其處理方式也可能是相同的。即,不同類(lèi)型的惡意程序與其處理方式的對(duì)應(yīng)關(guān)系可能是一對(duì)一的,也可能是一對(duì)多的,還可能是多對(duì)一。
在預(yù)先設(shè)置的處理方式集中查找到惡意程序所對(duì)應(yīng)的處理方式后,防護(hù)程序可以根據(jù)確定的處理方式,對(duì)所述目標(biāo)程序進(jìn)行處理。例如,可以根據(jù)確定的處理方式,對(duì)所述目標(biāo)程序中的惡意行為代碼進(jìn)行修改,以使得所述目標(biāo)程 序無(wú)法執(zhí)行所述惡意行為;或者防護(hù)程序可以根據(jù)確定的處理方式,發(fā)出所述目標(biāo)程序?yàn)閻阂獬绦虻木瘓?bào)信息,以使得用戶根據(jù)所述警報(bào)信息,對(duì)所述目標(biāo)程序進(jìn)行卸載,等等。
步驟13,當(dāng)判斷結(jié)果為是時(shí),向系統(tǒng)調(diào)用接口返回模式專(zhuān)用寄存器中保存的用于指示防護(hù)程序驅(qū)動(dòng)所在位置的虛擬值,并根據(jù)所述虛擬值,將所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用發(fā)送至防護(hù)程序驅(qū)動(dòng);
其中,所述虛擬值,是根據(jù)所述虛擬寄存器中保存的防護(hù)程序驅(qū)動(dòng)入口地址,對(duì)所述模式專(zhuān)用寄存器中保存的、與所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用對(duì)應(yīng)的真實(shí)值進(jìn)行修改而得到的。
所述模式專(zhuān)用寄存器中保存的、與所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用對(duì)應(yīng)的真實(shí)值,包括所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用在操作系統(tǒng)內(nèi)核中對(duì)應(yīng)的調(diào)用指令、所述目標(biāo)程序所需調(diào)用的計(jì)算機(jī)硬件(或程序)的驅(qū)動(dòng)地址以及所述目標(biāo)程序進(jìn)入內(nèi)核模式時(shí)采用的調(diào)用方式。需要說(shuō)明的是,本申請(qǐng)實(shí)施例中,防護(hù)程序?qū)λ稣鎸?shí)值的修改,一般是指對(duì)目標(biāo)程序所需調(diào)用的計(jì)算機(jī)硬件(或程序)的驅(qū)動(dòng)地址的修改。
所述虛擬寄存器,是對(duì)計(jì)算機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;具體的,可以是利用中央處理器(Central Processing Unit,CPU)的硬件虛擬化技術(shù)生成的。
其中,硬件虛擬化是指借助計(jì)算機(jī)硬件(主要是主機(jī)處理器)的支持來(lái)實(shí)現(xiàn)的全虛擬化。硬件虛擬化技術(shù)的具體原理為:允許物理機(jī)器(如,個(gè)人電腦、平板電腦等)被分區(qū)或共享,以使該機(jī)器的底層硬件呈現(xiàn)為一個(gè)或多個(gè)獨(dú)立工作的虛擬機(jī)。
一般地,當(dāng)應(yīng)用程序需要通過(guò)系統(tǒng)調(diào)用的方式對(duì)操作系統(tǒng)的相關(guān)功能進(jìn)行調(diào)用時(shí),該應(yīng)用程序首先需要對(duì)模式專(zhuān)用寄存器中保存的、所述應(yīng)用程序所請(qǐng)求的系統(tǒng)調(diào)用對(duì)應(yīng)的真實(shí)值進(jìn)行讀取,并將讀取到的真實(shí)值返回系統(tǒng)調(diào)用接口,以使得所述應(yīng)用程序根據(jù)所述真實(shí)值中包含的進(jìn)入內(nèi)核模式的調(diào)用方式, 進(jìn)入內(nèi)核模式,并通過(guò)系統(tǒng)調(diào)用接口,向所述真實(shí)值中包含的計(jì)算機(jī)硬件的驅(qū)動(dòng)地址發(fā)送調(diào)用指令,進(jìn)而達(dá)到將應(yīng)用程序所請(qǐng)求的系統(tǒng)調(diào)用發(fā)送至與所述真實(shí)值對(duì)應(yīng)的計(jì)算機(jī)硬件(或程序)驅(qū)動(dòng)進(jìn)行執(zhí)行的目的。
為了達(dá)到攔截所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用的目的,在一種實(shí)施方式中,防護(hù)程序可以通過(guò)對(duì)模式專(zhuān)用寄存器中保存的真實(shí)值的修改,進(jìn)而將所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用發(fā)送至、與修改后的真實(shí)值對(duì)應(yīng)的計(jì)算機(jī)硬件(或程序)驅(qū)動(dòng),從而達(dá)到攔截所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用的目的。
具體的,防護(hù)程序可以根據(jù)所述虛擬寄存器中保存的所述防護(hù)程序驅(qū)動(dòng)入口地址,對(duì)所述模式專(zhuān)用寄存器中保存的真實(shí)值進(jìn)行修改,具體修改方式為:將真實(shí)值中的目標(biāo)程序所需調(diào)用的計(jì)算機(jī)硬件(或程序)的驅(qū)動(dòng)地址替換為防護(hù)程序驅(qū)動(dòng)入口地址的虛擬值。在這種情況下,當(dāng)應(yīng)用程序需要通過(guò)系統(tǒng)調(diào)用的方式對(duì)操作系統(tǒng)的相關(guān)功能進(jìn)行調(diào)用時(shí),該應(yīng)用程序?qū)乃瞿J綄?zhuān)用寄存器中讀取到虛擬值,并將讀取到的虛擬值返回系統(tǒng)調(diào)用接口,以使得所述應(yīng)用程序根據(jù)所述虛擬值中包含的進(jìn)入內(nèi)核模式的調(diào)用方式,進(jìn)入內(nèi)核模式,并通過(guò)系統(tǒng)調(diào)用接口,根據(jù)所述虛擬值中包含的防護(hù)程序驅(qū)動(dòng)入口地址,將所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用發(fā)送至防護(hù)程序驅(qū)動(dòng),進(jìn)而達(dá)到將目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用攔截至防護(hù)程序驅(qū)動(dòng)的目的。
通過(guò)上述方法,所有被防護(hù)程序確定為安全程序的目標(biāo)程序,在對(duì)系統(tǒng)調(diào)用接口發(fā)送系統(tǒng)調(diào)用請(qǐng)求時(shí),所請(qǐng)求的系統(tǒng)調(diào)用,都會(huì)被轉(zhuǎn)移至防護(hù)程序驅(qū)動(dòng),達(dá)到防護(hù)程序?qū)ζ渌绦蛳到y(tǒng)調(diào)用的目的,從而可以通過(guò)防御程序?yàn)橛?jì)算機(jī)提供主動(dòng)防御功能。
然而,一些計(jì)算機(jī)操作系統(tǒng)開(kāi)發(fā)商為了避免第三方應(yīng)用程序?qū)Σ僮飨到y(tǒng)內(nèi)核代碼與關(guān)鍵數(shù)據(jù)的修改,在其開(kāi)發(fā)的操作系統(tǒng)中引入了計(jì)算機(jī)操作系統(tǒng)保護(hù)程序。
例如,以64位Windows操作系統(tǒng)自帶的內(nèi)核保護(hù)程序PatchGuard程序?yàn)槔?,?jì)算機(jī)操作系統(tǒng)中的PatchGuard程序會(huì)請(qǐng)求讀取模式專(zhuān)用寄存器中保存的 數(shù)據(jù),當(dāng)PatchGuard程序接收到模式專(zhuān)用寄存器返回的、由防護(hù)程序修改得到的虛擬值時(shí),會(huì)造成計(jì)算機(jī)藍(lán)屏。
為了避免由于防護(hù)程序?qū)δJ綄?zhuān)用寄存器中保存的數(shù)據(jù)的修改,而造成計(jì)算機(jī)藍(lán)屏的問(wèn)題,在一種實(shí)施方式中,所述虛擬寄存器還保存有用于提供給計(jì)算機(jī)操作系統(tǒng)保護(hù)程序進(jìn)行校驗(yàn)的所述真實(shí)值,則本申請(qǐng)實(shí)施例提供的方法還可以包括:響應(yīng)于計(jì)算機(jī)操作系統(tǒng)保護(hù)程序發(fā)送的校驗(yàn)請(qǐng)求,返回所述虛擬寄存器中保存的所述真實(shí)值,并攔截所述模式專(zhuān)用寄存器返回的所述虛擬值。
本申請(qǐng)實(shí)施例中,響應(yīng)于PatchGuad程序的校驗(yàn)請(qǐng)求,防護(hù)程序攔截所述模式專(zhuān)用寄存器返回的虛擬值,同時(shí)讀取虛擬寄存器中保存的真實(shí)值,并向PatchGuad程序返回讀取到的真實(shí)值,以使得PatchGuard程序的校驗(yàn)可以正常通過(guò),從而避免了計(jì)算機(jī)藍(lán)屏的問(wèn)題。
需要說(shuō)明的是,僅通過(guò)應(yīng)用程序的特征碼或者預(yù)先設(shè)置的安全程序集,防護(hù)程序有可能將惡意程序誤判為安全程序,例如,黑客可以對(duì)惡意程序的特征碼進(jìn)行修改,以使得防護(hù)程序無(wú)法根據(jù)特征碼將該程序確定為惡意程序;或者,預(yù)先設(shè)置的安全程序集中的某個(gè)應(yīng)用程序中了病毒,此時(shí)當(dāng)防護(hù)程序監(jiān)控到該應(yīng)用程序?qū)ο到y(tǒng)調(diào)用接口發(fā)送系統(tǒng)調(diào)用請(qǐng)求,根據(jù)預(yù)先設(shè)置的安全程序集,防護(hù)程序會(huì)將該應(yīng)用程序確定為安全程序,等等。
在防護(hù)程序確定目標(biāo)程序?yàn)榘踩绦蚝?,為了避免由于上述情況,而使計(jì)算機(jī)遭受到該目標(biāo)程序通過(guò)系統(tǒng)調(diào)用方式發(fā)動(dòng)的攻擊,在一種實(shí)施方式中,當(dāng)防護(hù)程序判斷目標(biāo)程序?yàn)榘踩绦?,并將所述目?biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用發(fā)送至防護(hù)程序驅(qū)動(dòng)后,本申請(qǐng)實(shí)施例提供的方法還包括:對(duì)所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用是否安全進(jìn)行判斷,得到判斷結(jié)果;當(dāng)所述判斷結(jié)果為不安全時(shí),屏蔽所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用;當(dāng)所述判斷結(jié)果為安全時(shí),執(zhí)行所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用。
一般地,計(jì)算機(jī)操作系統(tǒng)中往往保存有應(yīng)用程序的“規(guī)范行為庫(kù)”,所述“規(guī)范行為庫(kù)”中保存有各應(yīng)用程序的規(guī)范行為,應(yīng)用程序的規(guī)范行為包括應(yīng) 用程序正常運(yùn)行時(shí)可能出現(xiàn)的所有系統(tǒng)調(diào)用,這些規(guī)范的系統(tǒng)調(diào)用可以通過(guò)分析,如人工分析、軟件二進(jìn)制逆向分析、軟件行為記錄并基于神經(jīng)網(wǎng)絡(luò)等算法的訓(xùn)練和學(xué)習(xí)等方式確定。
則當(dāng)所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用(后文稱實(shí)時(shí)系統(tǒng)調(diào)用)發(fā)送至防護(hù)程序驅(qū)動(dòng)時(shí),防護(hù)程序驅(qū)動(dòng)首先會(huì)從應(yīng)用程序規(guī)范行為庫(kù)中查找到所述目標(biāo)程序,再找到所述目標(biāo)程序?qū)?yīng)的規(guī)范系統(tǒng)調(diào)用集合,比較所述實(shí)時(shí)系統(tǒng)調(diào)用是否屬于規(guī)范系統(tǒng)調(diào)用集合,若不屬于,則說(shuō)明所述實(shí)時(shí)系統(tǒng)調(diào)用可能會(huì)有潛在的危險(xiǎn),從而確定所述目標(biāo)程序可能出現(xiàn)異常,進(jìn)而可以屏蔽所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用。
若所述實(shí)時(shí)系統(tǒng)調(diào)用屬于規(guī)范系統(tǒng)調(diào)用集合,則說(shuō)明所述實(shí)時(shí)系統(tǒng)調(diào)用為規(guī)范的系統(tǒng)調(diào)用,此時(shí),可以通過(guò)防護(hù)程序驅(qū)動(dòng)執(zhí)行所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用。通過(guò)防護(hù)程序驅(qū)動(dòng)執(zhí)行所述系統(tǒng)調(diào)用,具體可以包括:利用CPU的硬件虛擬化技術(shù)生成虛擬代碼集寄存器,并將用于執(zhí)行系統(tǒng)調(diào)用的代碼集寫(xiě)入所述虛擬代碼集寄存器,以使得防護(hù)程序驅(qū)動(dòng)可以通過(guò)對(duì)虛擬代碼集寄存器的讀取,獲取所述代碼集,并通過(guò)所述代碼集執(zhí)行所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用。
采用本申請(qǐng)實(shí)施例1提供的方法,由于對(duì)于不安全的目標(biāo)程序,可以直接屏蔽所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用,從而避免所述不安全的目標(biāo)程序通過(guò)的系統(tǒng)調(diào)用的方式,對(duì)計(jì)算機(jī)進(jìn)行的攻擊;而對(duì)于安全的目標(biāo)程序,可以根據(jù)模式專(zhuān)用寄存器中保存的用于指示防護(hù)程序驅(qū)動(dòng)所在位置的虛擬值,將所述程序所請(qǐng)求的系統(tǒng)調(diào)用發(fā)送至用于攔截系統(tǒng)調(diào)用的防護(hù)程序驅(qū)動(dòng),且虛擬寄存器中還保存有用于提供給計(jì)算機(jī)操作系統(tǒng)保護(hù)程序進(jìn)行校驗(yàn)的所述真實(shí)值,以使得計(jì)算機(jī)操作系統(tǒng)保護(hù)程序成功進(jìn)行校驗(yàn),而不會(huì)造成計(jì)算機(jī)藍(lán)屏,從而可以達(dá)到利用防護(hù)程序驅(qū)動(dòng)成功攔截程序的系統(tǒng)調(diào)用的目的。
實(shí)施例2
本申請(qǐng)實(shí)施例1提供了一種攔截系統(tǒng)調(diào)用的裝置,用以解決由于計(jì)算機(jī)操作系統(tǒng)禁止攔截系統(tǒng)調(diào)用,而導(dǎo)致第三方安全軟件無(wú)法為用戶提供主動(dòng)防御的問(wèn)題。該裝置的具體結(jié)構(gòu)示意圖如圖2所示,包括:系統(tǒng)調(diào)用監(jiān)控單元21、系統(tǒng)調(diào)用屏蔽單元22以及系統(tǒng)調(diào)用攔截單元23。
其中,系統(tǒng)調(diào)用監(jiān)控單元21,用于監(jiān)控程序?qū)ο到y(tǒng)調(diào)用接口的系統(tǒng)調(diào)用請(qǐng)求,并判斷監(jiān)控到的對(duì)系統(tǒng)調(diào)用接口發(fā)送系統(tǒng)調(diào)用請(qǐng)求的目標(biāo)程序是否為安全程序;
系統(tǒng)調(diào)用屏蔽單元22,用于當(dāng)判斷結(jié)果為否時(shí),屏蔽所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用;
系統(tǒng)調(diào)用攔截單元23,用于當(dāng)判斷結(jié)果為是時(shí),向系統(tǒng)調(diào)用接口返回模式專(zhuān)用寄存器中保存的用于指示防護(hù)程序驅(qū)動(dòng)所在位置的虛擬值,并根據(jù)所述虛擬值,將所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用發(fā)送至防護(hù)程序驅(qū)動(dòng);所述虛擬值,是根據(jù)虛擬寄存器中保存的防護(hù)程序驅(qū)動(dòng)入口地址,對(duì)所述模式專(zhuān)用寄存器中保存的、與所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用對(duì)應(yīng)的真實(shí)值進(jìn)行修改而得到的;所述虛擬寄存器是對(duì)計(jì)算機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;所述虛擬寄存器,還保存有用于提供給計(jì)算機(jī)操作系統(tǒng)保護(hù)程序進(jìn)行校驗(yàn)的所述真實(shí)值。
在一種實(shí)施方式中,系統(tǒng)調(diào)用監(jiān)控單元21,用于根據(jù)所述目標(biāo)程序的特征碼,判斷所述目標(biāo)程序是否為安全程序;或判斷所述目標(biāo)程序是否屬于預(yù)先設(shè)置的安全程序集,根據(jù)判斷結(jié)果確定所述目標(biāo)程序是否為安全程序。
在一種實(shí)施方式中,還包括校驗(yàn)單元,用于響應(yīng)于計(jì)算機(jī)操作系統(tǒng)保護(hù)程序發(fā)送的校驗(yàn)請(qǐng)求,返回所述虛擬寄存器中保存的所述真實(shí)值,并攔截所述模式專(zhuān)用寄存器返回的所述虛擬值。
在一種實(shí)施方式中,還包括不安全程序處理單元,用于當(dāng)系統(tǒng)調(diào)用監(jiān)控單元對(duì)目標(biāo)程序的當(dāng)判斷結(jié)果為否時(shí),確定所述目標(biāo)程序的類(lèi)型;在預(yù)先設(shè)置的處理方式集中,根據(jù)所述目標(biāo)程序的類(lèi)型,確定所述類(lèi)型所對(duì)應(yīng)的處理方式;其中,所述處理方式集中存儲(chǔ)有至少一種類(lèi)型的程序所對(duì)應(yīng)的處理方式;根據(jù) 確定的處理方式,對(duì)所述目標(biāo)程序進(jìn)行處理。
在一種實(shí)施方式中,還包括系統(tǒng)調(diào)用安全判定單元,用于當(dāng)系統(tǒng)調(diào)用攔截單元將所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用發(fā)送至防護(hù)程序驅(qū)動(dòng)后,對(duì)所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用是否安全進(jìn)行判斷,得到判斷結(jié)果;當(dāng)所述判斷結(jié)果為不安全時(shí),屏蔽所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用;當(dāng)所述判斷結(jié)果為安全時(shí),執(zhí)行所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用。
采用本申請(qǐng)實(shí)施例2提供的方法,由于對(duì)于不安全的目標(biāo)程序,可以直接屏蔽所述目標(biāo)程序所請(qǐng)求的系統(tǒng)調(diào)用,從而避免所述不安全的目標(biāo)程序通過(guò)的系統(tǒng)調(diào)用的方式,對(duì)計(jì)算機(jī)進(jìn)行的攻擊;而對(duì)于安全的目標(biāo)程序,可以根據(jù)模式專(zhuān)用寄存器中保存的用于指示防護(hù)程序驅(qū)動(dòng)所在位置的虛擬值,將所述程序所請(qǐng)求的系統(tǒng)調(diào)用發(fā)送至用于攔截系統(tǒng)調(diào)用的防護(hù)程序驅(qū)動(dòng),且虛擬寄存器中還保存有用于提供給計(jì)算機(jī)操作系統(tǒng)保護(hù)程序進(jìn)行校驗(yàn)的所述真實(shí)值,以使得計(jì)算機(jī)操作系統(tǒng)保護(hù)程序成功進(jìn)行校驗(yàn),而不會(huì)造成計(jì)算機(jī)藍(lán)屏,從而可以達(dá)到利用防護(hù)程序驅(qū)動(dòng)成功攔截程序的系統(tǒng)調(diào)用的目的。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使 得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類(lèi)型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(pán)(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
還需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和 硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。