亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

虛擬機內(nèi)核的保護方法及裝置與流程

文檔序號:12786166閱讀:355來源:國知局
本發(fā)明涉及虛擬機技術(shù),尤其涉及一種虛擬機內(nèi)核的保護方法及裝置。
背景技術(shù)
::近年來,云計算技術(shù)得到了快速發(fā)展,不可忽視地,當(dāng)前存在的眾多惡意程序以及內(nèi)核惡意代碼也會給云平臺虛擬機內(nèi)部進程帶來安全威脅。其中,虛擬機內(nèi)核在虛擬機中起著核心作用,虛擬機運行過程中,所有應(yīng)用程序的系統(tǒng)調(diào)用請求、以及內(nèi)部和外部的中斷處理等均會直接進入虛擬機內(nèi)核,由虛擬機內(nèi)核來進行必要的處理。具體實現(xiàn)過程中,所有進入虛擬機內(nèi)核的接口中,系統(tǒng)調(diào)用接口是應(yīng)用程序與虛擬機內(nèi)核進行交互、進而獲取虛擬機內(nèi)核服務(wù)的一種重要接口,相應(yīng)地,系統(tǒng)調(diào)用執(zhí)行路徑是進入虛擬機內(nèi)核的路徑分支中的一種重點需要防護的路徑。一旦系統(tǒng)調(diào)用執(zhí)行路徑遭到劫持,惡意代碼就可以在特定進程的進程環(huán)境下得到執(zhí)行時機,進而在進程中利用自己的合法身份讀寫進程內(nèi)存,以突破進程內(nèi)存對第三方進程的讀寫限制,從而惡意代碼可以篡改系統(tǒng)調(diào)用執(zhí)行結(jié)果、威脅進程數(shù)據(jù)安全、影響進程正常運行等?,F(xiàn)有技術(shù)中,為了對系統(tǒng)調(diào)用執(zhí)行路徑進行反劫持防護,主要由虛擬機中的虛擬機監(jiān)視器(VirtualMachineMonitor,簡稱VMM)實時對虛擬機內(nèi)核進行透明攔截監(jiān)控,即在避免用戶側(cè)獲知的情況下進行攔截監(jiān)控,以實現(xiàn)實時攔截非法操作對進程內(nèi)存的讀寫,具體地,主要利用硬件輔助虛擬化機制提供的異常陷入機制和基于硬件輔助的內(nèi)存虛擬化機制來實現(xiàn),在VMM中,通過頁表來實施相應(yīng)的內(nèi)存隔離,以捕獲非法操作并及時處理。但是,采用現(xiàn)有技術(shù),VMM基于頁表粒度進行攔截,經(jīng)常會出現(xiàn)遺漏,例如惡意代碼連續(xù)操作特定頁的情況下,一旦第一次未攔截放行后,后續(xù)難以再次捕獲,即攔截效果較差,且實時攔截造成的開銷過大。技術(shù)實現(xiàn)要素:本發(fā)明提供一種虛擬機內(nèi)核的保護方法及裝置,用于解決現(xiàn)有技術(shù)對惡意代碼攔截效果差,且需要實時攔截的問題。本發(fā)明第一方面提供一種虛擬機內(nèi)核的保護方法,包括:截獲應(yīng)用程序發(fā)起的系統(tǒng)調(diào)用函數(shù);根據(jù)虛擬機原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將所述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核,根據(jù)所述影子內(nèi)核中的影子系統(tǒng)服務(wù)描述表SSDT確定所述系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址;其中,所述影子內(nèi)核構(gòu)建于所述虛擬機原始內(nèi)核的非分頁池中,所述影子內(nèi)核為根據(jù)所述虛擬機原始內(nèi)核的鏡像文件構(gòu)建的可執(zhí)行內(nèi)核代碼。進一步地,上述方法中還包括構(gòu)建所述影子內(nèi)核。其中,構(gòu)建所述影子內(nèi)核可以包括:根據(jù)所述鏡像文件所映射的地址以及影子內(nèi)核基地址,對所述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),并獲取修復(fù)后的待重定向數(shù)據(jù);將所述修復(fù)后的待重定向數(shù)據(jù)中SSDT對應(yīng)的數(shù)據(jù)和影子中斷描述表IDT對應(yīng)的數(shù)據(jù)進行備份,以獲取影子IDT和所述影子SSDT;將所述修復(fù)后的待重定向數(shù)據(jù)重定向到所述虛擬機原始內(nèi)核,以獲取目標重定向數(shù)據(jù),并將所述目標重定向數(shù)據(jù)中的SSDT和IDT替換為所述影子SSDT和所述影子IDT??蛇x地,所述將所述虛擬機原始內(nèi)核的文件進行復(fù)制以獲取鏡像文件之前,所述方法還包括:在所述虛擬機原始內(nèi)核的非分頁池中申請緩沖區(qū),其中,所述影子內(nèi)核構(gòu)建于所述緩沖區(qū)中??蛇x地,所述根據(jù)所述鏡像文件所映射的地址以及影子內(nèi)核基地址,對所述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),以獲取修復(fù)后的待重定向數(shù)據(jù),包括:根據(jù)公式Dactual-Dactual_imagebase=Ddefault-Ddefault_imagebase將所述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),以獲取修復(fù)后的待重定向數(shù);其中,Ddefault為所述待重定向數(shù)據(jù)的地址,Dactual_imagebase為所述緩沖區(qū)的首地址,Ddefault_imagebase為所述影子內(nèi)核基地址,Dactual為所述修復(fù)后的待重定向數(shù)的地址。進一步地,所述將所述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核之后,還包括:攔截應(yīng)用程序?qū)λ鎏摂M機原始內(nèi)核中的SSDT的讀寫操作。具體地,可以利用VMM針對應(yīng)用程序?qū)υ純?nèi)核中SSDT的讀寫操作進行攔截,并向上欺騙虛擬機內(nèi)部檢測代碼,同時忽略應(yīng)用程序?qū)υ純?nèi)核中SSDT的更改??蛇x地,所述虛擬機原始內(nèi)核中的SSDT包括:系統(tǒng)調(diào)用函數(shù)的標識和在虛擬機原始內(nèi)核中入口地址的對應(yīng)關(guān)系,所述影子SSDT包括:系統(tǒng)調(diào)用函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系;相應(yīng)地,所述根據(jù)所述影子內(nèi)核中的影子SSDT確定所述系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址,可以是:根據(jù)所述影子SSDT中系統(tǒng)調(diào)用函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系,確定所述系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。進一步地,所述方法還包括:截獲虛擬機中斷處理函數(shù);根據(jù)原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將所述中斷處理函數(shù)指向所述影子內(nèi)核,根據(jù)所述影子內(nèi)核中的影子IDT確定所述中斷處理函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。其中,所述將所述中斷處理函數(shù)指向所述影子內(nèi)核之后,還可以包括:攔截應(yīng)用程序?qū)μ摂M機原始內(nèi)核中的IDT的讀寫操作。具體地,所述影子IDT的基地址保存在IDTR寄存器中,以對中斷處理函數(shù)進行入口尋址和分發(fā),并利用VMM透明地對將IDTR的內(nèi)容存入指定地址單元指令進行攔截陷入。攔截到應(yīng)用程序?qū)υ純?nèi)核中IDT的讀寫操作后,返回原始內(nèi)核中IDT基地址和大小信息進行欺騙??蛇x地,虛擬機原始內(nèi)核中的IDT包括:中斷處理函數(shù)的標識和在虛擬機原始內(nèi)核中入口地址的對應(yīng)關(guān)系,所述影子IDT包括:中斷處理函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系;相應(yīng)地,所述根據(jù)所述影子內(nèi)核中的影子IDT確定所述中斷處理函數(shù)在影子內(nèi)核 中對應(yīng)的入口地址,包括:根據(jù)所述影子IDT中中斷處理函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系,確定所述中斷處理函數(shù)在影子內(nèi)核中對應(yīng)的入口地址??蛇x地,虛擬機原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值為虛擬機原始內(nèi)核基地址與影子內(nèi)核基地址相減的差值。本發(fā)明第二方面提供一種虛擬機內(nèi)核的保護裝置,包括:第一截獲模塊,用于截獲應(yīng)用程序發(fā)起的系統(tǒng)調(diào)用函數(shù);第一轉(zhuǎn)移模塊,用于根據(jù)虛擬機原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將所述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核,根據(jù)所述影子內(nèi)核中的影子系統(tǒng)服務(wù)描述表SSDT確定所述系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址;其中,所述影子內(nèi)核構(gòu)建于所述虛擬機原始內(nèi)核的非分頁池中,所述影子內(nèi)核為根據(jù)所述虛擬機原始內(nèi)核的鏡像文件構(gòu)建的可執(zhí)行內(nèi)核代碼。進一步地,所述裝置還包括:構(gòu)建模塊,用于構(gòu)建所述影子內(nèi)核。所述構(gòu)建模塊,包括:復(fù)制單元,用于將所述虛擬機原始內(nèi)核的文件進行復(fù)制以獲取鏡像文件;映射單元,用于將所述鏡像文件按照可執(zhí)行格式文件映射到所述虛擬機原始內(nèi)核的非分頁池中,以形成影子內(nèi)核初始代碼;第一重定向單元,用于根據(jù)所述鏡像文件所映射的地址以及影子內(nèi)核基地址,對所述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),并獲取修復(fù)后的待重定向數(shù)據(jù);備份單元,用于將所述修復(fù)后的待重定向數(shù)據(jù)中SSDT對應(yīng)的數(shù)據(jù)和影子中斷描述表IDT對應(yīng)的數(shù)據(jù)進行備份,以獲取影子IDT和所述影子SSDT;第二重定向單元,用于將所述修復(fù)后的待重定向數(shù)據(jù)重定向到所述虛擬機原始內(nèi)核,以獲取目標重定向數(shù)據(jù),并將所述目標重定向數(shù)據(jù)中的SSDT和IDT替換為所述影子SSDT和所述影子IDT??蛇x地,所述裝置還包括:申請模塊,用于在所述復(fù)制單元將所述虛擬機原始內(nèi)核的文件進行復(fù)制以獲取鏡像文件之前,在所述虛擬機原始內(nèi)核的非分頁池中申請緩沖區(qū),其中,所述影子內(nèi)核構(gòu)建于所述緩沖區(qū)中。可選地,所述第一重定向單元,具體用于根據(jù)公式Dactual-Dactual_imagebase=Ddefault-Ddefault_imagebase將所述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),以獲取修復(fù)后的待重定向數(shù);其中,Ddefault為所述待重定向數(shù)據(jù)的地址,Dactual_imagebase為所述緩沖區(qū)的首地址,Ddefault_imagebase為所述影子內(nèi)核基地址,Dactual為所述修復(fù)后的待重定向數(shù)的地址。進一步地,所述裝置還包括:第一攔截模塊,用于攔截應(yīng)用程序?qū)λ鎏摂M機原始內(nèi)核中的SSDT的讀寫操作??蛇x地,所述虛擬機原始內(nèi)核中的SSDT包括:系統(tǒng)調(diào)用函數(shù)的標識和在虛擬機原始內(nèi)核中入口地址的對應(yīng)關(guān)系,所述影子SSDT包括:系統(tǒng)調(diào)用函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系;相應(yīng)地,所述第一轉(zhuǎn)移模塊,具體用于根據(jù)所述影子SSDT中系統(tǒng)調(diào)用函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系,確定所述系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。進一步地,所述裝置還包括:第二截獲模塊,用于截獲虛擬機中斷處理函數(shù);第二轉(zhuǎn)移模塊,用于根據(jù)原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將所述中斷處理函數(shù)指向所述影子內(nèi)核,根據(jù)所述影子內(nèi)核中的影子IDT確定所述中斷處理函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。所述裝置還包括:第二攔截模塊,用于攔截所述應(yīng)用程序?qū)μ摂M機原始內(nèi)核中的IDT的讀寫操作。所述虛擬機原始內(nèi)核中的IDT包括:中斷處理函數(shù)的標識和在虛擬機原始內(nèi)核中入口地址的對應(yīng)關(guān)系,所述影子IDT包括:中斷處理函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系;相應(yīng)地,所述第二轉(zhuǎn)移模塊,具體用于根據(jù)所述影子IDT中中斷處理函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系,確定所述中斷處理函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。本發(fā)明第三方面提供一種虛擬機內(nèi)核的保護裝置,包括:處理器、接口電路、存儲器和總線,其中,所述處理器、所述接口電路和所述存儲器通過所述總線連接并完成相互間的通信,其中所述存儲器中存儲一組程序代碼,所述處理器調(diào)用所述存儲器中存儲的程序代碼,執(zhí)行以下操作:截獲應(yīng)用程序發(fā)起的系統(tǒng)調(diào)用函數(shù);根據(jù)虛擬機原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將所述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核,根據(jù)所述影子內(nèi)核中的影子系統(tǒng)服務(wù)描述表SSDT確定所述系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址;其中,所述影子內(nèi)核構(gòu)建于所述虛擬機原始內(nèi)核的非分頁池中,所述影子內(nèi)核為根據(jù)所述虛擬機原始內(nèi)核的鏡像文件構(gòu)建的可執(zhí)行內(nèi)核代碼。進一步地,所述處理器還用于構(gòu)建所述影子內(nèi)核。具體地:將所述虛擬機原始內(nèi)核的文件進行復(fù)制以獲取鏡像文件;將所述鏡像文件按照可執(zhí)行格式文件映射到所述虛擬機原始內(nèi)核的非分頁池中,以形成影子內(nèi)核初始代碼;根據(jù)所述鏡像文件所映射的地址以及影子內(nèi)核基地址,對所述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),并獲取修復(fù)后的待重定向數(shù)據(jù);將所述修復(fù)后的待重定向數(shù)據(jù)中SSDT對應(yīng)的數(shù)據(jù)和影子中斷描述表IDT對應(yīng)的數(shù)據(jù)進行備份,以獲取影子IDT和所述影子SSDT;將所述修復(fù)后的待重定向數(shù)據(jù)重定向到所述虛擬機原始內(nèi)核,以獲取目標重定向數(shù)據(jù),并將所述目標重定向數(shù)據(jù)中的SSDT和IDT替換為所述影子SSDT和所述影子IDT??蛇x地,處理器將所述虛擬機原始內(nèi)核的文件進行復(fù)制以獲取鏡像文件之前,在所述虛擬機原始內(nèi)核的非分頁池中申請緩沖區(qū),其中,所述影子內(nèi)核構(gòu)建于所述緩沖區(qū)中。處理器根據(jù)所述鏡像文件所映射的地址以及影子內(nèi)核基地址,對所述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),以獲取修復(fù)后的待重定向數(shù)據(jù),可以為:根據(jù)公式Dactual-Dactual_imagebase=Ddefault-Ddefault_imagebase將所述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),以獲取修復(fù)后的待重定向數(shù);其中,Ddefault為所述待重定向數(shù)據(jù)的地址,Dactual_imagebase為所述緩沖區(qū)的首 地址,Ddefault_imagebase為所述影子內(nèi)核基地址,Dactual為所述修復(fù)后的待重定向數(shù)的地址。處理器將所述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核之后,還用于攔截應(yīng)用程序?qū)λ鎏摂M機原始內(nèi)核中的SSDT的讀寫操作。所述虛擬機原始內(nèi)核中的SSDT包括:系統(tǒng)調(diào)用函數(shù)的標識和在虛擬機原始內(nèi)核中入口地址的對應(yīng)關(guān)系,所述影子SSDT包括:系統(tǒng)調(diào)用函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系;相應(yīng)地,所述處理器具體用于根據(jù)所述影子SSDT中系統(tǒng)調(diào)用函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系,確定所述系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。進一步地,所述處理器,還用于截獲虛擬機中斷處理函數(shù);根據(jù)原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將所述中斷處理函數(shù)指向所述影子內(nèi)核,根據(jù)所述影子內(nèi)核中的影子IDT確定所述中斷處理函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。進一步地,所述處理器將所述中斷處理函數(shù)指向所述影子內(nèi)核之后,還用于攔截應(yīng)用程序?qū)μ摂M機原始內(nèi)核中的IDT的讀寫操作。所述虛擬機原始內(nèi)核中的IDT包括:中斷處理函數(shù)的標識和在虛擬機原始內(nèi)核中入口地址的對應(yīng)關(guān)系,所述影子IDT包括:中斷處理函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系;相應(yīng)地,處理器具體用于根據(jù)所述影子IDT中中斷處理函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系,確定所述中斷處理函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。本發(fā)明實施例提供的虛擬機內(nèi)核的保護方法及裝置中,通過截獲應(yīng)用程序發(fā)起的系統(tǒng)調(diào)用函數(shù),根據(jù)虛擬機原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將上述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核,根據(jù)影子內(nèi)核中的影子SSDT確定系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址,實現(xiàn)了系統(tǒng)調(diào)用路徑完全在影子內(nèi)核的純凈代碼中執(zhí)行,保證了系統(tǒng)調(diào)用路徑的完整性,從而也保證了整個內(nèi)核代碼運行的完整性。且影子內(nèi)核構(gòu)建在虛擬機原始內(nèi)核的非分頁池中構(gòu)建,簡單易實現(xiàn),也不會在注冊表等其他地方留下痕跡,安全性更高。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明提供的虛擬機平臺實施例一的架構(gòu)示意圖;圖2為本發(fā)明提供的虛擬機平臺實施例二的架構(gòu)示意圖;圖3為本發(fā)明提供的虛擬機內(nèi)核的保護方法實施例一的流程示意圖;圖4為本發(fā)明提供的虛擬機內(nèi)核的保護方法實施例二的流程示意圖;圖5為本發(fā)明提供的虛擬機內(nèi)核的保護方法實施例三的流程示意圖;圖6為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例一的結(jié)構(gòu)示意圖;圖7為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例二的結(jié)構(gòu)示意圖;圖8為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例三的結(jié)構(gòu)示意圖;圖9為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例四的結(jié)構(gòu)示意圖;圖10為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例五的結(jié)構(gòu)示意圖;圖11為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例六的結(jié)構(gòu)示意圖;圖12為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例七的結(jié)構(gòu)示意圖。具體實施方式本發(fā)明實施例應(yīng)用于虛擬機平臺,虛擬機平臺的部署架構(gòu)可以有兩種模式:圖1為本發(fā)明提供的虛擬機平臺實施例一的架構(gòu)示意圖,圖1為虛擬機平臺的裸機模式,如圖1所示,虛擬機平臺可以包括多個虛擬機(圖1中以虛擬機1和虛擬機2為例),虛擬機下層包括VMM,VMM下層包括底層硬件。其中,虛擬機中包括:虛擬機應(yīng)用層和虛擬機內(nèi)核層,本發(fā)明中,虛擬機內(nèi)核層還包括:監(jiān)控代理。圖2為本發(fā)明提供的虛擬機平臺實施例二的架構(gòu)示意圖,圖2為虛擬機平臺的宿主模式,如圖2所示,該虛擬機平臺可以包括多個虛擬機(圖2中以虛擬機1和虛擬機2為例),與虛擬機同層還可以包括普通宿主機用戶進程,在虛擬機下層是宿主機,VMM在宿主機的操作系統(tǒng)上運行。宿主機下層是底層硬件,宿主模式中,由宿主機直接控制底層硬件。其中,虛擬機中包括: 虛擬機應(yīng)用層和虛擬機內(nèi)核層,本發(fā)明中,虛擬機內(nèi)核層還包括:監(jiān)控代理。圖3為本發(fā)明提供的虛擬機內(nèi)核的保護方法實施例一的流程示意圖,該方法的執(zhí)行主體可以是虛擬機平臺,如圖3所示,該方法包括:S301、截獲應(yīng)用程序發(fā)起的系統(tǒng)調(diào)用函數(shù)。這些系統(tǒng)調(diào)用函數(shù)用于請求完成相關(guān)的系統(tǒng)調(diào)用處理。S302、根據(jù)虛擬機原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將上述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核,根據(jù)影子內(nèi)核中的影子系統(tǒng)服務(wù)描述表(SystemServicesDescriptorTable,簡稱SSDT)確定該系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。其中,該影子內(nèi)核構(gòu)建于虛擬機原始內(nèi)核的非分頁池,該影子內(nèi)核為根據(jù)上述虛擬機原始內(nèi)核的鏡像文件構(gòu)建的可執(zhí)行內(nèi)核代碼。虛擬機原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值是固定不變的,可以通過影子內(nèi)核基地址和原始內(nèi)核基地址相減獲取。具體地,在截獲到應(yīng)用程序發(fā)起的系統(tǒng)調(diào)用函數(shù)后,不再進入虛擬機原始內(nèi)核進行處理,而是將應(yīng)用程序的系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核,由影子內(nèi)核來進行必要的處理。這里影子內(nèi)核是根據(jù)原始內(nèi)核的鏡像文件建立的可執(zhí)行內(nèi)核代碼,該可執(zhí)行代碼是純凈的內(nèi)核代碼。具體實現(xiàn)過程中,可以通過在VMM層透明地設(shè)置快速系統(tǒng)調(diào)用,將上述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核,并根據(jù)影子內(nèi)核中的影子SSDT確定系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。本實施例中,通過截獲應(yīng)用程序發(fā)起的系統(tǒng)調(diào)用函數(shù),根據(jù)虛擬機原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將上述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核,根據(jù)影子內(nèi)核中的影子SSDT確定系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址,實現(xiàn)了系統(tǒng)調(diào)用路徑完全在影子內(nèi)核的純凈代碼中執(zhí)行,保證了系統(tǒng)調(diào)用路徑的完整性,從而也保證了整個內(nèi)核代碼運行的完整性。且影子內(nèi)核構(gòu)建在虛擬機原始內(nèi)核的非分頁池中構(gòu)建,簡單易實現(xiàn),也不會在注冊表等其他地方留下痕跡,安全性更高。在將上述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核之后,還可以攔截應(yīng)用程序?qū)ι鲜鎏摂M機原始內(nèi)核中的SSDT的讀寫操作。具體實現(xiàn)過程中,將上述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核之后,可以利用 VMM針對應(yīng)用程序?qū)υ純?nèi)核中SSDT的讀寫操作進行攔截,并向上欺騙虛擬機內(nèi)部檢測代碼,同時忽略應(yīng)用程序?qū)υ純?nèi)核中SSDT的更改,從而可以確保系統(tǒng)調(diào)用路徑完全在影子內(nèi)核中完成,保證了系統(tǒng)調(diào)用路徑的完整性。具體地,可以設(shè)置虛擬機系統(tǒng)調(diào)用入口讀寫陷入,如果有第三方應(yīng)用程序?qū)υ純?nèi)核中SSDT進行讀寫操作,就向該應(yīng)用程序返回原始內(nèi)核中SSDT,并向上欺騙虛擬機內(nèi)部檢測代碼,同時忽略應(yīng)用程序?qū)υ純?nèi)核中SSDT的更改。其中,虛擬機原始內(nèi)核中的SSDT包括:系統(tǒng)調(diào)用函數(shù)的標識和在虛擬機原始內(nèi)核中入口地址的對應(yīng)關(guān)系;影子SSDT中包括:系統(tǒng)調(diào)用函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系。相應(yīng)地,上述根據(jù)影子內(nèi)核中的影子SSDT確定該系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址可以是:根據(jù)影子SSDT中系統(tǒng)調(diào)用函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系,確定上述系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。上述系統(tǒng)調(diào)用函數(shù)的標識可以是系統(tǒng)調(diào)用函數(shù)的編號,但不以此為限。圖4為本發(fā)明提供的虛擬機內(nèi)核的保護方法實施例二的流程示意圖,可選地,虛擬機平臺也可以對虛擬機內(nèi)部、外部的中斷處理執(zhí)行與上述系統(tǒng)調(diào)用同樣的處理。具體地,S401、截獲虛擬機中斷處理函數(shù)。這些中斷處理函數(shù)可以是虛擬機內(nèi)部或外部發(fā)起的中斷處理函數(shù),用于請求執(zhí)行虛擬機內(nèi)部或外部的中斷處理。S402、根據(jù)原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將上述中斷處理函數(shù)指向影子內(nèi)核,根據(jù)影子內(nèi)核中的影子中斷描述表(InterruptDescriptorTable,簡稱IDT)確定該中斷處理函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。進而,中斷處理函數(shù)轉(zhuǎn)到影子內(nèi)核進行處理,確保中斷處理的完整性。進一步地,將上述中斷處理函數(shù)指向影子內(nèi)核之后,還可以攔截應(yīng)用程序?qū)μ摂M機原始內(nèi)核中的IDT的讀寫操作。具體實現(xiàn)過程中,在每次VMM運行虛擬機之前設(shè)置保存影子IDT基地址的中斷描述符表(InterruptDescriptorTableRegister,簡稱IDTR)寄存器值,使該IDTR寄存器包含影子IDT中的基地址,這樣就可以對中斷處理函數(shù)進 行入口尋址和分發(fā),同時利用VMM透明地對將IDTR的內(nèi)容存入指定地址單元指令(StoreInterruptDescriptorTableRegister,簡稱SIDT指令)進行攔截陷入。一旦發(fā)現(xiàn)可疑地第三方應(yīng)用程序?qū)υ純?nèi)核中IDT的讀寫操作,就返回原始內(nèi)核中IDT基地址和大小信息進行欺騙,但是忽略其更改操作,實現(xiàn)對原始內(nèi)核IDT讀寫操作的攔截,而且IDTR寄存器使用的是影子DIT表的基地址,因而保證了各中斷處理過程均能在影子內(nèi)核代碼上執(zhí)行,確保整個流程的完整性。虛擬機原始內(nèi)核中IDT包括:中斷處理函數(shù)的標識和在虛擬機原始內(nèi)核中入口地址的對應(yīng)關(guān)系。影子IDT包括:中斷處理函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系。相應(yīng)地,上述根據(jù)影子內(nèi)核中的影子IDT確定該中斷處理函數(shù)在影子內(nèi)核中對應(yīng)的入口地址,可以是:根據(jù)影子IDT中中斷處理函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系,確定上述中斷處理函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。其中,中斷處理函數(shù)的標識可以是中斷處理函數(shù)的中斷號。需要說明的是,并不一定是所有的系統(tǒng)調(diào)用函數(shù)和中斷處理函數(shù)都需要指向影子內(nèi)核,可以只將對應(yīng)的受保護的系統(tǒng)調(diào)用函數(shù)和中斷處理函數(shù)轉(zhuǎn)到影子內(nèi)核進行處理,其它地還是可以直接在原始內(nèi)核中進行處理,具體地,可以提前預(yù)設(shè)好哪些系統(tǒng)調(diào)用函數(shù)和中斷處理函數(shù)需要受保護,在此不作限制。圖5為本發(fā)明提供的虛擬機內(nèi)核的保護方法實施例三的流程示意圖,在上述實施例的基礎(chǔ)上,截獲應(yīng)用程序發(fā)起的系統(tǒng)調(diào)用函數(shù)之前,還包括構(gòu)建上述影子內(nèi)核。具體地,可以由虛擬機平臺上的監(jiān)控代理模塊來完成影子內(nèi)核的構(gòu)建。監(jiān)控代理模塊構(gòu)建完影子內(nèi)核后,會將影子內(nèi)核的相關(guān)信息,包括其中影子SSDT和影子IDT的基地址等信息傳遞給VMM,以便于后續(xù)VMM執(zhí)行攔截操作。如圖5所示,上述構(gòu)建影子內(nèi)核的方法包括:S501、將上述虛擬機原始內(nèi)核的文件進行復(fù)制以獲取鏡像文件。S502、將該鏡像文件按照可執(zhí)行格式文件映射到虛擬機原始內(nèi)核的非分 頁池中,形成影子內(nèi)核初始代碼。本實施例中,以Windows系統(tǒng)為例,對應(yīng)的可執(zhí)行格式為Windows可執(zhí)行(PortableExecutable,簡稱PE)文件格式。但不以此為限,如果應(yīng)用到其它操作系統(tǒng),則采用對應(yīng)的可執(zhí)行文件格式即可。具體實現(xiàn)過程中,先打開原始內(nèi)核,讀取原始內(nèi)核的文件,并進行復(fù)制獲取原始內(nèi)核的鏡像文件,將該鏡像文件按照可執(zhí)行格式映射到影子內(nèi)核的建立位置,例如將鏡像文件按照可執(zhí)行格式映射到虛擬機原始內(nèi)核的非分頁池中。具體地,讀取原內(nèi)核的文件包括讀取原內(nèi)核中文件的基地址、大小等內(nèi)容。S503、根據(jù)上述鏡像文件所映射的地址以及影子內(nèi)核基地址,對上述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),獲取修復(fù)后的待重定向數(shù)據(jù)。由于構(gòu)建影子內(nèi)核的過程中,虛擬機的原始內(nèi)核可能已經(jīng)開始運行了,因此原始內(nèi)核的一些內(nèi)核數(shù)據(jù)已經(jīng)不再是初始化后的內(nèi)容,例如某些全局的時間數(shù)據(jù)、性能計算相關(guān)數(shù)據(jù)等。鏡像文件按照可執(zhí)行格式映射到虛擬機原始內(nèi)核的非分頁池中時,可能會加載到一個隨機的虛擬地址,而不是默認的影子內(nèi)核基地址,因而就需要進行重定向,修復(fù)后這些待重定向數(shù)據(jù)會指向影子內(nèi)核中對應(yīng)的地址。其中,上述可執(zhí)行格式文件中的重定向表中會標識哪些數(shù)據(jù)需要重定向。具體實現(xiàn)過程中,可以根據(jù)可執(zhí)行格式文件中的重定向表獲取待重定向數(shù)據(jù)的地址Ddefault,進而獲取構(gòu)建影子內(nèi)核的位置的首地址,例如在非分頁池中申請的用于構(gòu)建影子內(nèi)核的緩沖區(qū)的首地址Dactual_imagebase,Dactual_imagebase也就是鏡像文件按照可執(zhí)行格式實際要加載的地址,再根據(jù)上述可執(zhí)行格式文件默認的建立影子內(nèi)核基地址Ddefault_imagebase計算獲取修復(fù)后的待重定向數(shù)據(jù)的地址Dactual。重定向數(shù)據(jù)重定向前與重定向后的相對基地址的偏移是不變的,因此,基于這一原理,可以具體采用的公式可以為:Dactual-Dactual_imagebase=Ddefault-Ddefault_imagebase。修復(fù)完一個待重定向數(shù)據(jù)后,再在重定向表中獲取下一個待重定向數(shù)據(jù)的當(dāng)前地址,以完成修復(fù),依次類推,完成所有待重定向數(shù)據(jù)的修復(fù),形成修復(fù)后的待重定向數(shù)據(jù)。S504、將上述修復(fù)后的待重定向數(shù)據(jù)中SSDT對應(yīng)的數(shù)據(jù)和IDT對應(yīng)的數(shù)據(jù)進行備份,以獲取影子SSDT和影子IDT。上述待重定向數(shù)據(jù)中包括SSDT和IDT,上述修復(fù)后的待重定向數(shù)據(jù)均指向影子內(nèi)核中對應(yīng)的地址,例如SSDT中系統(tǒng)調(diào)用函數(shù)的標識對應(yīng)的入口地址都變?yōu)橛白觾?nèi)核中的地址,IDT中中斷處理函數(shù)的標識對應(yīng)的地址也都變?yōu)橛白觾?nèi)核中的地址,將目前系統(tǒng)調(diào)用函數(shù)的標識對應(yīng)的地址、以及中斷處理函數(shù)的標識對應(yīng)的地址寫入備份數(shù)組進行備份,構(gòu)建影子SSDT和影子IDT。具體實現(xiàn)過程中,先獲取待重定向數(shù)據(jù)中SSDT的基地址和IDT的基地址,根據(jù)上述修復(fù)后的待重定向數(shù)據(jù)中SSDT的基地址和IDT的基地址將上述修復(fù)后的待重定向數(shù)據(jù)中SSDT對應(yīng)的數(shù)據(jù)和IDT對應(yīng)的數(shù)據(jù)進行備份。其中,舉例說明:上述修復(fù)后的待重定向數(shù)據(jù)中SSDT的基地址由下述公式確定:NewSSDTBaseAddr=OrigSSDTBaseAddr+delta,其中,NewSSDTBaseAddr表示上述修復(fù)后的待重定向數(shù)據(jù)中SSDT的基地址,OrigSSDTBaseAddr表示原始內(nèi)核中SSDT的基地址,delta表示原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值。上述修復(fù)后的待重定向數(shù)據(jù)中IDT的基地址確定方法與上述修復(fù)后的待重定向數(shù)據(jù)中SSDT的基地址確定方法類似,在此不再贅述。S505、將上述修復(fù)后的待重定向數(shù)據(jù)重定向到虛擬機原始內(nèi)核,以獲取目標重定向數(shù)據(jù),并將該目標重定向數(shù)據(jù)中的SSDT和IDT替換為上述影子SSDT和影子IDT。由于原始內(nèi)核數(shù)據(jù)是經(jīng)過內(nèi)核初始化及運行后的正常數(shù)據(jù),可能在運行過程中發(fā)生變化,而建立影子內(nèi)核時讀取的只是剛初始化后的數(shù)據(jù),而且修復(fù)后的上述待重定向數(shù)據(jù)中有一些未初始化數(shù)據(jù),這些數(shù)據(jù)在初次被調(diào)用時才會初始化,但是原始內(nèi)核中對應(yīng)的數(shù)據(jù)可能已經(jīng)被調(diào)用完成了初始化。所以上述修復(fù)后的待重定向數(shù)據(jù)都需要再重定向到原始內(nèi)核,這樣影子內(nèi)核才 能正常執(zhí)行,避免引用全局內(nèi)核數(shù)據(jù)錯誤而導(dǎo)致系統(tǒng)藍屏。重定向后這些修復(fù)后的待重定向數(shù)據(jù)又都指向了原始內(nèi)核,其中,上述SSDT中的系統(tǒng)調(diào)用函數(shù)的標識對應(yīng)的地址變成原始內(nèi)核中的地址,同樣,IDT中的中斷處理函數(shù)的標識對應(yīng)的地址也變成原始內(nèi)核中的地址相同。但是,需要把影子內(nèi)核的SSDT和IDT替換成S503中的影子SSDT和影子IDT,以使影子SSDT中系統(tǒng)調(diào)用函數(shù)的地址指向影子內(nèi)核中對應(yīng)的地址、且IDT中的中斷處理函數(shù)指向影子內(nèi)核中對應(yīng)的地址。進一步地,上述S501之前:還可以在虛擬機原始內(nèi)核的非分頁池中申請緩沖區(qū)。需要說明的是,構(gòu)建影子內(nèi)核之前,在虛擬機內(nèi)核加載完成后,虛擬機平臺會執(zhí)行初始化函數(shù),得到原始內(nèi)核基地址以及系統(tǒng)調(diào)用函數(shù)在原始內(nèi)核中的入口地址,接下來在虛擬機原始內(nèi)核的非分頁池中開辟存放原始內(nèi)核鏡像文件的緩沖區(qū),在該緩沖區(qū)完成影子內(nèi)核的構(gòu)建。本發(fā)明實施例中構(gòu)建影子內(nèi)核的方法僅需要申請一塊緩沖區(qū)進行影子內(nèi)核的構(gòu)建,在構(gòu)建過程中也只需要利用操作系統(tǒng)的基本原理解析文件的可執(zhí)行格式,然后通過簡單的復(fù)制、映射完成影子內(nèi)核的構(gòu)建,其實現(xiàn)方法簡單通用,容易擴展到各類操作系統(tǒng),且整個構(gòu)建過程中影子內(nèi)核不會出現(xiàn)在系統(tǒng)的注冊表、驅(qū)動鏈表、對象目錄表中,其隱蔽性非常好,不易被第三方應(yīng)用程序發(fā)現(xiàn)并攻擊。圖6為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例一的結(jié)構(gòu)示意圖,該裝置可以集成于虛擬機平臺,如圖6所示,該裝置包括:第一截獲模塊601和第一轉(zhuǎn)移模塊602,其中:第一截獲模塊601,用于截獲應(yīng)用程序發(fā)起的系統(tǒng)調(diào)用函數(shù)。第一轉(zhuǎn)移模塊602,用于根據(jù)虛擬機原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將所述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核,根據(jù)所述影子內(nèi)核中的影子SSDT確定所述系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。其中,所述影子內(nèi)核構(gòu)建于所述虛擬機原始內(nèi)核的非分頁池中,所述影子內(nèi)核為根據(jù)所述虛擬機原始內(nèi)核的鏡像文件構(gòu)建的可執(zhí)行內(nèi)核代碼。本實施例中,通過截獲應(yīng)用程序發(fā)起的系統(tǒng)調(diào)用函數(shù),根據(jù)虛擬機原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將上述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核, 根據(jù)影子內(nèi)核中的影子SSDT確定系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址,實現(xiàn)了系統(tǒng)調(diào)用路徑完全在影子內(nèi)核的純凈代碼中執(zhí)行,保證了系統(tǒng)調(diào)用路徑的完整性,從而也保證了整個內(nèi)核代碼運行的完整性。且影子內(nèi)核構(gòu)建在虛擬機原始內(nèi)核的非分頁池中構(gòu)建,簡單易實現(xiàn),也不會在注冊表等其他地方留下痕跡,安全性更高。圖7為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例二的結(jié)構(gòu)示意圖,如圖7所示,在圖6的基礎(chǔ)上,該裝置還可以包括:構(gòu)建模塊603,用于構(gòu)建所述影子內(nèi)核。參照圖7,具體地,構(gòu)建模塊603可以包括:復(fù)制單元701、映射單元702、第一重定向單元703、備份單元704以及第二重定向單元705,其中:復(fù)制單元701,用于將所述虛擬機原始內(nèi)核的文件進行復(fù)制以獲取鏡像文件。映射單元702,用于將所述鏡像文件按照可執(zhí)行格式文件映射到所述虛擬機原始內(nèi)核的非分頁池中,以形成影子內(nèi)核初始代碼。第一重定向單元703,用于根據(jù)所述鏡像文件所映射的地址以及影子內(nèi)核基地址,對所述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),并獲取修復(fù)后的待重定向數(shù)據(jù)。備份單元704,用于將所述修復(fù)后的待重定向數(shù)據(jù)中SSDT對應(yīng)的數(shù)據(jù)和影子中斷描述表IDT對應(yīng)的數(shù)據(jù)進行備份,以獲取影子IDT和所述影子SSDT。第二重定向單元705,用于將所述修復(fù)后的待重定向數(shù)據(jù)重定向到所述虛擬機原始內(nèi)核,以獲取目標重定向數(shù)據(jù),并將所述目標重定向數(shù)據(jù)中的SSDT和IDT替換為所述影子SSDT和所述影子IDT。圖8為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例三的結(jié)構(gòu)示意圖,如圖8所示,在圖7的基礎(chǔ)上,該裝置還可以包括:申請模塊801,用于在復(fù)制單元701將所述虛擬機原始內(nèi)核的文件進行復(fù)制以獲取鏡像文件之前,在所述虛擬機原始內(nèi)核的非分頁池中申請緩沖區(qū),其中,所述影子內(nèi)核構(gòu)建于所述緩沖區(qū)中。進一步地,上述第一重定向單元702,具體用于根據(jù)公式Dactual-Dactual_imagebase=Ddefault-Ddefault_imagebase將所述影子內(nèi)核初始代碼中的待重定向 數(shù)據(jù)進行修復(fù),以獲取修復(fù)后的待重定向數(shù);其中,Ddefault為所述待重定向數(shù)據(jù)的地址,Dactual_imagebase為所述緩沖區(qū)的首地址,Ddefault_imagebase為所述影子內(nèi)核基地址,Dactual為所述修復(fù)后的待重定向數(shù)的地址。圖9為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例四的結(jié)構(gòu)示意圖,如圖9所示,在上述圖6的基礎(chǔ)上,該裝置還可以包括:第一攔截模塊604,用于攔截應(yīng)用程序?qū)λ鎏摂M機原始內(nèi)核中的SSDT的讀寫操作。當(dāng)然,也可以在圖7、圖8的基礎(chǔ)上,在此未示出。進一步地,虛擬機原始內(nèi)核中的SSDT包括:系統(tǒng)調(diào)用函數(shù)的標識和在虛擬機原始內(nèi)核中入口地址的對應(yīng)關(guān)系,影子SSDT包括:系統(tǒng)調(diào)用函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系;相應(yīng)地,第一轉(zhuǎn)移模塊602,具體用于根據(jù)所述影子SSDT中系統(tǒng)調(diào)用函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系,確定所述系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。圖10為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例五的結(jié)構(gòu)示意圖,如圖10所示,在圖6的基礎(chǔ)上,該裝置還可以包括:第二截獲模塊901和第二轉(zhuǎn)移模塊902,當(dāng)然,也可以在圖7~圖9任一個的基礎(chǔ)上,在此未示出。其中:第二截獲模塊901,用于截獲虛擬機中斷處理函數(shù)。第二轉(zhuǎn)移模塊902,用于根據(jù)原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將所述中斷處理函數(shù)指向所述影子內(nèi)核,根據(jù)所述影子內(nèi)核中的影子IDT確定所述中斷處理函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。圖11為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例五的結(jié)構(gòu)示意圖,如圖11所示,在圖10的基礎(chǔ)上,該裝置還可以包括:第二攔截模塊110,用于攔截應(yīng)用程序?qū)μ摂M機原始內(nèi)核中的IDT的讀寫操作。進一步地,所述虛擬機原始內(nèi)核中的IDT包括:中斷處理函數(shù)的標識和在虛擬機原始內(nèi)核中入口地址的對應(yīng)關(guān)系,所述影子IDT包括:中斷處理函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系;相應(yīng)地,第二轉(zhuǎn)移模塊902,具體用于根據(jù)所述影子IDT中中斷處理函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系,確定所述中斷處理函數(shù)在影子內(nèi)核中 對應(yīng)的入口地址。上述這些模塊、單元可以由虛擬機內(nèi)核的保護裝置的處理元件實現(xiàn),且該處理元件可以為單獨設(shè)立的處理元件,也可以集成在虛擬機內(nèi)核的保護裝置的某一個處理元件中實現(xiàn),此外,也可以以程序代碼的形式存儲于虛擬機內(nèi)核的保護裝置的存儲元件中,由虛擬機內(nèi)核的保護裝置的某一個處理元件調(diào)用并執(zhí)行以上功能。該裝置用于執(zhí)行前述方法實施例,其實現(xiàn)原理和技術(shù)效果類似,在此不再贅述。圖12為本發(fā)明提供的虛擬機內(nèi)核的保護裝置實施例七的結(jié)構(gòu)示意圖,如圖12所示,該裝置包括:處理器111、接口電路112、存儲器113和總線114,其中,處理器111、接口電路112以及存儲器113通過總線114連接并完成相互間的通信,存儲器113中存儲一組程序代碼,處理器111調(diào)用存儲器113中存儲的程序代碼,執(zhí)行以下操作:截獲應(yīng)用程序發(fā)起的系統(tǒng)調(diào)用函數(shù);根據(jù)虛擬機原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將所述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核,根據(jù)所述影子內(nèi)核中的影子系統(tǒng)服務(wù)描述表SSDT確定所述系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址;其中,所述影子內(nèi)核構(gòu)建于所述虛擬機原始內(nèi)核的非分頁池中,所述影子內(nèi)核為根據(jù)所述虛擬機原始內(nèi)核的鏡像文件構(gòu)建的可執(zhí)行內(nèi)核代碼。進一步地,處理器111還用于構(gòu)建所述影子內(nèi)核。處理器111構(gòu)建所述影子內(nèi)核,具體為:將所述虛擬機原始內(nèi)核的文件進行復(fù)制以獲取鏡像文件;將所述鏡像文件按照可執(zhí)行格式文件映射到所述虛擬機原始內(nèi)核的非分頁池中,以形成影子內(nèi)核初始代碼;根據(jù)所述鏡像文件所映射的地址以及影子內(nèi)核基地址,對所述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),并獲取修復(fù)后的待重定向數(shù)據(jù);將所述修復(fù)后的待重定向數(shù)據(jù)中SSDT對應(yīng)的數(shù)據(jù)和影子中斷描述表IDT對應(yīng)的數(shù)據(jù)進行備份,以獲取影子IDT和所述影子SSDT;將所述修復(fù)后的待重定向數(shù)據(jù)重定向到所述虛擬機原始內(nèi)核,以獲取目標重定向數(shù)據(jù),并將所述目標重定向數(shù)據(jù)中的SSDT和IDT替換為所述影子 SSDT和所述影子IDT??蛇x地,處理器111將所述虛擬機原始內(nèi)核的文件進行復(fù)制以獲取鏡像文件之前,在所述虛擬機原始內(nèi)核的非分頁池中申請緩沖區(qū),其中,所述影子內(nèi)核構(gòu)建于所述緩沖區(qū)中。處理器111根據(jù)所述鏡像文件所映射的地址以及影子內(nèi)核基地址,對所述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),以獲取修復(fù)后的待重定向數(shù)據(jù),可以為:根據(jù)公式Dactual-Dactual_imagebase=Ddefault-Ddefault_imagebase將所述影子內(nèi)核初始代碼中的待重定向數(shù)據(jù)進行修復(fù),以獲取修復(fù)后的待重定向數(shù);其中,Ddefault為所述待重定向數(shù)據(jù)的地址,Dactual_imagebase為所述緩沖區(qū)的首地址,Ddefault_imagebase為所述影子內(nèi)核基地址,Dactual為所述修復(fù)后的待重定向數(shù)的地址。處理器111將所述系統(tǒng)調(diào)用函數(shù)指向影子內(nèi)核之后,還用于攔截應(yīng)用程序?qū)λ鎏摂M機原始內(nèi)核中的SSDT的讀寫操作。所述虛擬機原始內(nèi)核中的SSDT包括:系統(tǒng)調(diào)用函數(shù)的標識和在虛擬機原始內(nèi)核中入口地址的對應(yīng)關(guān)系,所述影子SSDT包括:系統(tǒng)調(diào)用函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系;相應(yīng)地,處理器111具體用于根據(jù)所述影子SSDT中系統(tǒng)調(diào)用函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系,確定所述系統(tǒng)調(diào)用函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。進一步地,處理器111還用于截獲虛擬機中斷處理函數(shù);根據(jù)原始內(nèi)核基地址與影子內(nèi)核基地址的偏移值,將所述中斷處理函數(shù)指向所述影子內(nèi)核,根據(jù)所述影子內(nèi)核中的影子IDT確定所述中斷處理函數(shù)在影子內(nèi)核中對應(yīng)的入口地址。進一步地,處理器111將所述中斷處理函數(shù)指向所述影子內(nèi)核之后,還用于攔截應(yīng)用程序?qū)μ摂M機原始內(nèi)核中的IDT的讀寫操作。可選地,所述虛擬機原始內(nèi)核中的IDT包括:中斷處理函數(shù)的標識和在虛擬機原始內(nèi)核中入口地址的對應(yīng)關(guān)系,所述影子IDT包括:中斷處理函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系;相應(yīng)地,處理器111具體用于根據(jù)所述影子IDT中中斷處理函數(shù)的標識和在影子內(nèi)核中入口地址的對應(yīng)關(guān)系,確定所述中斷處理函數(shù)在影子內(nèi)核中對應(yīng)的入 口地址。在本發(fā)明所提供的幾個實施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(英文:processor)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(英文:Read-OnlyMemory,簡稱:ROM)、隨機存取存儲器(英文:RandomAccessMemory,簡稱:RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1