[發(fā)明專利]基于塊對(duì)目標(biāo)代碼掃描并替換敏感指令的方法無(wú)效
| 申請(qǐng)?zhí)枺?/td> | 200910043831.6 | 申請(qǐng)日: | 2009-07-03 |
| 公開(公告)號(hào): | CN101630269A | 公開(公告)日: | 2010-01-20 |
| 發(fā)明(設(shè)計(jì))人: | 張衛(wèi)華;劉曉建;易曉東;譚郁松;吳慶波;戴華東;孔金珠 | 申請(qǐng)(專利權(quán))人: | 中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué) |
| 主分類號(hào): | G06F9/455 | 分類號(hào): | G06F9/455;G06F17/30 |
| 代理公司: | 國(guó)防科技大學(xué)專利服務(wù)中心 | 代理人: | 郭 敏 |
| 地址: | 410073湖*** | 國(guó)省代碼: | 湖南;43 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 目標(biāo) 代碼 掃描 替換 敏感 指令 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及面向X86體系結(jié)構(gòu)操作系統(tǒng)虛擬化的二進(jìn)制翻譯(Binary?Translation, BT)方法,尤其是對(duì)目標(biāo)代碼進(jìn)行掃描并對(duì)掃描中發(fā)現(xiàn)的敏感指令進(jìn)行替換的方法。
背景技術(shù)
近年來(lái),隨著硬件技術(shù)的迅猛發(fā)展尤其是多核乃至眾核處理器的出現(xiàn),提高計(jì)算機(jī) 系統(tǒng)高速增長(zhǎng)計(jì)算能力的使用率日益成為迫切的市場(chǎng)需求。操作系統(tǒng)虛擬化技術(shù)通過(guò)在 同一臺(tái)物理機(jī)器上同時(shí)運(yùn)行多個(gè)操作系統(tǒng)并對(duì)外提供服務(wù),能夠有效提高服務(wù)器的利用 率,因而受到各研究機(jī)構(gòu)和商業(yè)機(jī)構(gòu)的高度重視,并在服務(wù)器整合、計(jì)算機(jī)安全、虛擬 數(shù)據(jù)中心等領(lǐng)域得到廣泛應(yīng)用。
操作系統(tǒng)虛擬化依賴于一種稱為虛擬監(jiān)控器(Virtual?Machine?Monitor,VMM)的 系統(tǒng)軟件,被虛擬化的操作系統(tǒng)則稱為客戶操作系統(tǒng)(Guest?OS,GOS)。目前,VMM軟 件主要基于三種方法實(shí)現(xiàn)操作系統(tǒng)虛擬化,即硬件輔助虛擬化、半虛擬化和BT虛擬化。 三種方法的基本原理及特點(diǎn)簡(jiǎn)述如下:
1)硬件輔助虛擬化要求處理器提供硬件支持,如Intel的VT技術(shù)和AMD的SVM技術(shù)。 VMM通過(guò)捕獲在特殊處理器狀態(tài)下運(yùn)行的客戶操作系統(tǒng)執(zhí)行敏感指令時(shí)觸發(fā)的硬件 異常實(shí)現(xiàn)操作系統(tǒng)虛擬化,如XenSource公司的虛擬機(jī)監(jiān)視器產(chǎn)品Xen和開源軟件 KVM等。該方法的優(yōu)點(diǎn)為實(shí)現(xiàn)簡(jiǎn)單,缺點(diǎn)是需要在處理器普通狀態(tài)與虛擬化狀態(tài)之 間頻繁切換,并且切換的系統(tǒng)開銷遠(yuǎn)大于普通系統(tǒng)調(diào)用。
2)半虛擬化要求客戶操作系統(tǒng)降特權(quán)級(jí)(如Ring1)運(yùn)行,并對(duì)其源代碼相應(yīng)部分進(jìn) 行修改以配合VMM實(shí)現(xiàn)虛擬化。該方法的局限性在于必須獲得GOS源代碼,并且需 要對(duì)任何希望虛擬化的操作系統(tǒng)進(jìn)行修改,移植和維護(hù)工作量巨大。Xen是采用半 虛擬化技術(shù)的代表(同一VMM可對(duì)不同GOS采用不同的虛擬化方法)。
3)BT虛擬化則通過(guò)對(duì)GOS內(nèi)核二進(jìn)制代碼進(jìn)行掃描,發(fā)現(xiàn)其中的敏感指令,并將其轉(zhuǎn) 換為相應(yīng)的虛擬化代碼來(lái)實(shí)現(xiàn)GOS虛擬化。采用BT虛擬化方法的VMM有VMWare公 司的VMWare?Workstation和Sun公司的VirtualBox。
與前兩種方法相比,BT虛擬化對(duì)軟硬件等外部條件的依賴最小——既不需要硬件 支持,也不需要獲得客戶操作系統(tǒng)源代碼,其關(guān)鍵就在于通過(guò)掃描發(fā)現(xiàn)內(nèi)核二進(jìn)制代碼 中的敏感指令,并將其轉(zhuǎn)換為包含相應(yīng)虛擬化功能代碼且保持GOS原有執(zhí)行語(yǔ)義不變的 一段指令序列。所謂“敏感指令”泛指所有一旦在真實(shí)處理器上執(zhí)行即可能改變處理器 的實(shí)際狀態(tài),從而導(dǎo)致VMM或其它客戶操作系統(tǒng)無(wú)法正常運(yùn)行的指令或基于安全隔離目 的需要VMM介入的指令。
敏感指令轉(zhuǎn)換方法有指令緩存和本地替換兩種:指令緩存方法不修改內(nèi)存中的GOS 代碼,而是在指令緩沖區(qū)內(nèi)復(fù)制、轉(zhuǎn)換即將執(zhí)行的目標(biāo)代碼塊,并在該緩沖區(qū)內(nèi)執(zhí)行轉(zhuǎn) 換后的目標(biāo)代碼塊,如VMWare和開源軟件Qemu。本地替換方法則直接在敏感指令所在 內(nèi)存位置將其替換為一條控制轉(zhuǎn)移指令,通常為JMP指令,使目標(biāo)代碼改變流程去執(zhí)行 一段與敏感指令原有語(yǔ)義等價(jià)的虛擬化功能代碼或安全檢查代碼,以達(dá)到虛擬化或安全 隔離目的。與指令緩存方法相比,本地替換方法具有簡(jiǎn)單直觀、內(nèi)存占用量小等優(yōu)點(diǎn), 但是采用該方法時(shí),將不可避免地遇到部分敏感指令長(zhǎng)度小于替換指令即短敏感指令的 情形。例如:在X86體系結(jié)構(gòu)中,為了能夠直接跳轉(zhuǎn)到任意虛地址空間,通常使用5字 節(jié)或更長(zhǎng)的JMP跳轉(zhuǎn)指令作為替換指令,而某些敏感指令,如POPF指令,只有1字節(jié) 長(zhǎng)度,無(wú)法直接替換成JMP指令。
針對(duì)這一情形,目前已知的基于本地替換方法的VMM軟件均采用可觸發(fā)硬件異常的 軟中斷指令(INT0或INT3指令)進(jìn)行替換,如Sun公司的VirtualBox采用1字節(jié)長(zhǎng) 度的INT3指令(0xCC)替換所有長(zhǎng)度小于JMP指令的敏感指令。但是,采用INT0/INT3 指令替換的主要缺點(diǎn)在于:每次執(zhí)行該指令時(shí)都會(huì)觸發(fā)硬件異常,尤其是當(dāng)被替換指令 被頻繁調(diào)用時(shí),硬件狀態(tài)的反復(fù)切換將導(dǎo)致大量的系統(tǒng)開銷。因此,當(dāng)敏感指令長(zhǎng)度小 于JMP指令長(zhǎng)度時(shí),如何尋找包含該敏感指令且長(zhǎng)度不小于JMP指令的最小目標(biāo)代碼塊, 并將該最小目標(biāo)代碼塊替換為JMP指令,以減少使用INT3指令替換的概率,同時(shí)保持 目標(biāo)代碼原有執(zhí)行語(yǔ)義不變,是本領(lǐng)域技術(shù)人員關(guān)注的重要問(wèn)題。
發(fā)明內(nèi)容
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué),未經(jīng)中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910043831.6/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 上一篇:一種塔機(jī)頂升油缸
- 下一篇:雙作用葉片式液壓變壓器
- 目標(biāo)檢測(cè)裝置、學(xué)習(xí)裝置、目標(biāo)檢測(cè)系統(tǒng)及目標(biāo)檢測(cè)方法
- 目標(biāo)監(jiān)測(cè)方法、目標(biāo)監(jiān)測(cè)裝置以及目標(biāo)監(jiān)測(cè)程序
- 目標(biāo)監(jiān)控系統(tǒng)及目標(biāo)監(jiān)控方法
- 目標(biāo)跟蹤方法和目標(biāo)跟蹤設(shè)備
- 目標(biāo)跟蹤方法和目標(biāo)跟蹤裝置
- 目標(biāo)檢測(cè)方法和目標(biāo)檢測(cè)裝置
- 目標(biāo)跟蹤方法、目標(biāo)跟蹤裝置、目標(biāo)跟蹤設(shè)備
- 目標(biāo)處理方法、目標(biāo)處理裝置、目標(biāo)處理設(shè)備及介質(zhì)
- 目標(biāo)處理方法、目標(biāo)處理裝置、目標(biāo)處理設(shè)備及介質(zhì)
- 目標(biāo)跟蹤系統(tǒng)及目標(biāo)跟蹤方法
- 遙控器代碼格式結(jié)構(gòu)及其收發(fā)信方法及裝置
- 在虛擬機(jī)中驗(yàn)證代碼模塊的方法及裝置
- 一種用于代碼的管理方法及裝置
- 虛擬代碼提供系統(tǒng)、生成裝置、驗(yàn)證裝置、提供方法
- 一種自動(dòng)化代碼質(zhì)量檢查方法及系統(tǒng)
- 代碼掃描方法、裝置、計(jì)算設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì)
- 用于更新代碼的方法和裝置
- 前端代碼打包方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 一種代碼審查服務(wù)同步方法、裝置及計(jì)算機(jī)設(shè)備
- 一種高效智能源代碼安全管理平臺(tái)





