專利名稱:基于操作系統(tǒng)層的虛擬方法及虛擬裝置的制作方法
技術領域:
本發(fā)明涉及計算機技術領域,尤其涉及一種基于操作系統(tǒng)層的虛擬方法 及虛擬裝置。
背景技術:
隨著計算機和互聯(lián)網的普及,安全威脅事件逐年攀升,惡意程序造成的 危害越來越嚴重,對故障容忍和入侵容忍系統(tǒng)的需求也不斷提高。這類系統(tǒng) 要求具有在現(xiàn)實環(huán)境中執(zhí)行不安全程序時,不會遭受永久性傷害的能力。
虛擬機技術能夠完美地滿足上述需求,因為它提供了與主機系統(tǒng)隔離的 可執(zhí)行環(huán)境。虛擬機技術是在一個物理主機上創(chuàng)建一個或多個可執(zhí)行環(huán)境的 技術。每個虛擬機代表了一個潛在的物理主機的實例,并且互不干擾。這種 隔離的屬性使虛擬機可以成為安全系統(tǒng)和錯誤容忍應用程序的基石。
發(fā)明人在實現(xiàn)本發(fā)明過程中發(fā)現(xiàn),現(xiàn)有虛擬機系統(tǒng)大部分為硬件層虛擬 機系統(tǒng),虛擬機技術需要硬件抽象層的支持,虛擬機建立的環(huán)境相當于整個 實際的操作環(huán)境,初始化這樣的虛擬機可能需要耗費大量的硬盤空間,而 且,現(xiàn)有的虛擬機系統(tǒng)在具體實現(xiàn)過程中,經常需要占用大量的系統(tǒng)資源, 并存在對系統(tǒng)性能造成損耗的可能。對于頻繁要求啟動和終止虛擬機的應用 程序來講,顯得不夠靈活,且有些現(xiàn)有虛擬機系統(tǒng)操作速度過于緩慢,不適 合實際應用。
發(fā)明內容
本發(fā)明實施例提供了 一種基于操作系統(tǒng)層的虛擬方法及虛擬裝置,在滿 足故障容忍和入侵容忍系統(tǒng)的需求下,具有占用系統(tǒng)資源少、靈活性高、啟 動延遲少的優(yōu)點。。
本發(fā)明實施例提供了一種基于操作系統(tǒng)層的虛擬方法,包括 在系統(tǒng)調用層截獲對系統(tǒng)資源的調用請求;
根據所述調用請求,將所述系統(tǒng)資源的主機路徑重定向為虛擬機目錄下 乂于應的^4圣;
根據重定向后的路徑,對所述系統(tǒng)資源執(zhí)行調用請求。 本發(fā)明實施例還提供了 一種基于操作系統(tǒng)層虛擬裝置,包括 攔截模塊,用于在系統(tǒng)調用層截獲對系統(tǒng)資源的調用請求;
重定向模塊,用于根據所述攔截模塊截獲的調用請求,將所述系統(tǒng)資源 的主沖;u洛徑重定向為虛擬一幾目錄下對應的^各徑;
執(zhí)行模塊,用于根據所述重定向模塊重定向后的路徑,對所述系統(tǒng)資源 執(zhí)行調用請求。
由上述本發(fā)明實施例提供的技術方案可以看出,本發(fā)明實施例中,通過 在系統(tǒng)調用層截獲對系統(tǒng)資源的調用請求;將所述系統(tǒng)資源的主機路徑重定 向為虛擬機目錄下對應的路徑;可以實現(xiàn)基于操作系統(tǒng)層的虛擬化,由于不 需要硬件抽象層的支持,所以在滿足了故障容忍和入侵容忍系統(tǒng)的需求下, 還具有占用系統(tǒng)資源少、靈活性高、啟動延遲少的特點。
圖l為本發(fā)明實施例提供的所述方法流程示意圖一; 圖2為本發(fā)明實施例提供的所述方法流程示意圖二; 圖3為本發(fā)明實施例提供的所述方法流程示意圖三;圖4為本發(fā)明實施例^是供的所述方法流程示意圖四;
圖5為本發(fā)明實施例提供的所述方法流程示意圖五; 圖6為本發(fā)明實施例提供的所述方法流程示意圖六; 圖7為本發(fā)明實施例提供的所述方法流程示意圖七; 圖8為本發(fā)明實施例提供的所述方法流程示意圖八; 圖9為本發(fā)明實施例提供的所述方法流程示意圖九; 圖IO為本發(fā)明實施例提供的所述方法流程示意圖十; 圖11為本發(fā)明實施例提供的所述方法流程示意圖十一; 圖12為本發(fā)明實施例提供的所述方法流程示意圖十二; 圖13為本發(fā)明實施例提供的所述方法流程示意圖十三; 圖14為本發(fā)明實施例提供的所述方法流程示意圖十四; 圖15為本發(fā)明實施例提供的所述系統(tǒng)結構示意圖一; 圖16為本發(fā)明實施例提供的所述系統(tǒng)結構示意圖二; 圖17為本發(fā)明實施例提供的所述系統(tǒng)結構示意圖三; 圖18為本發(fā)明實施例提供的所述執(zhí)行模塊結構示意圖。
具體實施例方式
本發(fā)明實施例提供了一種基于操作系統(tǒng)層的虛擬方法,如附圖1所示,該 方法具體可以包括
步驟0101,在系統(tǒng)調用層截獲對系統(tǒng)資源的調用請求。
步驟0102,根據調用請求,將系統(tǒng)資源的主機路徑重定向為虛擬機目錄 下對應的3各徑。
步驟0103,根據重定向后的路徑,對系統(tǒng)資源執(zhí)行調用請求。 本發(fā)明實施例中,還可以對系統(tǒng)資源進行寫時拷貝操作,具體為 如果調用請求為讀取系統(tǒng)資源,則向主機系統(tǒng)發(fā)送調用請求;如果調用請求為更改系統(tǒng)資源,則將主機系統(tǒng)中的系統(tǒng)資源拷貝至重定 向后路徑,并對拷貝后的系統(tǒng)資源進行調用操作。
本發(fā)明實施例中所涉及的重定向,具體可以為將系統(tǒng)資源的主機路徑重 定向為虛擬才幾目錄下對應的^各徑。
本發(fā)明實施例所提供的基于操作系統(tǒng)層的虛擬方法,通過在系統(tǒng)調用層 截獲對系統(tǒng)資源的調用請求;將所述系統(tǒng)資源的主機路徑重定向為虛擬機目
錄下對應的路徑;可以實現(xiàn)基于操作系統(tǒng)層的虛擬化,由于不需要硬件抽象 層的支持,所以在滿足了故障容忍和入侵容忍系統(tǒng)的需求下,還具有占用系 統(tǒng)資源少、靈活性高、啟動延遲少的特點。
由于用戶進程在運行時,可能訪問或修改各種系統(tǒng)資源,為實現(xiàn)輕量級 的真實并隔離的操作系統(tǒng)層虛擬執(zhí)行環(huán)境,本發(fā)明實施例提供的基于操作系
統(tǒng)層的虛擬機方法采用了命名空間虛擬化和寫時拷貝技術。
本發(fā)明實施例所涉及的命名空間虛擬化技術是指在系統(tǒng)調用層(System Call Level)上截獲調用請求,在用戶進程請求訪問各種系統(tǒng)資源時控制這些 被訪問的系統(tǒng)資源的命名,這些系統(tǒng)資源包括文件系統(tǒng)、注冊表、內核對象 等。通過重定向系統(tǒng)資源路徑或重命名系統(tǒng)資源,使得最終被調用的系統(tǒng)資 源對請求的用戶進程是正常的,但是對于主機系統(tǒng)可能是不存在(系統(tǒng)資源 是虛擬出來的),或者僅僅是主機系統(tǒng)資源的拷貝。這樣就可以達到以進程 為單元,將對系統(tǒng)資源的虛擬化進程與主機操作系統(tǒng)隔絕開的目的。
此外,為了使虛擬機既共享主機系統(tǒng)的資源和環(huán)境,又能將自身對系統(tǒng) 資源的更改與主機系統(tǒng)隔絕開,本發(fā)明實施例中還采用了寫時拷貝(Copy-On-Write )機制。具體為當虛擬機被創(chuàng)建時,它共享主機系統(tǒng)中的系統(tǒng)資源。 當運行在虛擬機中的進程僅僅是請求讀取某個系統(tǒng)資源時,該進程的讀請求 被發(fā)送給主機操作系統(tǒng),完成讀取操作,此時虛擬機并不占用任何系統(tǒng)資 源;但當進程請求更改某個系統(tǒng)資源時,虛擬機會拷貝一個原系統(tǒng)資源到虛
9擬機目錄中,該更改請求實際操作的是經拷貝后虛擬機中的系統(tǒng)資源,而不 會影響主機系統(tǒng)中原有的系統(tǒng)資源。
需要說明的是,對于不同類型的系統(tǒng)資源,讀寫調用請求是基于系統(tǒng)資 源的句柄來實現(xiàn)的,這些句柄在先前由虛擬機中執(zhí)行的進程創(chuàng)建或打開系統(tǒng) 資源時生成。虛擬機只需在創(chuàng)建或打開這些系統(tǒng)資源時重定向調用請求,當 后續(xù)再有對這些系統(tǒng)資源的讀寫調用請求發(fā)生時,相關的句柄已經是被重定 向版本,該類讀寫調用請求無需再被重定向。
需要說明的是,本發(fā)明實施例提供的虛擬方法,在執(zhí)行對不同類型系統(tǒng) 資源的虛擬操作之前,還可以先加載并安裝各種驅動程序,完成虛擬沖幾啟動 操作。
為了便于對本發(fā)明實施例提供的技術方案的理解,下面結合附圖,對本 發(fā)明實施例提供的基于操作系統(tǒng)層的虛擬方法,對不同類型系統(tǒng)資源,包括 文件系統(tǒng)、注冊表、內核對象以及服務進程進行虛擬操作的過程進行詳細說 明。
(一)文件系統(tǒng)
本發(fā)明實施例中所涉及的文件系統(tǒng),具體可以包括普通磁盤文件(文 件、目錄)和特殊設備文件(命名管道、油槽)。
為了提高虛擬機性能,本發(fā)明實施例可以采用以單個對象(普通磁盤文 件或特殊設備文件)為單位的寫時拷貝機制。
本發(fā)明實施例中,首先在核心態(tài)虛擬層攔截并控制與文件系統(tǒng)相關的調 用請求。當截獲到與文件系統(tǒng)相關的調用請求時,首先檢查發(fā)起該調用請求 的進程是否為被虛擬化的進程。如果不是,則將該調用請求直接傳遞到主機
系統(tǒng)調用函數(shù),由主機系統(tǒng)調用函數(shù)負責后續(xù)處理;否則,則根據不同的調 用請求,對文件系統(tǒng)資源進行不同的處理。 具體可以包括1)若調用請求為創(chuàng)建文件請求,則本發(fā)明實施例的具體操作過程如附圖
2所示,包括
步驟0201,將文件路徑重定向為虛擬機目錄下路徑。
若調用請求為創(chuàng)建文件請求,則將需要創(chuàng)建的文件路徑修改、即重定向 為虛擬機根目錄下對應的路徑,此過程即為重定向過程。
例如當主才幾系統(tǒng)上的"C:\WINDOWS\infector.exe"文件^皮打開時,可以 將其拷貝至為"C:\VMStore\HardVolumel\WINDOWS\infector.exe"。其中, "C:WMStore"為虛擬機根目錄。
步驟0202,使用重定向后的^4圣創(chuàng)建文件。
根據創(chuàng)建文件請求,使用重定向后的路徑,即虛擬機根目錄下對應的路 徑創(chuàng)建文件,可稱這時創(chuàng)建的文件為虛擬文件。
在 一 個具體實施例中,可以使用ZwCreateFile()函數(shù)創(chuàng)建文件, ZwCreateFile()函數(shù)中的ObjectAttributes參數(shù)中有需要創(chuàng)建的目標文件的路徑, 這時,可以修改ObjectAttributes參數(shù)中目標文件中的路徑為定向后的路徑,使 其在虛擬機根目錄下對應的路徑創(chuàng)建文件。
步驟0203,記錄重定向后路徑與文件句柄之間的對應信息。
由于后續(xù)對文件系統(tǒng)的操作中,文件以及目錄都是由句柄來標識的(句 柄在文件系統(tǒng)被創(chuàng)建時已由系統(tǒng)自動生成),因此,需要記錄重定向后的路 徑與該文件句柄之間的對應信息,使得當后續(xù)需要對該文件進行讀寫類調用 時,可以4艮據句柄來訪問創(chuàng)建的虛擬文件。
需要說明的是,在執(zhí)行上述步驟時,可能會因某一步驟的出錯而導致整 個創(chuàng)建過程失敗,為了提示用戶及對出錯位置進行快速定位,可在每個步驟 后執(zhí)行判斷此步驟是否成功,如果失敗,則給出創(chuàng)建失敗的提示信息。對文 件系統(tǒng)的其它操作以及對其它系統(tǒng)資源的操作都可以采用類似的處理方法, 在此不再贅述。
11另外,失敗提示操作,也可以使用于對文件系統(tǒng)的其他調用操作,比如 打開、刪除等。
2) 若調用請求為打開文件請求,則本發(fā)明實施例的具體操作過程如附圖
3所示,包括
步驟0301,將文件的路徑重定向為虛擬機目錄下路徑。
步驟0302,判斷是否可以使用重定向后的路徑打開文件,若成功,執(zhí)行 步驟0307;若失敗,則執(zhí)行步驟0303。
步驟0303,判斷打開文件請求的訪問權限是否為只讀權限,若是,則執(zhí) 行步驟0304,打開文件請求使用主機文件路徑打開文件,后續(xù)執(zhí)行步驟 0307;否則,扭j亍步驟0305。
步驟0305,將文件拷貝至虛擬機目錄下,此時文件的路徑指向虛擬機目 錄,那么,此時文件路徑即可理解為重定向后的路徑。
步驟0306,打開文件請求使用重定向后的路徑打開文件。
在 一 個具體實施例中,可以使用ZwOpenFile()函數(shù)打開文件, ZwOpenFile()函數(shù)中的ObjectAttributes參數(shù)中有需要打開的目標文件的路徑, 這時,可以修改Obj ectAttributes參數(shù)中目標文件中的路徑為定向后的路徑,使 其在虛擬機根目錄下對應的路徑創(chuàng)建文件。
步驟0307,記錄文件重定向后的路徑與文件句柄之間的對應信息。
3) 若調用請求為查詢文件請求,則本發(fā)明實施例的具體操作過程如附圖 4所示,包括
步驟0401 ,獲取查詢文件請求中包含的句柄。
由于查詢文件請求所查詢的文件是已經建立的文件,因此,該查詢文件 請求中包含有與建立該文件時所采用的重定向路徑相對應的句柄,獲取查詢 文件請求中包含的句柄信息。
步驟0402,根據句柄信息,獲取對應的重定向后的路徑信息。根據查詢文件請求中包含的句柄信息,通過查詢記錄,獲取與該句柄對
應的重定向后的路徑信息。
步驟0403 ,查詢文件請求使用重定向后的路徑信息查詢文件。 查詢文件請求使用與查詢文件請求中包含的句柄信息對應的、重定向后
的路徑信息,查詢文件的相關信息。
在一個具體實施例中,可以ZwQuerylnformationFile()函數(shù)查詢文件,并通 過ZwQueryDirectoryFile()函凄t返回查詢結果。
4) 若調用請求為重命名文件請求,則本發(fā)明實施例為防止對主機系統(tǒng)的 破壞,實現(xiàn)一個隔離的執(zhí)行環(huán)境,需要做特殊處理。該處理如附圖5所示,包 括
步驟0501,判斷文件是否被寫時拷貝(Copy-On-Write),若是,則執(zhí)行 步驟0502;否則,#1行步驟0503。
步驟0502、將重命名請求傳遞給主機系統(tǒng)調用函數(shù),后續(xù)執(zhí)行步驟 0505。
步驟0503,對文件進行拷貝操作,將文件拷貝至虛擬機目錄下,并重定 向該文件的路徑。
步驟0504,重命名請求使用重定向后的路徑對文件進行重命名操作。 步驟0505,記錄此次重命名才喿作。
在一個具體實施例中,可以使用NtSetlnformationFile()函數(shù)對文件進行重
命名操作。
5) 若系統(tǒng)調用請求為刪除文件請求,則本發(fā)明實施例的處理過程如附圖 6所示,包括
步驟0601,判斷文件是否被寫時拷貝,若是,則執(zhí)行步驟0602,將該刪 除文件請求傳遞給主機系統(tǒng)調用函數(shù),后續(xù)執(zhí)行步驟0604,記錄此次刪除操 作;否則,執(zhí)行步驟0603,刪除文件請求直接刪除文件,然后執(zhí)行步驟0604,記錄此次刪除纟喿作。
在一個具體實施例中,可以使用NtSetlnformationFile()函數(shù)對文件進行刪
除操作。
(二)注冊表
注冊表的數(shù)據存放和操作方式與文件系統(tǒng)類似。因此,注冊表虛擬化可 以使用與文件系統(tǒng)虛擬化類似的方式,即同樣采用命名空間虛擬化和寫時拷 貝機制。在發(fā)生寫時拷貝時,注冊表鍵及其子鍵和鍵值會一同拷貝到虛擬機 新創(chuàng)建的鍵下,如VHKEY—CURRENT—USERWM根鍵下。
本發(fā)明實施例中,首先在核心態(tài)虛擬層攔截并控制與注冊表相關的調用 請求。當截獲到與注冊表相關的調用請求時,首先^f企查發(fā)起該調用請求的進 程是否為被虛擬化的進程。如果不是,則將該調用請求直接傳遞到主機系統(tǒng) 調用函數(shù),由主機系統(tǒng)調用函數(shù)負責后續(xù)處理;否則,則根據不同的調用請 求,對注冊表系統(tǒng)資源進行不同的處理。
需要說明的是,對于注冊表系統(tǒng)資源的調用操作所適用的相關函數(shù),與 文件系統(tǒng)類似,具體可參照文件系統(tǒng)的相關描述,在此不再追述。
對于注冊表的具體操作過程可以包括
1)若調用請求為創(chuàng)建注冊表鍵請求時,則本發(fā)明實施例的具體操作過程
如附圖7所示,包括
步驟0701,將注冊表鍵的路徑重定向為虛擬機目錄下路徑。
若調用請求為創(chuàng)建注冊表鍵請求時,將需要創(chuàng)建的注冊表鍵路徑修改、
即重定向為虛擬才幾才艮目錄下對應的^各徑。
步驟0702,根據創(chuàng)建注冊表鍵請求使用重定向后的路徑創(chuàng)建注冊表鍵。 根據創(chuàng)建注冊表鍵請求使用重定向后的路徑,即虛擬機根目錄下對應的
路徑,創(chuàng)建注冊表鍵。
步驟07Q3,記錄重定向后路徑與注冊表鍵句柄之間的對應信息。由于后續(xù)對注冊表鍵的操作中,注冊表鍵是由句柄來標識的,因此,記 錄重定向后路徑與注冊表鍵句柄之間的對應信息。
2) 若調用請求為打開注冊表鍵請求時,則本發(fā)明實施例的具體操作過程
如附圖8所示,包括
步驟0801,將注冊表鍵的路徑重定向為虛擬機目錄下對應的路徑。
步驟0802,判斷是否可以使用重定向后的路徑打開注冊表鍵,若成功, 執(zhí)^亍步驟0807;若失敗,則執(zhí)行步驟0803。
步驟0803,判斷打開注冊表鍵請求的訪問權限是否為只讀權限,若是, 則執(zhí)行步驟0804,根據打開注冊表鍵請求使用主機注冊表鍵路徑打開注冊表 鍵,后續(xù)執(zhí)行步驟0807;否則,執(zhí)行步驟0805。
步驟0805,將主機注冊表鍵拷貝至虛擬目錄下。
此時注冊表鍵的路徑指向虛擬機目錄,那么,此時注冊表鍵的路徑即可 理解為重定向后的^f各徑。
步驟0806,根據打開注冊表鍵請求使用重定向后的路徑打開注冊表鍵。 步驟O807,記錄重定向后路徑與注冊表鍵句柄之間的對應信息。
3) 若調用請求為查詢注冊表鍵請求,則本發(fā)明實施例的具體操作過程如 附圖9所示,包括
步驟0901,獲取查詢注冊表鍵請求中包含的句柄信息。
步驟0902,根據句柄信息,獲取對應的重定向后的路徑信息。
步驟0903,根據查詢注冊表鍵請求使用重定向后的路徑,查詢注冊表鍵。
4) 若調用請求為重命名注冊表鍵請求,則本發(fā)明實施例的處理如附圖IO 所示,包括
步驟IOOI,判斷注冊表鍵是否被寫時拷貝,若是,則執(zhí)行步驟1002,將 重命名注冊表鍵請求傳遞給主機系統(tǒng)調用函數(shù),后續(xù)執(zhí)行步驟1005,記錄此次重命名操作;否則,執(zhí)行步驟1003。
步驟1003,將主機注冊表鍵拷貝至虛擬機目錄下,并重定向該注冊表鍵 的^各徑。
步驟1004,根據重命名請求使用重定向后的路徑對注冊表鍵進行重命名 操作。
步驟1005,記錄此次重命名操作。
5)若調用請求為刪除注冊表鍵請求,則本發(fā)明實施例的處理過程如附圖 ll所示,包括
步驟IIOI,判斷注冊表鍵是否被寫時拷貝,若是,則執(zhí)行步驟1102,將 刪除注冊表鍵請求傳遞給主機系統(tǒng)調用函數(shù),后續(xù)執(zhí)行步驟1103,記錄此次 刪除操作;否則,則直接執(zhí)行步驟1103,記錄此次刪除操作。 (三)內核對象
現(xiàn)存的主機操作系統(tǒng),如Windows,在內核中提供了多種命名對象,包括 互斥對象,事件對象,信號量對象,定時器對象,區(qū)域對象,端口對象等, 上述對象屬于全局對象,為多個進程所使用。為避免虛擬機操作內核對象而 對主機系統(tǒng)帶來影響,需要對內核對象進行虛擬化處理。
內核對象通常情況下以目錄的方式層次管理,所有內核對象共有一個根 目錄,不同類的對象有不同的目錄,與文件系統(tǒng)、注冊表虛擬化操作類似, 也可以采用重定向內核對象#^目錄的方法,實現(xiàn)內核對象的虛擬化。
本發(fā)明實施例中,首先在核心態(tài)虛擬層攔截并控制與內核對象相關的調 用請求。當截獲到與內核對象相關的調用請求時,首先檢查發(fā)起該調用請求 的進程是否為被虛擬化的進程。如果不是,則將該調用請求直接傳遞到主機 系統(tǒng)調用函數(shù),由主機系統(tǒng)調用函數(shù)負責后續(xù)處理;否則,則根據不同的調 用"i貪求,對內核對象資源進行不同的處理。
需要說明的是,對于內核對象系統(tǒng)資源的調用操作所適用的相關函數(shù),與文件系統(tǒng)類似,具體可參照文件系統(tǒng)的相關描述,在此不再追述。
下面以事件對象為例,分別對本發(fā)明實施例對不同調用請求進行處理的 過程進行詳細表述
1) 若調用請求為創(chuàng)建事件對象請求時,則本發(fā)明實施例的處理過程如附
圖12所示,具體可以包括
步驟1201,判斷目標事件對象是否存在。若目標事件對象不存在,則執(zhí)
行步驟1202;否則,執(zhí)行步驟1205,將創(chuàng)建事件請求傳遞至主機系統(tǒng)的創(chuàng)建
事件對象系統(tǒng)調用。
步驟1202,將該事件對象的路徑重定向到虛擬機內核對象根目錄,后續(xù)
執(zhí)行步驟1203。
步驟1203,使用重定向后的路徑創(chuàng)建事件對象。 步驟1204,記錄該事件對象重定向后的路徑與句柄之間的對應關系。 步驟1205,將創(chuàng)建事件請求傳遞至主機系統(tǒng)的創(chuàng)建事件對象系統(tǒng)調用。 若該事件對象已經存在,則該事件對象可能是系統(tǒng)關鍵進程(例如服
務)創(chuàng)建的,而該事件對象是進程運行所必需的資源,由于事件對象不能像
文件和注冊表那樣被復制,因此,如果創(chuàng)建事件對象請求所要創(chuàng)建的事件對
象已經存在于主機系統(tǒng)中,則需將創(chuàng)建事件請求傳遞至主機系統(tǒng)的創(chuàng)建事件
對象系統(tǒng)調用。
2) 若調用請求為打開事件對象請求,則本發(fā)明實施例的處理過程如附圖 13所示,具體可以包括
步驟1301,重定向事件對象路徑到虛擬機的內核對象根目錄。
步驟1302,判斷使用重定向后的路徑是否能夠打開事件對象。如果成
功,則執(zhí)行步驟1304,返回該事件對象的句柄。否則,執(zhí)行步驟1303。
步驟1303,根據打開事件對象請求嘗試打開請求的事件對象。如果成
功,則執(zhí)行步驟1304,返回該事件對象的句柄;否則執(zhí)行1305,返回失敗信息。
各種內核對象的虛擬處理方式與事件對象相似,因此不再進行描述。 (四)服務進程
主才幾系統(tǒng)中的程序可以通過在月良務控制管理器(SCM: Service Control Manager )中添加服務名來安裝一個服務進程,相應的服務進程鏡像路徑被寫 入SCM數(shù)據庫。SCM是關鍵系統(tǒng)進程,與操作系統(tǒng)組件有復雜的關聯(lián),不能 復制到虛擬機中。因此,虛擬才幾與主機系統(tǒng)共享SCM和SCM數(shù)據庫。
服務進程的虛擬化過程具體可以包括創(chuàng)建服務進程和啟動服務進程兩 步在創(chuàng)建服務進程時,可以采用與文件系統(tǒng)和注冊表相同的虛擬化操作來 實現(xiàn);在啟動服務進程時,由于系統(tǒng)是依據服務進程的名稱來啟動服務進程 的,所以在啟動服務進程時,需要將服務進程重定向為新的虛擬的服務名 稱。
本發(fā)明實施例中,首先在核心態(tài)虛擬層攔截并控制與服務進程相關的調 用請求。當截獲到與服務進程相關的調用請求時,首先檢查發(fā)起該調用請求 的進程是否為被虛擬化的進程。如果不是,則將該調用請求直接傳遞到主機 系統(tǒng)調用函數(shù),由主機系統(tǒng)調用函數(shù)負責后續(xù)處理;否則,則才艮據不同的調 用請求,對內核對象資源進行不同的處理。
具體可以包括
1)若調用請求為創(chuàng)建服務進程請求,則本發(fā)明實施例的處理過程如附圖 14所示,包括
步驟1401,對所要創(chuàng)建的服務進程進行重命名及重定向程序路徑操作。 例如,如果所要創(chuàng)建的服務進程名為Service,程序路徑為/a/b.exe,則可
以將寫入SCM數(shù)據庫的服務名重命名為Service-VM,將程序路徑重定向為
VM/a/b.exe。
步驟1402,將該服務進程文件拷貝至虛擬機下。2)若調用請求為啟動服務請求,則可以將該啟動服務請求重定向至之前 已經進行重命名后的服務進程。
本發(fā)明實施例中,對于文件系統(tǒng)、注冊表以及內核對象的操作,具體可 以在操作系統(tǒng)和應用程序之間虛擬層的用戶態(tài)虛擬層完成,而對于服務進程 的操作,則可以在虛擬層的內核態(tài)虛擬層完成。
通過上述描述可以看出,本發(fā)明實施例提供的基于操作系統(tǒng)層的虛擬方 法,在操作系統(tǒng)和應用程序之間部署虛擬層,能夠使得虛擬機中的進程訪問 不修改主機系統(tǒng)資源,而對資源的修改結果保存在虛擬機中,用戶在實際操 作過程不會感知虛擬過程的存在,因此,這種虛擬方法對主機系統(tǒng)是透明 的。并且,本發(fā)明實施例提供了基于操作系統(tǒng)層的虛擬方法,由于不需要硬 件抽象層的支持,與當前采用硬件虛擬技術實現(xiàn)的虛擬機相比,在滿足了故 障容忍和入侵容忍系統(tǒng)的需求下,還具有占用系統(tǒng)資源少、靈活性高、啟動 延遲少的特點。該方法對操作系統(tǒng)絕大多數(shù)資源虛擬化,實現(xiàn)了一個輕量級 的,真實并隔離的虛擬操作環(huán)境,能夠安全地執(zhí)行惡意程序和非惡意程序, 并記錄程序的行為,滿足故障容忍和入侵容忍系統(tǒng)的需求。
本發(fā)明實施例還提供了一種基于操作系統(tǒng)層的虛擬裝置,如附圖15所
示,該裝置包括
攔截模塊1501,用于在系統(tǒng)調用層截獲對系統(tǒng)資源的調用請求。
重定向模塊1502,用于根據攔截模塊1501截獲的調用請求,將系統(tǒng)資源 的主機路徑重定向為虛擬機目錄下對應的路徑。
重定向才莫塊1502具體可以將系統(tǒng)資源在主才幾系統(tǒng)中的目錄,重定向至虛 擬才幾才艮目錄下。
比如,將"C:\infector.exe"重定向為 "C:\VMStore\HardVolumel\infector.exe",其中,"C:WMStore,,為虛 4以才幾才艮目錄。執(zhí)行模塊1503,用于根據重定向模塊1502重定向后的路徑,對系統(tǒng)資源
執(zhí)行調用請求。
在本發(fā)明實施例提供的虛擬裝置的一個具體實施例中,如附圖16所示, 進一步還可以包括啟動模塊1504,用于加載并安裝各種驅動程序,完成虛擬 機裝置啟動。
在本發(fā)明實施例提供的虛擬裝置的一個具體實施例中,如附圖17所示, 進一步還可以包括寫時拷貝模塊1505,用于當攔截模塊1501截獲的調用請求 為讀取系統(tǒng)資源時,向主機系統(tǒng)發(fā)送該調用請求;當攔截模塊1501截獲的調 用請求為更改系統(tǒng)資源時,拷貝原系統(tǒng)資源至重定向后路徑,即拷貝至虛擬 根目錄下。
本發(fā)明實施例所涉及的執(zhí)行模塊1503,具體可如附圖18所示,包括 第一執(zhí)行單元1801,用于根據攔截模塊1501截獲的調用請求,采用重定
向模塊1502重定向后的路徑,對文件系統(tǒng)、或者注冊表、或者內核系統(tǒng)資源
執(zhí)行調用請求;
第二執(zhí)行單元1802,用于根據攔截模塊1501截獲調用請求,采用重定向 模塊1502重定向后的路徑,對服務進程系統(tǒng)資源執(zhí)行調用請求。
且所述第一執(zhí)行單元應用于所述核心態(tài)虛擬層,所述第二執(zhí)行單元應用 于所述用戶態(tài)虛擬層。
本發(fā)明實施例中所涉及功能模塊的具體操作流程,可以參照本發(fā)明方法 實施例中的相關部分,這里不再贅述。
通過上述描述可以看出,本發(fā)明實施例提供的基于操作系統(tǒng)層的虛擬裝 置,在操作系統(tǒng)和應用程序之間部署虛擬層,能夠使得虛擬機中的進程訪問 不修改主機系統(tǒng)資源,而對資源的修改結果保存在虛擬機中,用戶在實際操 作過程不會感知虛擬過程的存在,因此,該虛擬裝置對主機系統(tǒng)是透明的。
并且,本發(fā)明實施例提供了基于操作系統(tǒng)層的虛擬裝置,由于不需要硬件抽象層的支持,與當前采用硬件虛擬技術實現(xiàn)的虛擬機相比,在滿足了故障容 忍和入侵容忍系統(tǒng)的需求下,還具有占用系統(tǒng)資源少、靈活性高、啟動延遲 少的特點。該裝置對操作系統(tǒng)絕大多數(shù)資源虛擬化,實現(xiàn)了一個輕量級的, 真實并隔離的虛擬操作環(huán)境,能夠安全地執(zhí)行惡意程序和非惡意程序,并記 錄程序的行為,滿足故障容忍和入侵容忍系統(tǒng)的需求。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發(fā) 明可借助件加必需的^5更件平臺的方式來實現(xiàn),當然也可以全部通過^6更件來 實施,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技 術方案對背景技術做出貢獻的全部或者部分可以以軟件產品的形式體現(xiàn)出
來,該計算機軟件產品可以存儲在存儲介質中,如ROM/RAM、磁碟、光盤 等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器, 或者網絡設備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不 局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內,可 輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明 的保護范圍應該以權利要求的保護范圍為準。
權利要求
1、一種基于操作系統(tǒng)層的虛擬方法,其特征在于,包括在系統(tǒng)調用層截獲對系統(tǒng)資源的調用請求;根據所述調用請求,將所述系統(tǒng)資源的主機路徑重定向為虛擬機目錄下對應的路徑;根據重定向后的路徑,對所述系統(tǒng)資源執(zhí)行調用請求。
2、 根據權利要求l所述的方法,其特征在于,所述在系統(tǒng)調用層截獲對 系統(tǒng)資源的調用請求包括判斷所述調用請求所屬進程是否為虛擬化進程;若所述調用請求所屬進程為虛擬化進程,則根據所述調用請求,對系統(tǒng) 資源進行虛擬化處理;否則,則將所述調用請求傳遞至主機系統(tǒng)調用函數(shù)。
3、 如權利要求l所述的方法,其特征在于,所述方法還包括對所述系 統(tǒng)資源進行寫時拷貝操作;所述寫時拷貝操作包括如果所述調用請求為讀取所述系統(tǒng)資源,則向主機系統(tǒng)發(fā)送所述調用請求;如果所述調用請求為更改所述系統(tǒng)資源,則將主機系統(tǒng)中的系統(tǒng)資源拷 貝至所述重定向后路徑,對所述拷貝后的系統(tǒng)資源進行調用操作。
4、 根據權利要求3所述的方法,其特征在于,若所述調用請求為創(chuàng)建或 打開第一系統(tǒng)資源請求,所述第一系統(tǒng)資源包括文件系統(tǒng)、或者注冊表、或 者內核對象時,則所述根據重定向后的路徑,對所述系統(tǒng)資源執(zhí)行調用請求 包括使用重定向后的路徑創(chuàng)建或打開所述第 一系統(tǒng)資源; 記錄所述重定向后的路徑與所述第 一系統(tǒng)資源句柄之間的對應關系。
5、 根據權利要求4所述的方法,其特征在于,所述采用重定向后的路徑打開所述第一系統(tǒng)資源具體為若打開所述第一系統(tǒng)資源失敗,則判斷所述打開第一系統(tǒng)資源請求是否 為只讀權限;若判斷結果為是,則采用所述系統(tǒng)資源主機路徑打開所述第 一 系統(tǒng)資 源,否則,則將所述第一系統(tǒng)資源拷貝至虛擬機目錄下,重定向所述第一系 統(tǒng)資源的路徑,并使用重定向后的路徑打開所述拷貝后的第一系統(tǒng)資源。
6、 根據權利要求4述的方法,其特征在于,若所述調用請求為查詢系統(tǒng) 資源請求,則所述根據重定向后的路徑,對所述系統(tǒng)資源執(zhí)行調用請求包 括根據所述查詢系統(tǒng)資源請求中包含的句柄信息,獲取在創(chuàng)建或打開所述 第 一系統(tǒng)資源時,與所述句柄信息建立對應關系的重定向后的路徑信息; 使用所述重定向后的路徑信息查詢所述第 一 系統(tǒng)資源。
7、 根據權利要求4所述的方法,其特征在于,若所述調用請求為重命名 所述第一系統(tǒng)資源請求,則所述根據重定向后的路徑,對所述系統(tǒng)資源執(zhí)行 調用請求包括判斷所述第一系統(tǒng)資源是否被寫時拷貝;若所述第一系統(tǒng)資源被寫時拷貝,則將重命名請求發(fā)送至主機系統(tǒng)調用 函數(shù),并記錄此次重命名操作;若所述第一系統(tǒng)資源沒有被寫時拷貝,則將所述第一系統(tǒng)資源拷貝至虛 擬機目錄下,重定向所述第 一 系統(tǒng)資源的路徑,并使用重定向后的路徑對所 述拷貝后的第一系統(tǒng)資源進行重命名操作,并記錄此次重命名操作。
8、 根據權利要求4所述的方法,其特征在于,若所述調用請求為刪除系 統(tǒng)資源請求,則所述根據重定向后的路徑,對所述系統(tǒng)資源執(zhí)行調用請求包 括判斷所述第 一系統(tǒng)資源是否被寫時拷貝;若所述第一系統(tǒng)資源被寫時拷貝,則將所述刪除請求發(fā)送至主機系統(tǒng)調 用函數(shù),并記錄此次刪除才喿作;若所述第一系統(tǒng)資源沒有被寫時拷貝,則將記錄所述刪除操作。
9、 根據權利要求3所述的方法,其特征在于,若所述系統(tǒng)資源為第二系 統(tǒng)資源,所述第二系統(tǒng)資源包括服務進程時,則所述根據重定向后的路徑, 對所述系統(tǒng)資源執(zhí)行調用請求包括若所述調用請求為創(chuàng)建服務進程請求時,對所述服務進程進行重命名和 重定向路徑操作,并將所述服務進程拷貝至虛擬機目錄下;若所述調用請求為啟動服務請求時,將所述啟動服務進程請求重定向為 重命名后的所述服務進程。
10、 一種基于操作系統(tǒng)層虛擬裝置,其特征在于,包括 攔截模塊,用于在系統(tǒng)調用層截獲對系統(tǒng)資源的調用請求; 重定向模塊,用于根據所述攔截模塊截獲的調用請求,將所述系統(tǒng)資源的主才;a各徑重定向為虛擬才幾目錄下對應的游4圣;執(zhí)行模塊,用于根據所述重定向模塊重定向后的路徑,對所述系統(tǒng)資源 執(zhí)行調用請求。
11、 根據權利要求10所述的裝置,其特征在于,所述系統(tǒng)還包括 啟動模塊,用于加載和安裝驅動程序,完成虛擬機裝置的啟動。
12、 根據權利要求10所述的裝置,其特征在于,所述裝置還包括 寫時拷貝模塊,用于當所述攔截模塊截獲的調用請求為讀取所述系統(tǒng)資源時,向主機系統(tǒng)發(fā)送所述調用請求;當所述攔截模塊截獲的調用請求為更 改所述系統(tǒng)資源時,拷貝原系統(tǒng)資源到所述重定向后路徑,對所述拷貝后的 系統(tǒng)資源進行調用操作。
13、 根據權利要求10或12所述的裝置,所述執(zhí)行模塊包括第一執(zhí)行單元,用于根據所述攔截模塊截獲的調用請求,采用所述重定 向模塊重定向后的路徑,對文件系統(tǒng)、或者注冊表、或者內核對象系統(tǒng)資源執(zhí)行調用請求;第二執(zhí)行單元,用于根據所述攔截模塊截獲的調用請求,采用所述重定 向模塊重定向后的路徑,對服務進程系統(tǒng)資源執(zhí)行調用請求。
全文摘要
本發(fā)明實施例涉及一種基于操作系統(tǒng)層的虛擬方法及裝置,通過在系統(tǒng)調用層截獲對系統(tǒng)資源的調用請求;將所述系統(tǒng)資源的主機路徑重定向為虛擬機目錄下對應的路徑;可以實現(xiàn)基于操作系統(tǒng)層的虛擬化,由于不需要硬件抽象層的支持,所以在滿足了故障容忍和入侵容忍系統(tǒng)的需求下,還具有占用系統(tǒng)資源少、靈活性高、啟動延遲少的特點。
文檔編號G06F9/455GK101551756SQ20091008105
公開日2009年10月7日 申請日期2009年3月31日 優(yōu)先權日2009年3月31日
發(fā)明者丹 劉, 躍 曹, 李毅超, 歡 杜, 楊廣元, 楊玉奇, 白皓文, 堯 羅, 賈范兵, 顧凌志, 沾 黃 申請人:成都市華為賽門鐵克科技有限公司