一種攔截系統(tǒng)調(diào)用的方法和裝置制造方法
【專利摘要】本發(fā)明公開(kāi)了一種攔截系統(tǒng)調(diào)用的方法和裝置,其中,所述方法包括:接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作,并在本機(jī)專用寄存器中生成與所述Patch操作相對(duì)應(yīng)的真實(shí)值;響應(yīng)本機(jī)操作系統(tǒng)向所述本機(jī)專用寄存器發(fā)起的檢測(cè)請(qǐng)求,將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),以攔截所述本機(jī)專用寄存器待返回的所述真實(shí)值;通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用。通過(guò)本發(fā)明解決了第三方主動(dòng)防御軟件不能對(duì)操作系統(tǒng)進(jìn)行Patch操作,導(dǎo)致第三方主動(dòng)防御軟件無(wú)法對(duì)Windows的行為進(jìn)行監(jiān)控,給用戶計(jì)算機(jī)系統(tǒng)帶來(lái)安全隱患的問(wèn)題。
【專利說(shuō)明】一種攔截系統(tǒng)調(diào)用的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體涉及一種攔截系統(tǒng)調(diào)用的方法和裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的不斷發(fā)展,越來(lái)越多的惡意程序(如計(jì)算機(jī)病毒、后門(mén)程序、木馬、間諜軟件以及廣告軟件等)攻擊著用戶使用的終端設(shè)備。為了保護(hù)用戶的計(jì)算機(jī)不受惡意程序的侵害,許多第三方公司推出了主動(dòng)防御軟件。主動(dòng)防御是基于程序行為自主分析判斷的實(shí)時(shí)防護(hù)技術(shù),不以特征碼作為判斷惡意程序的依據(jù),而是從最原始的定義出發(fā),直接將程序的行為作為判斷惡意程序的依據(jù)。主動(dòng)防御軟件首先對(duì)惡意程序進(jìn)行行為攔截,然后進(jìn)行相應(yīng)處理。其中,程序行為的攔截就是主動(dòng)防御的重要第一步,很多惡意程序?qū)怪鲃?dòng)防御的方式也是干擾或繞過(guò)行為攔截。
[0003]以在計(jì)算機(jī)中使用的微軟Windows平臺(tái)為例,第三方主動(dòng)防御軟件在進(jìn)行行為攔截時(shí),除了使用微軟的標(biāo)準(zhǔn)接口外,更多的需要對(duì)操作系統(tǒng)進(jìn)行修改(Patch)操作,從而對(duì)操作系統(tǒng)執(zhí)行的可疑程序進(jìn)行有效的行為攔截。其中,Patch操作是指:第三方主動(dòng)防御軟件通過(guò)操作系統(tǒng)調(diào)用將用戶模式(User/Normal)切換成內(nèi)核模式(Kernel/Privileged),在內(nèi)核模式下獲取操作系統(tǒng)內(nèi)核代碼和關(guān)鍵數(shù)據(jù),進(jìn)而對(duì)操作系統(tǒng)內(nèi)核代碼和關(guān)鍵數(shù)據(jù)進(jìn)行修改,實(shí)現(xiàn)行為攔截。
[0004]然而,微軟在其64位Windows操作系統(tǒng)中引入了內(nèi)核保護(hù)系統(tǒng)禁止修改(PatchGuard)機(jī)制,當(dāng)Patch Guard檢測(cè)到內(nèi)核數(shù)據(jù)被修改時(shí)會(huì)藍(lán)屏,從而禁止了任何非授權(quán)的第三方主動(dòng)防御軟件Patch操作系統(tǒng)內(nèi)核代碼與關(guān)鍵數(shù)據(jù)。微軟設(shè)計(jì)Patch Guard的目的是確保Windows內(nèi)核不會(huì)受到惡意代碼的攻擊,然而卻也導(dǎo)致了第三方主動(dòng)防御軟件無(wú)法對(duì)Windows的行為進(jìn)行監(jiān)控,所以這一功能使得保護(hù)Windows計(jì)算機(jī)的安全帶來(lái)了困難,給用戶計(jì)算機(jī)系統(tǒng)帶來(lái)了很大的安全隱患。
【發(fā)明內(nèi)容】
[0005]鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的一種攔截系統(tǒng)調(diào)用的方法和相應(yīng)的一種攔截系統(tǒng)調(diào)用的裝置。
[0006]依據(jù)本發(fā)明的一個(gè)方面,提供了一種攔截系統(tǒng)調(diào)用的方法,應(yīng)用于支持硬件虛擬化的CPU,所述方法包括:接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作,并在本機(jī)專用寄存器中生成與所述Patch操作相對(duì)應(yīng)的真實(shí)值;
[0007]響應(yīng)本機(jī)操作系統(tǒng)向所述本機(jī)專用寄存器發(fā)起的檢測(cè)請(qǐng)求,將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),以攔截所述本機(jī)專用寄存器待返回的所述真實(shí)值;
[0008]通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用;
[0009]其中,所述虛擬寄存器通過(guò)對(duì)所述本機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;所述虛擬值是在所述接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作步驟之前,所述專用寄存器中生成的與所述本機(jī)操作系統(tǒng)的系統(tǒng)調(diào)用對(duì)應(yīng)的初始值。[0010]可選地,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作包括:將驅(qū)動(dòng)入口地址寫(xiě)入所述虛擬寄存器中;
[0011]所述通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用,包括:
[0012]當(dāng)通過(guò)返回的所述虛擬值確定所述對(duì)本機(jī)操作系統(tǒng)的Patch操作為合法操作時(shí),則
[0013]響應(yīng)系統(tǒng)調(diào)用接口接收到的應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求,并向所述系統(tǒng)調(diào)用接口返回所述虛擬寄存器中的所述驅(qū)動(dòng)入口地址;其中,所述系統(tǒng)調(diào)用請(qǐng)求用于請(qǐng)求待執(zhí)行的系統(tǒng)調(diào)用;
[0014]將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述驅(qū)動(dòng)入口地址所指示的驅(qū)動(dòng);
[0015]通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用。
[0016]可選地,所述驅(qū)動(dòng)入口地址包括主動(dòng)防御驅(qū)動(dòng)地址,所述主動(dòng)防御驅(qū)動(dòng)地址指示主動(dòng)防御驅(qū)動(dòng)所在的位置;
[0017]所述將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述驅(qū)動(dòng)入口地址所指示的驅(qū)動(dòng),包括:
[0018]將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述主動(dòng)防御驅(qū)動(dòng)地址所指示的主動(dòng)防御驅(qū)動(dòng)。
[0019]可選地,所述通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用包括:
[0020]通過(guò)所述主動(dòng)防御驅(qū)動(dòng)對(duì)所述待執(zhí)行的系統(tǒng)調(diào)用進(jìn)行安全判斷,得到判斷結(jié)果;其中,所述待執(zhí)行的系統(tǒng)調(diào)用包括:執(zhí)行本機(jī)操作系統(tǒng)內(nèi)核提供的服務(wù)和執(zhí)行所述本機(jī)操作系統(tǒng)環(huán)境由用戶態(tài)切換到內(nèi)核態(tài)的操作;
[0021]當(dāng)所述安全判斷結(jié)果為不安全時(shí),通過(guò)所述主動(dòng)防御驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用。
[0022]可選地,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:將執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用的代碼集寫(xiě)入所述虛擬寄存器中;
[0023]在所述得到判斷結(jié)果步驟之后,所述通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用還包括:
[0024]當(dāng)所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬寄存器中的代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
[0025]可選地,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:生成虛擬代碼集寄存器,并將虛擬代碼集寫(xiě)入所述虛擬代碼集寄存器中;其中,所述待執(zhí)行的系統(tǒng)調(diào)用通過(guò)所述虛擬代碼集執(zhí)行;
[0026]在所述得到判斷結(jié)果步驟之后,所述通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用還包括:
[0027]當(dāng)所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
[0028]可選地,所述主動(dòng)防御驅(qū)動(dòng)為第三方主動(dòng)防御軟件的驅(qū)動(dòng)。
[0029]可選地,所述本機(jī)操作系統(tǒng)包括64位Windows操作系統(tǒng)。
[0030]根據(jù)本發(fā)明的另一方面,提供了一種攔截系統(tǒng)調(diào)用的裝置,應(yīng)用于支持硬件虛擬化的CPU,所述裝置包括:
[0031]接受模塊,用于接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作,并在本機(jī)專用寄存器中生成與所述Patch操作相對(duì)應(yīng)的真實(shí)值;
[0032]虛擬值返回模塊,用于響應(yīng)本機(jī)操作系統(tǒng)向所述本機(jī)專用寄存器發(fā)起的檢測(cè)請(qǐng)求,將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),以攔截所述本機(jī)專用寄存器待返回的所述真實(shí)值;
[0033]攔截模塊,用于通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用;
[0034]其中,所述虛擬寄存器通過(guò)對(duì)所述本機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;所述虛擬值是在所述接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作步驟之前,所述專用寄存器中生成的與所述本機(jī)操作系統(tǒng)的系統(tǒng)調(diào)用對(duì)應(yīng)的初始值。
[0035]可選地,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作包括:將驅(qū)動(dòng)入口地址寫(xiě)入所述虛擬寄存器中;
[0036]所述攔截模塊包括:
[0037]地址返回模塊,用于在通過(guò)返回的所述虛擬值確定所述對(duì)本機(jī)操作系統(tǒng)的Patch操作為合法操作時(shí),響應(yīng)系統(tǒng)調(diào)用接口接收到的應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求,并向所述系統(tǒng)調(diào)用接口返回所述虛擬寄存器中的所述驅(qū)動(dòng)入口地址;其中,所述系統(tǒng)調(diào)用請(qǐng)求用于請(qǐng)求待執(zhí)行的系統(tǒng)調(diào)用;
[0038]發(fā)送模塊,用于將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述驅(qū)動(dòng)入口地址所指示的驅(qū)動(dòng);
[0039]驅(qū)動(dòng)攔截模塊,用于通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用。
[0040]可選地,所述驅(qū)動(dòng)入口地址包括主動(dòng)防御驅(qū)動(dòng)地址,所述主動(dòng)防御驅(qū)動(dòng)地址指示主動(dòng)防御驅(qū)動(dòng)所在的位置;
[0041]所述發(fā)送模塊,用于將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述主動(dòng)防御驅(qū)動(dòng)地址所指示的主動(dòng)防御驅(qū)動(dòng)。
[0042]可選地,所述驅(qū)動(dòng)攔截模塊包括:
[0043]安全判斷模塊,用于通過(guò)所述主動(dòng)防御驅(qū)動(dòng)對(duì)所述待執(zhí)行的系統(tǒng)調(diào)用進(jìn)行安全判斷,得到判斷結(jié)果;其中,所述待執(zhí)行的系統(tǒng)調(diào)用包括:執(zhí)行本機(jī)操作系統(tǒng)內(nèi)核提供的服務(wù)和執(zhí)行所述本機(jī)操作系統(tǒng)環(huán)境由用戶態(tài)切換到內(nèi)核態(tài)的操作;
[0044]主動(dòng)防御驅(qū)動(dòng)攔截模塊,用于在所述安全判斷結(jié)果為不安全時(shí),通過(guò)所述主動(dòng)防御驅(qū)動(dòng)攔截所述系統(tǒng)調(diào)用。
[0045]可選地,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:將執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用的代碼集寫(xiě)入所述虛擬寄存器中;
[0046]所述驅(qū)動(dòng)攔截模塊還包括:
[0047]第一執(zhí)行模塊,用于在所述安全判斷模塊得到判斷結(jié)果之后,在所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬寄存器中的代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
[0048]可選地,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:生成虛擬代碼集寄存器,并將虛擬代碼集寫(xiě)入所述虛擬代碼集寄存器中;其中,所述待執(zhí)行的系統(tǒng)調(diào)用通過(guò)所述虛擬代碼集執(zhí)行;
[0049]所述驅(qū)動(dòng)攔截模塊還包括:[0050]第二執(zhí)行模塊,用于在所述安全判斷模塊得到判斷結(jié)果之后,在所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
[0051]可選地,所述主動(dòng)防御驅(qū)動(dòng)為第三方主動(dòng)防御軟件的驅(qū)動(dòng)。
[0052]可選地,所述本機(jī)操作系統(tǒng)包括64位Windows操作系統(tǒng)。
[0053]本發(fā)明提供的一種攔截系統(tǒng)調(diào)用的方法和裝置,應(yīng)用于支持硬件虛擬化的CPU,通過(guò)將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),使得Patch Guard檢測(cè)可以通過(guò),避免了藍(lán)屏。從而實(shí)現(xiàn)了利用第三方主動(dòng)防御軟件對(duì)Windows平臺(tái)(特別是無(wú)法修改內(nèi)核的64位乃至更高位)進(jìn)行Patch操作,第三方主動(dòng)防御軟件通過(guò)對(duì)操作系統(tǒng)的Patch操作,進(jìn)而可以在64位Windows平臺(tái)上對(duì)系統(tǒng)調(diào)用進(jìn)行攔截,提供完整的主動(dòng)防御功能,為用戶計(jì)算機(jī)系統(tǒng)解決了現(xiàn)有的安全隱患問(wèn)題,提高了安全性能。
[0054]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【專利附圖】
【附圖說(shuō)明】
[0055]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0056]圖1是本發(fā)明第一實(shí)施例中一種攔截系統(tǒng)調(diào)用的方法的流程圖;
[0057]圖2是本發(fā)明第二實(shí)施例中一種攔截系統(tǒng)調(diào)用的方法的流程圖;
[0058]圖3是本發(fā)明第三實(shí)施例中一種攔截系統(tǒng)調(diào)用的裝置的結(jié)構(gòu)框圖;
[0059]圖4是本發(fā)明第四實(shí)施例中一種攔截系統(tǒng)調(diào)用的裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0060]下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0061]參照?qǐng)D1,示出了本發(fā)明第一實(shí)施例中一種攔截系統(tǒng)調(diào)用的方法的流程圖。
[0062]在本發(fā)明實(shí)施例中,所述攔截系統(tǒng)調(diào)用的方法應(yīng)用于支持硬件虛擬化的CPU。本發(fā)明所述的方法利用CPU (Central Processing Unit,中央處理器)(例如Intel或AMD)的硬件虛擬化來(lái)擴(kuò)展支持,實(shí)現(xiàn)在64位甚至更高位的Windows平臺(tái)上實(shí)現(xiàn)完整的行為攔截。其中,硬件虛擬化是指借助硬件(主要是主機(jī)處理器)的支持來(lái)實(shí)現(xiàn)高效的全虛擬化。例如有了 Intel-VT 技術(shù)的支持,Guest OS 和虛擬機(jī) VMM (VMM Virtual Machine Monitor,虛擬機(jī))的執(zhí)行環(huán)境自動(dòng)地完全隔離開(kāi)來(lái),Guest OS有自己的寄存器,可以直接運(yùn)行在最高級(jí)另IJ。硬件虛擬化能夠具有獨(dú)立的操作平臺(tái),實(shí)現(xiàn)對(duì)不安全行為的攔截及處理。虛擬化技術(shù)的具體原理為:
[0063]虛擬化技術(shù)允許物理機(jī)器(例如服務(wù)器、PC (Personal Computer,個(gè)人電腦)機(jī)、平板電腦等)被分區(qū)或共享,以使該機(jī)器的底層硬件呈現(xiàn)為一個(gè)或多個(gè)獨(dú)立工作的虛擬機(jī)。虛擬機(jī)監(jiān)控程序可在計(jì)算機(jī)上運(yùn)行,并向其他軟件呈現(xiàn)一個(gè)或多個(gè)虛擬機(jī)的抽象。每個(gè)虛擬機(jī)可用作運(yùn)行其自己的操作系統(tǒng)(Operating System,OS)和/或應(yīng)用程序軟件的自持平臺(tái)。虛擬機(jī)內(nèi)執(zhí)行的軟件執(zhí)行可以被稱為客戶軟件??蛻糗浖善谕缤趯S糜?jì)算機(jī)上而不是在VM (Virtual Machine,虛擬機(jī))上運(yùn)行,此時(shí),VMM和Guest OS共享底層的處理器資源。即,客戶軟件可期望控制各種事件,并可訪問(wèn)計(jì)算機(jī)(例如物理機(jī))上的硬件資源。該物理機(jī)器的硬件資源可包括一個(gè)或多個(gè)處理器、駐留在該處理器上的資源(例如控制寄存器、高速緩存以及其他)、存儲(chǔ)器(以及諸如描述符表的駐留在存儲(chǔ)器內(nèi)的結(jié)構(gòu))以及駐留在物理機(jī)中的其他資源(例如輸入一輸出(I/O)設(shè)備)。
[0064]在本發(fā)明實(shí)施例中,所述攔截系統(tǒng)調(diào)用的方法應(yīng)用于支持硬件虛擬化的CPU,所述方法可以包括:
[0065]步驟102,接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作,并在本機(jī)專用寄存器中生成與所述Patch操作相對(duì)應(yīng)的真實(shí)值。
[0066]目前,大多數(shù)微處理器都支持兩種模式:用戶模式(User/Normal)和內(nèi)核模式(Kernel/Privileged)。操作系統(tǒng)內(nèi)核代碼和關(guān)鍵數(shù)據(jù)都處于內(nèi)核模式,而一般用戶模式的程序只能訪問(wèn)私有地址空間和執(zhí)行非特權(quán)等級(jí)的指令。對(duì)于每個(gè)操作系統(tǒng)從應(yīng)用層到操作系統(tǒng)層,內(nèi)核模式擁有各種管理系統(tǒng)的權(quán)限,應(yīng)用層沒(méi)有權(quán)限管理各個(gè)進(jìn)程,應(yīng)用程序需通過(guò)系統(tǒng)調(diào)用等方式才能從系統(tǒng)內(nèi)核中調(diào)用不同的系統(tǒng)功能。不同的系統(tǒng)根據(jù)CPU類(lèi)型,采用不同的調(diào)用方式和調(diào)用指令。在具體實(shí)現(xiàn)時(shí),可以在操作系統(tǒng)中設(shè)置一個(gè)模式專用寄存器,所述模式專用寄存器中存儲(chǔ)有不同操作系統(tǒng)進(jìn)入內(nèi)核模式時(shí)分別采用的調(diào)用方式和調(diào)用指令。應(yīng)用程序可以通過(guò)所述模式專用寄存器中存儲(chǔ)的數(shù)據(jù)直接進(jìn)入到內(nèi)核模式,如果第三方主動(dòng)防御軟件要完成對(duì)所述應(yīng)用程序的監(jiān)控和行為攔截,則需要對(duì)本機(jī)操作系統(tǒng)進(jìn)行Patch操作。
[0067]例如:在64位Windows操作系統(tǒng)中具有一個(gè)操作系統(tǒng)調(diào)用接口(System call),所述操作系統(tǒng)服務(wù)調(diào)用接口定義了 Windows內(nèi)核提供的大量服務(wù),并且提供了操作系統(tǒng)環(huán)境由用戶模式切換到內(nèi)核模式的功能。在系統(tǒng)服務(wù)調(diào)度表中的每一項(xiàng)包含了一個(gè)指向系統(tǒng)服務(wù)程序的指針,Hook時(shí)修改這個(gè)指針使其指向自定義的系統(tǒng)服務(wù)的地址。ParameterTable是在系統(tǒng)調(diào)用過(guò)程中傳遞的參數(shù),系統(tǒng)服務(wù)調(diào)用程序Ki System Service嚴(yán)格校驗(yàn)傳遞的每一個(gè)參數(shù),并將其參數(shù)從線程的用戶堆棧中復(fù)制到系統(tǒng)的核心堆棧以備使用。應(yīng)用程序可以通過(guò)所述操作系統(tǒng)調(diào)用接口進(jìn)入內(nèi)核模式,調(diào)用內(nèi)核中的系統(tǒng)功能。所述操作系統(tǒng)調(diào)用接口中的函數(shù)值、和/或參數(shù)值、和/或指令程序可以保存在64位Windows系統(tǒng)下的LSTAR模式專用寄存器中。第三方主動(dòng)防御軟件對(duì)所述應(yīng)用程序進(jìn)行行為攔截時(shí),對(duì)本機(jī)操作系統(tǒng)進(jìn)行Patch操作,修改LSTAR模式專用寄存器中存儲(chǔ)的數(shù)據(jù)的值。同時(shí),專用寄存器可以根據(jù)修改后的數(shù)據(jù)的值生成用于進(jìn)行Patch Guard校驗(yàn)的真實(shí)值;所述真實(shí)值可以是根據(jù)修改后的數(shù)據(jù)的值生成的哈希值、或MD5值(MessaGe-DiGest AlGorithm5, MD5,信息-摘要算法)、或CRC (Cyclic Redundancy Check,循環(huán)冗余校驗(yàn)碼)。進(jìn)一步地,在第三方主動(dòng)防御軟件對(duì)本機(jī)操作系統(tǒng)進(jìn)行Patch操作之前,專用寄存器還可以根據(jù)存儲(chǔ)的數(shù)據(jù)的值,生成用于進(jìn)行Patch Guard (禁止修改)校驗(yàn)的初始值。
[0068]步驟104,響應(yīng)本機(jī)操作系統(tǒng)向所述本機(jī)專用寄存器發(fā)起的檢測(cè)請(qǐng)求,將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),以攔截所述本機(jī)專用寄存器待返回的所述真實(shí)值。
[0069]其中,所述虛擬寄存器通過(guò)對(duì)所述本機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;所述虛擬值是在所述接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作步驟之前,所述專用寄存器中生成的與所述本機(jī)操作系統(tǒng)的系統(tǒng)調(diào)用對(duì)應(yīng)的初始值。
[0070]在本發(fā)明實(shí)施例中,由于64為Windows操作系統(tǒng)中增加了Patch Guard機(jī)制,在所述Patch Guard機(jī)制下,本機(jī)操作系統(tǒng)會(huì)對(duì)本機(jī)專用寄存器發(fā)起檢測(cè)請(qǐng)求,獲取專用寄存器中當(dāng)前生成的用于校驗(yàn)的真實(shí)值,當(dāng)專用寄存器當(dāng)前生成的真實(shí)值與前文中所述的初始值相同時(shí),本機(jī)操作系統(tǒng)則正常運(yùn)行;當(dāng)?shù)谌街鲃?dòng)防御軟件對(duì)本機(jī)操作系統(tǒng)進(jìn)行Patch操作后,專用寄存器當(dāng)前生成的真實(shí)值與前文中所述的初始值不同時(shí),本機(jī)將進(jìn)入藍(lán)屏死機(jī)。藍(lán)屏死機(jī)是指本機(jī)操作系統(tǒng)系統(tǒng)錯(cuò)誤,且無(wú)法從系統(tǒng)錯(cuò)誤中恢復(fù)時(shí)所顯示的屏幕圖像。為了避免在第三方主動(dòng)防御軟件對(duì)本機(jī)操作系統(tǒng)進(jìn)行Patch操作之后本機(jī)進(jìn)入藍(lán)屏死機(jī)情況的發(fā)生,在本發(fā)明實(shí)施例中,將虛擬寄存器根據(jù)所述初始值虛擬得到的虛擬值返回至本機(jī)操作系統(tǒng),同時(shí)攔截專用寄存器待返回的真實(shí)值。由于虛擬值與所述初始值相同,因此,本機(jī)操作系統(tǒng)可以繼續(xù)正常運(yùn)行。
[0071]步驟106,通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用。
[0072]在本發(fā)明實(shí)施例中,按照操作系統(tǒng)模式的劃分,可以將實(shí)時(shí)獲取應(yīng)用程序系統(tǒng)調(diào)用的方法分為兩大類(lèi):通過(guò)在操作系統(tǒng)用戶態(tài)掛接例程,截獲相關(guān)進(jìn)程的調(diào)用;以及通過(guò)在操作系統(tǒng)內(nèi)核態(tài)掛接例程,截獲相關(guān)進(jìn)程的調(diào)用。
[0073]以第三方主動(dòng)防御軟件在Windows平臺(tái)上常用的內(nèi)核態(tài)例程掛接(Kernel ModeRoutine Hooking)為例,微軟公司在內(nèi)核里設(shè)計(jì)了 一張系統(tǒng)服務(wù)派發(fā)表(SSDT, SystemService Dispatch Table),系統(tǒng)服務(wù)派發(fā)表里的例程涵蓋了:文件操作、注冊(cè)表操作、進(jìn)程操作、線程操作、內(nèi)存操作、對(duì)象操作等功能。第三方主動(dòng)防御軟件通過(guò)對(duì)操作系統(tǒng)的Patch操作(例如:替換系統(tǒng)服務(wù)派發(fā)表里的處理例程),可以達(dá)到截獲系統(tǒng)調(diào)用的目的。進(jìn)一步地,由于上述調(diào)用過(guò)程是區(qū)分進(jìn)程的,因此進(jìn)程的行為可以通過(guò)SSDT劫持(SSDT Hooking)來(lái)獲取。因此,第三方主動(dòng)防御軟件通過(guò)對(duì)操作系統(tǒng)的Patch操作,可以實(shí)現(xiàn)對(duì)系統(tǒng)調(diào)用的攔截。
[0074]可選地,對(duì)系統(tǒng)調(diào)用進(jìn)行攔截除了采用SSDT劫持的方法之外,微軟官方文檔中還推薦使用回調(diào)(Callback)的方法來(lái)實(shí)現(xiàn)行為監(jiān)控?;卣{(diào)機(jī)制是微軟操作系統(tǒng)內(nèi)核集成的事件通知解決方案,在某些事件發(fā)生時(shí)(如進(jìn)程創(chuàng)建時(shí)、線程創(chuàng)建時(shí)、模塊加載時(shí)),系統(tǒng)會(huì)主動(dòng)通知回調(diào)的注冊(cè)者,也可以獲取進(jìn)程的系統(tǒng)調(diào)用行為。
[0075]綜上所述,本發(fā)明提供的一種攔截系統(tǒng)調(diào)用的方法,應(yīng)用于支持硬件虛擬化的CPU,通過(guò)將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),使得Patch Guard檢測(cè)可以通過(guò),避免了藍(lán)屏。從而實(shí)現(xiàn)了利用第三方主動(dòng)防御軟件對(duì)Windows平臺(tái)(特別是無(wú)法修改內(nèi)核的64位乃至更高位)進(jìn)行Patch操作,進(jìn)而可以在64位Windows平臺(tái)上對(duì)系統(tǒng)調(diào)用進(jìn)行攔截,提供完整的主動(dòng)防御功能,為用戶計(jì)算機(jī)系統(tǒng)解決了現(xiàn)有的安全隱患問(wèn)題,提高了安全性能。
[0076]參照?qǐng)D2,示出了本發(fā)明第二實(shí)施例中一種攔截系統(tǒng)調(diào)用的方法的流程圖。
[0077]在本發(fā)明實(shí)施例中,由于X86和X86-64體系結(jié)構(gòu)的CPU不滿足Popek和Goldberg定理中關(guān)于高效VMM的定義,Intel與AMD各自為自己的CPU設(shè)計(jì)了一套硬件虛擬化擴(kuò)展支持,分別為Intel-VT與AMD-V,以此來(lái)改進(jìn)處理器加速虛擬化。其基本原理是提供了一種新的操作模式,VMM處于不受限的操作模式,而無(wú)論O環(huán)的客戶操作系統(tǒng)或是3環(huán)的客戶應(yīng)用軟件都運(yùn)行在受限的操作模式。客戶操作系統(tǒng)或者客戶應(yīng)用軟件的敏感行為和事件皆可被VMM感知與攔截。利用此功能,通過(guò)將當(dāng)前運(yùn)行的Windows操作系統(tǒng)作為客戶系統(tǒng)置入受限的操作模式(如Intel-VT的non-root VMX模式)。同時(shí),可以利用驅(qū)動(dòng)程序的最高權(quán)限使得CPU運(yùn)行在支持虛擬化擴(kuò)展的VMM模式下,使用硬件虛擬化擴(kuò)展攔截監(jiān)控該Windows操作系統(tǒng)的虛擬化平臺(tái)。
[0078]在本發(fā)明實(shí)施例中,所述攔截系統(tǒng)調(diào)用的方法應(yīng)用于支持硬件虛擬化的CPU,所述方法可以包括:
[0079]步驟202,接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作,并在本機(jī)專用寄存器中生成與所述Patch操作相對(duì)應(yīng)的真實(shí)值。
[0080]步驟204,響應(yīng)本機(jī)操作系統(tǒng)向所述本機(jī)專用寄存器發(fā)起的檢測(cè)請(qǐng)求,將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),以攔截所述本機(jī)專用寄存器待返回的所述真實(shí)值。
[0081]其中,所述虛擬寄存器通過(guò)對(duì)所述本機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;所述虛擬值是在所述接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作步驟之前,所述專用寄存器中生成的與所述本機(jī)操作系統(tǒng)的系統(tǒng)調(diào)用對(duì)應(yīng)的初始值。
[0082]在本發(fā)明實(shí)施例中,第三方主動(dòng)防御軟件通過(guò)對(duì)本機(jī)操作系統(tǒng)進(jìn)行Patch操作,修改64位Windows操作系統(tǒng)中的LSTAR模式專用寄存器的內(nèi)容(所述LSTAR模式專用寄存器中的內(nèi)容可以是系統(tǒng)調(diào)用內(nèi)核模式的入口地址),這樣所有來(lái)自應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求都會(huì)先轉(zhuǎn)移至第三方主動(dòng)防御軟件修改的地址,從而對(duì)應(yīng)用程序的系統(tǒng)調(diào)用行為進(jìn)行監(jiān)控,攔截惡意程序?qū)Σ僮飨到y(tǒng)的攻擊,從而對(duì)保護(hù)操作系統(tǒng)進(jìn)行保護(hù)。但是,正常情況下,當(dāng)64位Windows操作系統(tǒng)中的Patch Guard檢測(cè)到第三方主動(dòng)防御軟件對(duì)本機(jī)操作系統(tǒng)進(jìn)行了 Patch操作時(shí),本機(jī)會(huì)直接藍(lán)屏。在本發(fā)明實(shí)施例中,通過(guò)利用虛擬寄存器返回滿足Patch Guard檢測(cè)的虛擬值,使得Patch Guard檢查正常通過(guò)。從而實(shí)現(xiàn)了第三方主動(dòng)防御軟件對(duì)操作系統(tǒng)的保護(hù)。這里需要說(shuō)明的是,Patch Guard機(jī)制是64位Windows操作系統(tǒng)自帶的內(nèi)核保護(hù)系統(tǒng),防止任何非授權(quán)軟件對(duì)內(nèi)核進(jìn)行Patch操作。Patch Guard機(jī)制能夠有效防止內(nèi)核模式驅(qū)動(dòng)改動(dòng)或替換內(nèi)核的任何內(nèi)容,對(duì)操作系統(tǒng)進(jìn)行保護(hù)。
[0083]在本發(fā)明實(shí)施例中,通過(guò)虛擬寄存器返回的虛擬值使得Patch Guard檢查正常通過(guò),從而實(shí)現(xiàn)了 Patch Guard機(jī)制和第三方主動(dòng)防御軟件并存,共同對(duì)操作系統(tǒng)進(jìn)行保護(hù)的目的。
[0084]步驟206,通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用。
[0085]在本發(fā)明實(shí)施例中,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作可以包括:將驅(qū)動(dòng)入口地址寫(xiě)入所述虛擬寄存器中。所述步驟206可以包括:
[0086]子步驟2062,當(dāng)通過(guò)返回的所述虛擬值確定所述對(duì)本機(jī)操作系統(tǒng)的Patch操作為合法操作時(shí),則響應(yīng)系統(tǒng)調(diào)用接口接收到的應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求,并向所述系統(tǒng)調(diào)用接口返回所述虛擬寄存器中的所述驅(qū)動(dòng)入口地址。其中,所述系統(tǒng)調(diào)用請(qǐng)求用于請(qǐng)求待執(zhí)行的系統(tǒng)調(diào)用。
[0087]在本發(fā)明實(shí)施例中,所述虛擬寄存器中還可以包括驅(qū)動(dòng)入口地址。第三方主動(dòng)防御軟件利用虛擬值通過(guò)Patch Guard的檢測(cè),使得第三方主動(dòng)防御軟件對(duì)本機(jī)操作系統(tǒng)的Patch操作合法化,本機(jī)操作系統(tǒng)可以正常運(yùn)行,進(jìn)而可以響應(yīng)系統(tǒng)調(diào)用接口接收到的應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求,并向所述系統(tǒng)調(diào)用接口返回所述虛擬寄存器中的所述驅(qū)動(dòng)入口地址。
[0088]子步驟2064,將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述驅(qū)動(dòng)入口地址所指示的驅(qū)動(dòng)。
[0089]在具體實(shí)現(xiàn)時(shí),所述驅(qū)動(dòng)入口地址可以包括主動(dòng)防御驅(qū)動(dòng)地址,所述主動(dòng)防御驅(qū)動(dòng)地址指示主動(dòng)防御驅(qū)動(dòng)所在的位置。較佳地,所述子步驟2064可以包括:
[0090]子步驟20642,將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述主動(dòng)防御驅(qū)動(dòng)地址所指示的主動(dòng)防御驅(qū)動(dòng)。
[0091]子步驟2066,通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用。
[0092]在本發(fā)明實(shí)施例中,所述子步驟2066可以包括:
[0093]子步驟20662,通過(guò)所述主動(dòng)防御驅(qū)動(dòng)對(duì)所述待執(zhí)行的系統(tǒng)調(diào)用進(jìn)行安全判斷,得到判斷結(jié)果。其中,所述待執(zhí)行的系統(tǒng)調(diào)用包括:執(zhí)行本機(jī)操作系統(tǒng)內(nèi)核提供的服務(wù)和執(zhí)行所述本機(jī)操作系統(tǒng)環(huán)境由用戶態(tài)切換到內(nèi)核態(tài)的操作。
[0094]在本發(fā)明實(shí)施例中,在執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用之前,增加了將所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送到主動(dòng)防御驅(qū)動(dòng)中進(jìn)行分析和監(jiān)控的步驟,從而可以對(duì)操作系統(tǒng)調(diào)用進(jìn)行有效的識(shí)別和攔截,提高了操作系統(tǒng)的安全性。其中,主動(dòng)防御驅(qū)動(dòng)對(duì)所述待執(zhí)行的系統(tǒng)調(diào)用的分析和監(jiān)控具體方法可以如下:在操作系統(tǒng)中具有一個(gè)應(yīng)用程序規(guī)范行為庫(kù),所述應(yīng)用程序規(guī)范行為庫(kù)可以預(yù)先搜集各應(yīng)用程序的規(guī)范行為并存儲(chǔ)在服務(wù)器或者客戶端中。應(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)獲取到應(yīng)用程序的實(shí)時(shí)系統(tǒng)調(diào)用行為時(shí),首先會(huì)從應(yīng)用程序規(guī)范行為庫(kù)中查找到所述應(yīng)用程序,再找到所述應(yīng)用程序?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),從而確定應(yīng)用程序出現(xiàn)異常。
[0095]在本發(fā)明實(shí)施例中,較佳地,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:將執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用的代碼集寫(xiě)入所述虛擬寄存器中。所述子步驟2066還可以包括:
[0096]子步驟20664,當(dāng)所述安全判斷結(jié)果為不安全時(shí),通過(guò)所述主動(dòng)防御驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用。
[0097]又一較佳地,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:生成虛擬代碼集寄存器,并將虛擬代碼集寫(xiě)入所述虛擬代碼集寄存器中;其中,所述待執(zhí)行的系統(tǒng)調(diào)用通過(guò)所述虛擬代碼集執(zhí)行。在本發(fā)明實(shí)施例中,還可以逐條指令分析操作系統(tǒng)調(diào)用接口中的KiSystemCal 164函數(shù),根據(jù)KiSystemCal 164函數(shù)內(nèi)容構(gòu)造一份虛擬代碼集,所述虛擬代碼集運(yùn)行起來(lái)的功能和KiSystemCall64函數(shù)實(shí)現(xiàn)的功能一致。所述子步驟2066還可以包括:
[0098]子步驟20666,當(dāng)所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬寄存器中的代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
[0099]這里需要說(shuō)明的是,所述本機(jī)操作系統(tǒng)包括但不僅限于64位Windows操作系統(tǒng),還可以是更高位的Windows操作系統(tǒng)。所述主動(dòng)防御驅(qū)動(dòng)可以包括但不僅限于第三方主動(dòng)防御軟件的驅(qū)動(dòng)。
[0100]綜上所述,本發(fā)明提供的一種攔截系統(tǒng)調(diào)用的方法,應(yīng)用于支持硬件虛擬化的CPU,過(guò)將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),使得Patch Guard檢測(cè)可以通過(guò),避免了藍(lán)屏。支持第三主動(dòng)防御軟件在64位操作系統(tǒng)上對(duì)操作系統(tǒng)的Patch操作,解決了現(xiàn)有技術(shù)無(wú)法在64位甚至更高位的Windows系統(tǒng)上實(shí)現(xiàn)的安全行為與事件的攔截的問(wèn)題,為操作系統(tǒng)提供了完整有效的主動(dòng)防御功能。
[0101]進(jìn)一步地,在本發(fā)明實(shí)施例中,VMM處于不受限的操作模式,而無(wú)論0環(huán)的客戶操作系統(tǒng)或是3環(huán)的客戶應(yīng)用軟件都運(yùn)行在受限的操作模式下,因此,客戶操作系統(tǒng)或者客戶應(yīng)用軟件的敏感行為和事件皆可被VMM感知與攔截。進(jìn)而,第三方主動(dòng)防御軟件不僅能利用微軟的標(biāo)準(zhǔn)接口對(duì)文件、注冊(cè)表、進(jìn)程與線程對(duì)象提供防護(hù),還能通過(guò)Patch操作系統(tǒng),從而有效阻止如窗口消息攻擊、利用RPC等進(jìn)程間通信機(jī)制攻擊等對(duì)操作系統(tǒng)的攻擊行為。解決了現(xiàn)有的64位Windows上存在的安全隱患問(wèn)題,提高了操作系統(tǒng)的安全性能。
[0102]需要說(shuō)明的是,對(duì)于前述的方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本發(fā)明所必需的。
[0103]基于與上述攔截系統(tǒng)調(diào)用的方法同一發(fā)明構(gòu)思,參照?qǐng)D3,示出了本發(fā)明第三實(shí)施例中一種攔截系統(tǒng)調(diào)用的裝置的結(jié)構(gòu)框圖。所述攔截系統(tǒng)調(diào)用的裝置,應(yīng)用于支持硬件虛擬化的CPU,所述裝置可以包括:
[0104]接受模塊302,用于接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作,并在本機(jī)專用寄存器中生成與所述Patch操作相對(duì)應(yīng)的真實(shí)值。
[0105]虛擬值返回模塊304,用于響應(yīng)本機(jī)操作系統(tǒng)向所述本機(jī)專用寄存器發(fā)起的檢測(cè)請(qǐng)求,將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),以攔截所述本機(jī)專用寄存器待返回的所述真實(shí)值。
[0106]其中,所述虛擬寄存器通過(guò)對(duì)所述本機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;所述虛擬值是在所述接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作步驟之前,所述專用寄存器中生成的與所述本機(jī)操作系統(tǒng)的系統(tǒng)調(diào)用對(duì)應(yīng)的初始值。
[0107]攔截模塊306,用于通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用。
[0108]綜上所述,本發(fā)明提供的一種攔截系統(tǒng)調(diào)用的裝置,應(yīng)用于支持硬件虛擬化的CPU,通過(guò)將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),使得Patch Guard檢測(cè)可以通過(guò),避免了藍(lán)屏。從而實(shí)現(xiàn)了利用第三方軟件對(duì)Windows平臺(tái)(特別是無(wú)法修改內(nèi)核的64位乃至更高位)進(jìn)行Patch操作,可以在64位Windows平臺(tái)上提供完整的主動(dòng)防御產(chǎn)品,為用戶計(jì)算機(jī)系統(tǒng)解決了現(xiàn)有的安全隱患問(wèn)題,提高了安全性能。
[0109]參照?qǐng)D4,示出了本發(fā)明第四實(shí)施例中一種攔截系統(tǒng)調(diào)用的裝置的結(jié)構(gòu)框圖。所述攔截系統(tǒng)調(diào)用的裝置,應(yīng)用于支持硬件虛擬化的CPU,所述裝置可以包括:
[0110]接受模塊402,用于接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作,并在本機(jī)專用寄存器中生成與所述Patch操作相對(duì)應(yīng)的真實(shí)值。
[0111]虛擬值返回模塊404,用于響應(yīng)本機(jī)操作系統(tǒng)向所述本機(jī)專用寄存器發(fā)起的檢測(cè)請(qǐng)求,將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),以攔截所述本機(jī)專用寄存器待返回的所述真實(shí)值。
[0112]其中,所述虛擬寄存器通過(guò)對(duì)所述本機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;所述虛擬值是在所述接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作步驟之前,所述專用寄存器中生成的與所述本機(jī)操作系統(tǒng)的系統(tǒng)調(diào)用對(duì)應(yīng)的初始值。
[0113]攔截模塊406,用于通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用。
[0114]在本發(fā)明實(shí)施例中,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作包括:將驅(qū)動(dòng)入口地址寫(xiě)入所述虛擬寄存器中。所述攔截模塊406可以包括:
[0115]地址返回模塊4062,用于在通過(guò)返回的所述虛擬值確定所述對(duì)本機(jī)操作系統(tǒng)的Patch操作為合法操作時(shí),響應(yīng)系統(tǒng)調(diào)用接口接收到的應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求,并向所述系統(tǒng)調(diào)用接口返回所述虛擬寄存器中的所述驅(qū)動(dòng)入口地址;其中,所述系統(tǒng)調(diào)用請(qǐng)求用于請(qǐng)求待執(zhí)行的系統(tǒng)調(diào)用。在通過(guò)返回的所述虛擬值確定所述對(duì)本機(jī)操作系統(tǒng)的Patch操作為合法操作時(shí),響應(yīng)系統(tǒng)調(diào)用接口接收到的應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求,并向所述系統(tǒng)調(diào)用接口返回所述虛擬寄存器中的所述驅(qū)動(dòng)入口地址。其中,所述虛擬寄存器中包括驅(qū)動(dòng)入口地址。
[0116]發(fā)送模塊4064,用于將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述驅(qū)動(dòng)入口地址所指示的驅(qū)動(dòng)。
[0117]在具體實(shí)現(xiàn)時(shí),所述驅(qū)動(dòng)入口地址可以包括主動(dòng)防御驅(qū)動(dòng)地址,所述主動(dòng)防御驅(qū)動(dòng)地址指示主動(dòng)防御驅(qū)動(dòng)所在的位置。所述發(fā)送模塊4064,具體用于將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述主動(dòng)防御驅(qū)動(dòng)地址所指示的主動(dòng)防御驅(qū)動(dòng)。
[0118]驅(qū)動(dòng)攔截模塊4066,用于通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用。
[0119]在本發(fā)明實(shí)施例中,所述驅(qū)動(dòng)攔截模塊4066可以包括:
[0120]安全判斷模塊40662,用于通過(guò)所述主動(dòng)防御驅(qū)動(dòng)對(duì)所述待執(zhí)行的系統(tǒng)調(diào)用進(jìn)行安全判斷,得到判斷結(jié)果;其中,所述待執(zhí)行的系統(tǒng)調(diào)用包括:執(zhí)行本機(jī)操作系統(tǒng)內(nèi)核提供的服務(wù)和執(zhí)行所述本機(jī)操作系統(tǒng)環(huán)境由用戶態(tài)切換到內(nèi)核態(tài)的操作。
[0121]主動(dòng)防御驅(qū)動(dòng)攔截模塊40664,用于在所述安全判斷結(jié)果為不安全時(shí),通過(guò)所述主動(dòng)防御驅(qū)動(dòng)攔截所述系統(tǒng)調(diào)用。
[0122]在本發(fā)明實(shí)施例中,較佳地,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:將執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用的代碼集寫(xiě)入所述虛擬寄存器中。所述驅(qū)動(dòng)攔截模塊4066,還包括:
[0123]第一執(zhí)行模塊40666,用于在所述安全判斷模塊得到判斷結(jié)果之后,在所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬寄存器中的代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
[0124]在本發(fā)明實(shí)施例中,又一較佳地,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:生成虛擬代碼集寄存器,并將虛擬代碼集寫(xiě)入所述虛擬代碼集寄存器中;其中,所述待執(zhí)行的系統(tǒng)調(diào)用通過(guò)所述虛擬代碼集執(zhí)行。所述驅(qū)動(dòng)攔截模塊4066,還包括:
[0125]第二執(zhí)行模塊40668,用于在所述安全判斷模塊得到判斷結(jié)果之后,在所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
[0126]這里需要說(shuō)明的是,所述本機(jī)操作系統(tǒng)包括但不僅限于64位Windows操作系統(tǒng),還可以是更高位的Windows操作系統(tǒng)。所述主動(dòng)防御驅(qū)動(dòng)可以包括但不僅限于第三方主動(dòng)防御軟件的驅(qū)動(dòng)。
[0127]綜上所述,本發(fā)明提供的一種攔截系統(tǒng)調(diào)用的裝置,應(yīng)用于支持硬件虛擬化的CPU,過(guò)將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),使得Patch Guard檢測(cè)可以通過(guò),避免了藍(lán)屏。支持第三主動(dòng)防御軟件在64位操作系統(tǒng)上對(duì)操作系統(tǒng)的Patch操作,從而實(shí)現(xiàn)了 Patch Guard機(jī)制和第三方主動(dòng)防御軟件并存,共同對(duì)操作系統(tǒng)進(jìn)行保護(hù)的目的,提高了操作系統(tǒng)的安全程度。
[0128]對(duì)于上述裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
[0129]在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類(lèi)系統(tǒng)所要求的結(jié)構(gòu)是顯而易見(jiàn)的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
[0130]在此處所提供的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。
[0131]類(lèi)似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書(shū)由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
[0132]本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
[0133]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書(shū)中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
[0134]本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的一種攔截系統(tǒng)調(diào)用的設(shè)備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
[0135]應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0136]本發(fā)明公開(kāi)了 Al、一種攔截系統(tǒng)調(diào)用的方法,應(yīng)用于支持硬件虛擬化的CPU,所述方法包括:
[0137]接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作,并在本機(jī)專用寄存器中生成與所述Patch操作相對(duì)應(yīng)的真實(shí)值;
[0138]響應(yīng)本機(jī)操作系統(tǒng)向所述本機(jī)專用寄存器發(fā)起的檢測(cè)請(qǐng)求,將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),以攔截所述本機(jī)專用寄存器待返回的所述真實(shí)值;
[0139]通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用;
[0140]其中,所述虛擬寄存器通過(guò)對(duì)所述本機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;所述虛擬值是在所述接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作步驟之前,所述專用寄存器中生成的與所述本機(jī)操作系統(tǒng)的系統(tǒng)調(diào)用對(duì)應(yīng)的初始值。
[0141 ] A2、如Al所述的方法,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作包括:將驅(qū)動(dòng)入口地址寫(xiě)入所述虛擬寄存器中;
[0142]所述通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用,包括:
[0143]當(dāng)通過(guò)返回的所述虛擬值確定所述對(duì)本機(jī)操作系統(tǒng)的Patch操作為合法操作時(shí),則
[0144]響應(yīng)系統(tǒng)調(diào)用接口接收到的應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求,并向所述系統(tǒng)調(diào)用接口返回所述虛擬寄存器中的所述驅(qū)動(dòng)入口地址;其中,所述系統(tǒng)調(diào)用請(qǐng)求用于請(qǐng)求待執(zhí)行的系統(tǒng)調(diào)用;
[0145]將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述驅(qū)動(dòng)入口地址所指示的驅(qū)動(dòng);
[0146]通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用。
[0147]A3、如A2所述的方法,所述驅(qū)動(dòng)入口地址包括主動(dòng)防御驅(qū)動(dòng)地址,所述主動(dòng)防御驅(qū)動(dòng)地址指示主動(dòng)防御驅(qū)動(dòng)所在的位置;
[0148]所述將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述驅(qū)動(dòng)入口地址所指示的驅(qū)動(dòng),包括:
[0149]將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述主動(dòng)防御驅(qū)動(dòng)地址所指示的主動(dòng)防御驅(qū)動(dòng)。[0150]A4、如A3所述的方法,所述通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用包括:
[0151]通過(guò)所述主動(dòng)防御驅(qū)動(dòng)對(duì)所述待執(zhí)行的系統(tǒng)調(diào)用進(jìn)行安全判斷,得到判斷結(jié)果;其中,所述待執(zhí)行的系統(tǒng)調(diào)用包括:執(zhí)行本機(jī)操作系統(tǒng)內(nèi)核提供的服務(wù)和執(zhí)行所述本機(jī)操作系統(tǒng)環(huán)境由用戶態(tài)切換到內(nèi)核態(tài)的操作;
[0152]當(dāng)所述安全判斷結(jié)果為不安全時(shí),通過(guò)所述主動(dòng)防御驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用。
[0153]A5、如A4所述的方法,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:將執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用的代碼集寫(xiě)入所述虛擬寄存器中;
[0154]在所述得到判斷結(jié)果步驟之后,所述通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用還包括:
[0155]當(dāng)所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬寄存器中的代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
[0156]A6、如A4所述的方法,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:生成虛擬代碼集寄存器,并將虛擬代碼集寫(xiě)入所述虛擬代碼集寄存器中;其中,所述待執(zhí)行的系統(tǒng)調(diào)用通過(guò)所述虛擬代碼集執(zhí)行;
[0157]在所述得到判斷結(jié)果步驟之后,所述通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用還包括:
[0158]當(dāng)所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
`[0159]A7、如A3-A6任一項(xiàng)所述的方法,所述主動(dòng)防御驅(qū)動(dòng)為第三方主動(dòng)防御軟件的驅(qū)動(dòng)。
[0160]A8、如A1-A6任一項(xiàng)所述的方法,所述本機(jī)操作系統(tǒng)包括64位Windows操作系統(tǒng)。
[0161]本發(fā)明還公開(kāi)了 B9、一種攔截系統(tǒng)調(diào)用的裝置,應(yīng)用于支持硬件虛擬化的CPU,所述裝置包括:
[0162]接受模塊,用于接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作,并在本機(jī)專用寄存器中生成與所述Patch操作相對(duì)應(yīng)的真實(shí)值;
[0163]虛擬值返回模塊,用于響應(yīng)本機(jī)操作系統(tǒng)向所述本機(jī)專用寄存器發(fā)起的檢測(cè)請(qǐng)求,將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),以攔截所述本機(jī)專用寄存器待返回的所述真實(shí)值;
[0164]攔截模塊,用于通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用;
[0165]其中,所述虛擬寄存器通過(guò)對(duì)所述本機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;所述虛擬值是在所述接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作步驟之前,所述專用寄存器中生成的與所述本機(jī)操作系統(tǒng)的系統(tǒng)調(diào)用對(duì)應(yīng)的初始值。
[0166]BlO^n B9所述的裝置,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作包括:將驅(qū)動(dòng)入口地址寫(xiě)入所述虛擬寄存器中;
[0167]所述攔截模塊包括:
[0168]地址返回模塊,用于在通過(guò)返回的所述虛擬值確定所述對(duì)本機(jī)操作系統(tǒng)的Patch操作為合法操作時(shí),響應(yīng)系統(tǒng)調(diào)用接口接收到的應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求,并向所述系統(tǒng)調(diào)用接口返回所述虛擬寄存器中的所述驅(qū)動(dòng)入口地址;其中,所述系統(tǒng)調(diào)用請(qǐng)求用于請(qǐng)求待執(zhí)行的系統(tǒng)調(diào)用;
[0169]發(fā)送模塊,用于將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述驅(qū)動(dòng)入口地址所指示的驅(qū)動(dòng);
[0170]驅(qū)動(dòng)攔截模塊,用于通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用。
[0171]B11、如BlO所述的裝置,所述驅(qū)動(dòng)入口地址包括主動(dòng)防御驅(qū)動(dòng)地址,所述主動(dòng)防御驅(qū)動(dòng)地址指示主動(dòng)防御驅(qū)動(dòng)所在的位置;
[0172]所述發(fā)送模塊,用于將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述主動(dòng)防御驅(qū)動(dòng)地址所指示的主動(dòng)防御驅(qū)動(dòng)。
[0173]B12、如Bll所述的裝置,
[0174]所述驅(qū)動(dòng)攔截模塊包括:
[0175]安全判斷模塊,用于通過(guò)所述主動(dòng)防御驅(qū)動(dòng)對(duì)所述待執(zhí)行的系統(tǒng)調(diào)用進(jìn)行安全判斷,得到判斷結(jié)果;其中,所述待執(zhí)行的系統(tǒng)調(diào)用包括:執(zhí)行本機(jī)操作系統(tǒng)內(nèi)核提供的服務(wù)和執(zhí)行所述本機(jī)操作系統(tǒng)環(huán)境由用戶態(tài)切換到內(nèi)核態(tài)的操作;
[0176]主動(dòng)防御驅(qū)動(dòng)攔截模塊,用于在所述安全判斷結(jié)果為不安全時(shí),通過(guò)所述主動(dòng)防御驅(qū)動(dòng)攔截所述系統(tǒng)調(diào)用。
[0177]B13、如B12所述的裝置,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:將執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用的代碼集寫(xiě)入所述虛擬寄存器中;
[0178]所述驅(qū)動(dòng)攔截模塊還包括:
[0179]第一執(zhí)行模塊,用于在所述安全判斷模塊得到判斷結(jié)果之后,在所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬寄存器中的代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
[0180]B14、如B12所述的裝置,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:生成虛擬代碼集寄存器,并將虛擬代碼集寫(xiě)入所述虛擬代碼集寄存器中;其中,所述待執(zhí)行的系統(tǒng)調(diào)用通過(guò)所述虛擬代碼集執(zhí)行;
[0181 ] 所述驅(qū)動(dòng)攔截模塊還包括:
[0182]第二執(zhí)行模塊,用于在所述安全判斷模塊得到判斷結(jié)果之后,在所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
[0183]B15、如B11-B14任一項(xiàng)所述的裝置,所述主動(dòng)防御驅(qū)動(dòng)為第三方主動(dòng)防御軟件的驅(qū)動(dòng)。
[0184]B16、如B9-B14任一項(xiàng)所述的裝置,所述本機(jī)操作系統(tǒng)包括64位Windows操作系統(tǒng)。
【權(quán)利要求】
1.一種攔截系統(tǒng)調(diào)用的方法,應(yīng)用于支持硬件虛擬化的CPU,所述方法包括: 接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作,并在本機(jī)專用寄存器中生成與所述Patch操作相對(duì)應(yīng)的真實(shí)值; 響應(yīng)本機(jī)操作系統(tǒng)向所述本機(jī)專用寄存器發(fā)起的檢測(cè)請(qǐng)求,將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),以攔截所述本機(jī)專用寄存器待返回的所述真實(shí)值; 通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用; 其中,所述虛擬寄存器通過(guò)對(duì)所述本機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;所述虛擬值是在所述接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作步驟之前,所述專用寄存器中生成的與所述本機(jī)操作系統(tǒng)的系統(tǒng)調(diào)用對(duì)應(yīng)的初始值。
2.如權(quán)利要求1所述的方法,其特征在于,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作包括:將驅(qū)動(dòng)入口地址寫(xiě)入所述虛擬寄存器中; 所述通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用,包括: 當(dāng)通過(guò)返回的所述虛擬值確定所述對(duì)本機(jī)操作系統(tǒng)的Patch操作為合法操作時(shí),則響應(yīng)系統(tǒng)調(diào)用接口接收到的應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求,并向所述系統(tǒng)調(diào)用接口返回所述虛擬寄存器中的所述驅(qū)動(dòng)入口地址;其中,所述系統(tǒng)調(diào)用請(qǐng)求用于請(qǐng)求待執(zhí)行的系統(tǒng)調(diào)用; 將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述驅(qū)動(dòng)入口地址所指示的驅(qū)動(dòng); 通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí) 行的系統(tǒng)調(diào)用。
3.如權(quán)利要求2所述的方法,其特征在于,所述驅(qū)動(dòng)入口地址包括主動(dòng)防御驅(qū)動(dòng)地址,所述主動(dòng)防御驅(qū)動(dòng)地址指示主動(dòng)防御驅(qū)動(dòng)所在的位置; 所述將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述驅(qū)動(dòng)入口地址所指示的驅(qū)動(dòng),包括: 將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述主動(dòng)防御驅(qū)動(dòng)地址所指示的主動(dòng)防御驅(qū)動(dòng)。
4.如權(quán)利要求3所述的方法,其特征在于,所述通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用包括: 通過(guò)所述主動(dòng)防御驅(qū)動(dòng)對(duì)所述待執(zhí)行的系統(tǒng)調(diào)用進(jìn)行安全判斷,得到判斷結(jié)果;其中,所述待執(zhí)行的系統(tǒng)調(diào)用包括:執(zhí)行本機(jī)操作系統(tǒng)內(nèi)核提供的服務(wù)和執(zhí)行所述本機(jī)操作系統(tǒng)環(huán)境由用戶態(tài)切換到內(nèi)核態(tài)的操作; 當(dāng)所述安全判斷結(jié)果為不安全時(shí),通過(guò)所述主動(dòng)防御驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用。
5.如權(quán)利要求4所述的方法,其特征在于,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:將執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用的代碼集寫(xiě)入所述虛擬寄存器中; 在所述得到判斷結(jié)果步驟之后,所述通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用還包括: 當(dāng)所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬寄存器中的代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
6.如權(quán)利要求4所述的方法,其特征在于,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作還包括:生成虛擬代碼集寄存器,并將虛擬代碼集寫(xiě)入所述虛擬代碼集寄存器中;其中,所述待執(zhí)行的系統(tǒng)調(diào)用通過(guò)所述虛擬代碼集執(zhí)行; 在所述得到判斷結(jié)果步驟之后,所述通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用還包括: 當(dāng)所述安全判斷結(jié)果為安全時(shí),通過(guò)所述虛擬代碼集執(zhí)行所述待執(zhí)行的系統(tǒng)調(diào)用。
7.如權(quán)利要求3-6任一項(xiàng)所述的方法,其特征在于,所述主動(dòng)防御驅(qū)動(dòng)為第三方主動(dòng)防御軟件的驅(qū)動(dòng)。
8.如權(quán)利要求1-6任一項(xiàng)所述的方法,其特征在于,所述本機(jī)操作系統(tǒng)包括64位Windows操作系統(tǒng)。
9.一種攔截系統(tǒng)調(diào)用的裝置,應(yīng)用于支持硬件虛擬化的CPU,所述裝置包括: 接受模塊,用于接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作,并在本機(jī)專用寄存器中生成與所述Patch操作相對(duì)應(yīng)的真實(shí)值; 虛擬值返回模塊,用于響應(yīng)本機(jī)操作系統(tǒng)向所述本機(jī)專用寄存器發(fā)起的檢測(cè)請(qǐng)求,將虛擬寄存器中的虛擬值返回至所述本機(jī)操作系統(tǒng),以攔截所述本機(jī)專用寄存器待返回的所述真實(shí)值; 攔截模塊,用于通過(guò)Patch后的本機(jī)操作系統(tǒng),攔截系統(tǒng)調(diào)用; 其中,所述虛擬寄存器通過(guò)對(duì)所述本機(jī)操作系統(tǒng)進(jìn)行硬件虛擬化生成得到;所述虛擬值是在所述接受對(duì)本機(jī)操作系統(tǒng)的修改Patch操作步驟之前,所述專用寄存器中生成的與所述本機(jī)操作系統(tǒng)的系統(tǒng)調(diào)用對(duì)應(yīng)的初始值。
10.如權(quán)利要求9所述的裝置,其特征在于,所述對(duì)本機(jī)操作系統(tǒng)的Patch操作包括:將驅(qū)動(dòng)入口地址寫(xiě)入所述虛擬寄存器中; 所述攔截模塊包括: 地址返回模塊,用于在通過(guò)返回的所述虛擬值確定所述對(duì)本機(jī)操作系統(tǒng)的Patch操作為合法操作時(shí),響應(yīng)系統(tǒng)調(diào)用接口接收到的應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求,并向所述系統(tǒng)調(diào)用接口返回所述虛擬寄存器中的所述驅(qū)動(dòng)入口地址;其中,所述系統(tǒng)調(diào)用請(qǐng)求用于請(qǐng)求待執(zhí)行的系統(tǒng)調(diào)用; 發(fā)送模塊,用于將所述應(yīng)用程序的系統(tǒng)調(diào)用請(qǐng)求所請(qǐng)求的所述待執(zhí)行的系統(tǒng)調(diào)用發(fā)送至所述驅(qū)動(dòng)入口地址所指示的驅(qū)動(dòng); 驅(qū)動(dòng)攔截模塊,用于通過(guò)所述驅(qū)動(dòng)攔截所述待執(zhí)行的系統(tǒng)調(diào)用。
【文檔編號(hào)】G06F21/57GK103632101SQ201310661853
【公開(kāi)日】2014年3月12日 申請(qǐng)日期:2013年12月9日 優(yōu)先權(quán)日:2013年12月9日
【發(fā)明者】潘劍鋒 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司