專利名稱:防止惡意軟件在計算機系統(tǒng)內(nèi)執(zhí)行的方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及避免惡意軟件,特別地涉及一種避免惡意軟件在計算機系統(tǒng)中執(zhí)行的方法。
背景技術(shù):
諸如計算機病毒的惡意軟件能夠以多種途徑進(jìn)入計算機系統(tǒng)。例如,它們能夠通過插入計算機系統(tǒng)的磁盤進(jìn)入計算機,或者通過由計算機系統(tǒng)的用戶打開的電子郵件進(jìn)入該計算機系統(tǒng)。如果惡意軟件在計算機系統(tǒng)內(nèi)執(zhí)行的話,它們會導(dǎo)致計算機系統(tǒng)的問題。例如,計算機的安全性被泄密或計算機系統(tǒng)內(nèi)的文件被破壞。
使用諸如掃描搜索串這樣簡單的檢測技術(shù)能夠容易地檢測到特定類型的惡意軟件。然而,通過壓縮或加密轉(zhuǎn)換惡意代碼也能夠容易地破壞這種類型的檢測過程,從而旁通掃描過濾器。檢測惡意軟件的另一方法是運行程序同時在程序執(zhí)行期間嘗試攔截惡意動作。這種技術(shù)稱為行為阻止(behaviourblocking),具有許多缺點。除了嘗試攔截惡意動作,該程序可能給計算機系統(tǒng)帶來危害。進(jìn)一步地,行為阻止機制典型地在進(jìn)行阻止確定時不能瀏覽整個動作日志。因此,行為阻止機制可能做出次優(yōu)的阻止決定,這就意味著可能阻止無害的程序同時可能允許執(zhí)行有害的程序。
檢測惡意軟件的另一方法是在計算機系統(tǒng)的隔離環(huán)境下仿真可疑代碼,從而保護(hù)計算機系統(tǒng)不受可疑代碼的惡意動作。仿真的一個缺點是在它可以保護(hù)計算機系統(tǒng)的各部分不受病毒攻擊時,不能保護(hù)它自己。此外,數(shù)據(jù)會被感染,這導(dǎo)致破壞該隔離環(huán)境。
因此,需要提供一種改進(jìn)的方法,用于防止惡意軟件在計算機系統(tǒng)內(nèi)執(zhí)行。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的優(yōu)選實施例,在應(yīng)用程序中對指令子集進(jìn)行置換從而在對計算機系統(tǒng)上的應(yīng)用程序進(jìn)行任何實際執(zhí)行之前,產(chǎn)生指令的置換序列。指令的置換序列的置換序列號存儲在置換指令指針表中。在執(zhí)行模塊中執(zhí)行指令的置換序列,能夠根據(jù)存儲在置換指令指針表中的指令的置換序列的置換序列號在計算機系統(tǒng)內(nèi)將指令的置換序列翻譯為處理器的實際機器代碼。
在下述詳細(xì)的書面描述中,本發(fā)明所有的特點和優(yōu)點將會變得明顯。
在結(jié)合附圖并參考對示意實施例的以下詳細(xì)的描述能夠更好地理解本發(fā)明本身、優(yōu)選的使用模式、進(jìn)一步的目的及其優(yōu)點。
圖1是根據(jù)本發(fā)明的優(yōu)選實施例的防止惡意軟件在計算機系統(tǒng)內(nèi)執(zhí)行的方法的概念圖;圖2是包括本發(fā)明的優(yōu)選實施例的計算環(huán)境的方框圖;和圖3a-3e描述根據(jù)本發(fā)明的優(yōu)選實施例置換指令的序列。
具體實施例方式
通常計算機系統(tǒng)內(nèi)具有不同級別的指令集。第一(最低)級是機器級的指令,第二級是操作系統(tǒng)應(yīng)用二進(jìn)制接口指令。在第二級,操作系統(tǒng)已經(jīng)抽象一些機器級的指令,使它們更容易理解。第三級別是宏級指令,在此級應(yīng)用進(jìn)一步抽象計算機系統(tǒng)的控制,從而允許簡易編程。
由于許多技術(shù)致力于保護(hù)第二和第三級的指令,本發(fā)明僅僅針對第一級指令的保護(hù),尤其是在這是許多計算機病毒使用的級別時。
一般地講,如果不是不可能,在不知道計算機系統(tǒng)內(nèi)的處理器的機器級的指令集時寫在計算機系統(tǒng)內(nèi)能夠執(zhí)行的機器級程序是不可能的。此外,在計算機系統(tǒng)內(nèi)安裝軟件要求該軟件首先要理解要安裝的計算機系統(tǒng)的指令集。因而,根據(jù)本發(fā)明的優(yōu)選實施例,應(yīng)用程序初始轉(zhuǎn)換為應(yīng)用程序的交叉編譯代碼集,然后在能夠識別該應(yīng)用程序的交叉編譯代碼集的執(zhí)行模塊中執(zhí)行該應(yīng)用程序的交叉編譯代碼集。
現(xiàn)在參考附圖,特別參考圖1,描述根據(jù)本發(fā)明的優(yōu)選實施例的防止惡意軟件在計算機系統(tǒng)中執(zhí)行的方法的概念圖。如圖所示,計算機系統(tǒng)10包括轉(zhuǎn)換模塊11和執(zhí)行模塊12。在計算機系統(tǒng)10中執(zhí)行的應(yīng)用程序需要經(jīng)過安裝過程。在安裝過程期間,計算機系統(tǒng)10的用戶能夠決定是否要在計算機系統(tǒng)10內(nèi)安裝應(yīng)用程序。如果用戶決定要在計算機系統(tǒng)10內(nèi)安裝應(yīng)用程序,則將該應(yīng)用程序發(fā)送至轉(zhuǎn)換模塊11,在其中將該應(yīng)用程序轉(zhuǎn)換為應(yīng)用程序的交叉編譯代碼集。然后在能夠識別應(yīng)用程序的交叉編譯代碼集并將其翻譯為處理器的實際機器代碼的執(zhí)行模塊中執(zhí)行該應(yīng)用程序的交叉編譯代碼集。
不經(jīng)過安裝過程,應(yīng)用程序就不能由執(zhí)行模塊12執(zhí)行。例如,如在非法途徑15所示的,即使如果病毒程序瞞過了用戶的檢測并在用戶不知的情況下放置在計算機系統(tǒng)10內(nèi),該病毒程序仍然不能由執(zhí)行模塊12執(zhí)行,因為該病毒程序沒有經(jīng)過安裝過程。因而,計算機系統(tǒng)10對病毒程序可能已經(jīng)帶來的潛在危害是安全的。
在實踐中,轉(zhuǎn)換模塊11和執(zhí)行模塊12應(yīng)該彼此隔離。實際上,應(yīng)當(dāng)防止執(zhí)行模塊12從除了轉(zhuǎn)換模塊11之外的任何源接受代碼。
現(xiàn)在參考圖2,描述包括本發(fā)明的優(yōu)選實施例的計算環(huán)境的方框圖。如圖所示,計算機系統(tǒng)20包括硬件結(jié)構(gòu)21,虛擬機管理器(VMM)或管理程序22和虛擬機23a-23b。虛擬機23a和23b優(yōu)選地位于分離的分區(qū),從而虛擬機23a內(nèi)的任何執(zhí)行都和虛擬機23b隔離,反之亦然。VMM22控制虛擬機23a和23b之間的所有通信。此外,VMM22能夠直接與硬件結(jié)構(gòu)21通信。硬件結(jié)構(gòu)21包括已知結(jié)構(gòu),例如處理器、寄存器、存儲器管理單元、存儲設(shè)備、輸入/輸出設(shè)備等。
每個虛擬機23a-23b內(nèi)能夠同時執(zhí)行操作系統(tǒng)和多個應(yīng)用程序。例如,在虛擬機23a內(nèi)執(zhí)行操作系統(tǒng)24和應(yīng)用程序25,而在虛擬機23b內(nèi)執(zhí)行操作系統(tǒng)26和應(yīng)用程序27。
盡管不要求,操作系統(tǒng)24可與操作系統(tǒng)26不同。例如,操作系統(tǒng)24可以是開放源Linux操作系統(tǒng),而操作系統(tǒng)25可以是微軟公司制造的Windows(注冊商標(biāo))操作系統(tǒng)。同樣地,由虛擬機23a仿真的下層處理器也可以不同于由虛擬機23b仿真的下層處理器。例如,由虛擬機23a仿真的下層處理器可以是英特爾公司制造的Pentium(注冊商標(biāo))處理器,而由虛擬機23b仿真的下層處理器可以是美國國際商用機器公司制造的PowerPC(注冊商標(biāo))處理器。
包括操作系統(tǒng)和相關(guān)應(yīng)用程序的每個虛擬機23a-23b都在用戶級操作。當(dāng)VMM 22使用直接執(zhí)行時,VMM 22被設(shè)置為所謂的用戶模式(即有限特權(quán)),從而虛擬機23a-23b都不能直接入控制硬件結(jié)構(gòu)21的操作的不同的特權(quán)寄存器。相反地,所有的特權(quán)指令都被捕獲入VMM 22。
在圖2中,顯示虛擬機23a包括交叉編譯器28,用于執(zhí)行應(yīng)用程序的初始交叉編譯。此外,顯示虛擬機23b包括執(zhí)行模塊29,用于執(zhí)行應(yīng)用程序的交叉編譯代碼。優(yōu)選地通過置換算法執(zhí)行交叉編譯,并且結(jié)果存儲在置換指令指針表30中。置換指令指針表30包括置換序列的多個條目。每個置換序列與應(yīng)用程序的交叉編譯代碼集相關(guān)。置換指令指針表30內(nèi)的所有置換序列可能彼此不同,雖然不要求它們彼此不同。在圖2中,顯示置換指令指針表30放置在VMM 22中;但是,置換指令指針表30也可設(shè)置在虛擬機23a中,只要它也可由虛擬機23b存取。
執(zhí)行置換的示例方法如下。首先為了置換,從一組指令中選擇指令n的子集。不是所有的指令置換都是同樣地有用的。例如,標(biāo)識指令的置換是根本沒有用。因此應(yīng)當(dāng)識別特定機器指令(諸如JUMP指令)做為重要指令,以便確保所有的重要指令都被置換。
產(chǎn)生置換有多種方法。一種方法是利用基于散列(hash)或加密的函數(shù),從而在數(shù)據(jù)段中的每個指令具有不同的映射,即,H(A1),H(A2),...,H(Ai),其中H是基于散列的函數(shù),而A是指令。使用基于散列或加密的函數(shù)的問題在于從通常編譯的觀點來看,同樣的指令可能具有不同的散列結(jié)果。例如,指令A(yù)5和A9可以是同樣的指令,但是H(A5)不必等于H(A9)。
另一個方法是使用不同的映射函數(shù)P(A),其中P是置換,而A是指令,生成P1(A),P2(A),...,Pn(A)。這個方法產(chǎn)生更加可預(yù)測的交叉編譯結(jié)果,因為不論出現(xiàn)在哪個代碼段,P1(J)都應(yīng)該是相同的,其中J是給定指令。
置換序列指定指令n的子集被置換或轉(zhuǎn)換的方法。每個置換序列可看成是具有多個空位(slot)的條目,每個空位要填充指令號。為了生成第r個的置換序列,初始選擇在0和n!-1之間的隨機數(shù)。例如,如果需要置換指令n的子集是5(這意味著有5?。?20個置換序列),隨機數(shù)101可在0和5!-1之間選擇作為第101個置換序列。
第一個指令號的空位位置Pos由選擇的隨機數(shù)r除以(n-1)!表示如下
Pos=r/(n-1)!除法的余數(shù)代替選擇的隨機數(shù)r,用于確定下一個指令號的空位位置Pos,直到所有的空位都填滿了指令號。對于每次確定,分母(n-1)!中的n遞減1。
因而,對于選擇的隨機數(shù)101,第一指令號的空位位置是101/(5-1)!=4,如圖3a所示。101/(5-1)!的余數(shù)是5,第二指令號的空位位置是5/(4-1)?。?,如圖3b所示。5/(4-1)!的余數(shù)是5,第三指令號的空位位置是5/(3-1)?。?,如圖3c所示。5/(3-1)!的余數(shù)是1,第四指令號的空位位置是1/(2-1)!=1,如圖3d所示。第五指令號位于剩余空白空位位置,如圖3e所示。
然后將置換序列“25431”(圖3e)輸入至置換指令指針表30(圖2)作為第101個置換序列的條目。應(yīng)用程序可根據(jù)第101個置換序列通過交叉編譯器28(圖2)置換為交叉編譯代碼集。在執(zhí)行期間,交叉編譯代碼集可根據(jù)存儲在置換指令指針表30中的第101個置換序列通過執(zhí)行模塊29(圖2)執(zhí)行。
例如,如果選擇的要置換的5個指令是ADD(加),SUBTRACT(減),JUMP(跳轉(zhuǎn)),BRANCH(轉(zhuǎn)移)和STORE(存儲),則相應(yīng)地為每個指令指派指令號,即,指令號1=ADD,指令號2=SUBTRACT,指令號3=JUMP,指令號4=BRANCH,指令號5=STORE。當(dāng)?shù)?01個置換序列用于執(zhí)行圖2的交叉編譯器28中的應(yīng)用程序的交叉編譯時,上述5個指令在應(yīng)用程序中的每次出現(xiàn)都根據(jù)置換序列“25431”轉(zhuǎn)換。換句話說,應(yīng)用程序中的每個ADD指令都被轉(zhuǎn)換成SUBTRACT指令,應(yīng)用程序中的每個SUBTRACT指令都被轉(zhuǎn)換成STORE指令,應(yīng)用程序中的每個JUMP指令都被轉(zhuǎn)換成BRANCH指令,應(yīng)用程序中的每個BRANCH指令都被轉(zhuǎn)換成JUMP指令,應(yīng)用程序中的每個STORE指令都被轉(zhuǎn)換成ADD指令。在執(zhí)行應(yīng)用程序的交叉編譯代碼期間,在圖2的執(zhí)行模塊29中執(zhí)行上述轉(zhuǎn)換的逆轉(zhuǎn)換。
置換可以以靜態(tài)或動態(tài)方式執(zhí)行。如果置換是以靜態(tài)方式執(zhí)行,則一組計算機系統(tǒng)可設(shè)置為使用同樣的置換序列。對于信息技術(shù)管理者來說這樣的方式是更簡單,因為在安裝期間要求每個應(yīng)用程序的交叉編譯只執(zhí)行一次。
如果置換是以動態(tài)方式執(zhí)行,有多種選擇。可以周期地改變置換序列集。那些置換的交叉編譯可被執(zhí)行一次,然后每次啟動計算機系統(tǒng)時,基于實際使用的置換序列可運行不同的交叉編譯程序集。進(jìn)一步地,每次計算機系統(tǒng)啟動時該置換序列可隨機地變化。在這種情況下,由計算機系統(tǒng)運行的交叉編譯器必須“在飛行中”(on the fly)進(jìn)行交叉編譯。
此外,對每個應(yīng)用程序都可改變置換序列,并且能夠以不同的方法完成。最簡單的實現(xiàn)是讓VMM使用應(yīng)用的簽名散列作為流加密算法的密鑰,從而為該應(yīng)用程序產(chǎn)生唯一的指令集。任何改變的應(yīng)用程序(諸如由于導(dǎo)致緩存溢出的病毒在主存儲器中被改變)會開始產(chǎn)成生不同的指令集。
可選地,在每次下載應(yīng)用程序時,VMM可產(chǎn)生隨機數(shù),該應(yīng)用程序的代碼段通過流加密或散列(因為不必是可逆的)引擎運行以改變交叉編譯。這個方法提供了附加的安全級別,因為Pn(A)函數(shù)變?yōu)槌A亢瘮?shù)P(A)并且保持不可預(yù)測。
如上所述,本發(fā)明提供一種防止惡意軟件在計算機系統(tǒng)中執(zhí)行的方法。如果VMM保留與要運行的每個置換應(yīng)用的散列相關(guān)的置換,即使抽樣攻擊(由攻擊者以某種方式獲得抽樣置換應(yīng)用、和確定的置換應(yīng)用于病毒,然后發(fā)送病毒執(zhí)行感染)失敗。
也需要注意,盡管以純功能的計算機系統(tǒng)的角度描述了本發(fā)明,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解本發(fā)明的機制能夠以多種形式作為程序產(chǎn)品分布,不論使用哪種特定類型的信號承載媒體實際地實現(xiàn)該分布,本發(fā)明同樣適用。信號承載媒體的例子包括但不限于諸如軟盤或光盤的可記錄類型的介質(zhì),或諸如模擬或數(shù)字通信鏈路的傳輸類型媒介。
盡管本發(fā)明參考優(yōu)選實施例進(jìn)行特定的表示和描述,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)懂得,在不偏離本發(fā)明精神和范圍的前提下可對本發(fā)明的形式和細(xì)節(jié)進(jìn)行不同的變化。
權(quán)利要求
1.一種防止惡意軟件在計算機系統(tǒng)內(nèi)執(zhí)行的方法,所述方法包括對應(yīng)用程序中的指令子集進(jìn)行置換,從而在對所述計算機系統(tǒng)的所述應(yīng)用程序進(jìn)行任何實際執(zhí)行之前產(chǎn)生指令的置換序列;將指令的所述置換序列的置換序列號存儲在置換指令指針表中;和在執(zhí)行模塊中執(zhí)行指令的所述置換序列,根據(jù)存儲在所述置換指令指針表中的指令的所述置換序列的所述置換序列號,所述執(zhí)行模塊能夠?qū)⒅噶畹乃鲋脫Q序列翻譯為所述計算機系統(tǒng)內(nèi)的處理器的實際機器代碼。
2.根據(jù)權(quán)利要求1所述的方法,其中所述應(yīng)用程序可在計算機系統(tǒng)中執(zhí)行而不進(jìn)行交叉編譯。
3.根據(jù)權(quán)利要求1所述的方法,其中所述方法進(jìn)一步包括提供第一虛擬機執(zhí)行所述置換;和提供第二虛擬機執(zhí)行所述執(zhí)行。
4.根據(jù)權(quán)利要求3所述的方法,其中所述方法進(jìn)一步包括在所述計算機系統(tǒng)中提供虛擬存儲管理器,用于控制所述第一和第二虛擬機。
5.根據(jù)權(quán)利要求3所述的方法,其中所述方法進(jìn)一步包括將所述第一和第二虛擬機放置在分開的分區(qū)。
6.根據(jù)權(quán)利要求3所述的方法,其中所述方法進(jìn)一步包括在所述第一和第二虛擬機中提供不同的操作系統(tǒng)。
7.一種具有防止惡意軟件在計算機系統(tǒng)內(nèi)執(zhí)行的計算機程序產(chǎn)品的計算機可用介質(zhì),所述計算機可用介質(zhì)包括用于對應(yīng)用程序中的指令子集進(jìn)行置換從而在對所述計算機系統(tǒng)的所述應(yīng)用程序進(jìn)行任何實際執(zhí)行之前產(chǎn)生指令的置換序列的程序代碼裝置;用于將指令的所述置換序列的置換序列號存儲在置換指令指針表中的程序代碼裝置;和用于在執(zhí)行模塊中執(zhí)行指令的所述置換序列的程序代碼裝置,所述執(zhí)行模塊能夠根據(jù)存儲在所述置換指令指針表中的指令的所述置換序列的所述置換序列號將指令的所述置換序列翻譯為所述計算機系統(tǒng)內(nèi)的處理器的實際機器代碼。
8.根據(jù)權(quán)利要求7所述的計算機可用介質(zhì),其特征在于所述應(yīng)用程序可在計算機系統(tǒng)中執(zhí)行而不進(jìn)行交叉編譯。
9.根據(jù)權(quán)利要求7所述的計算機可用介質(zhì),其特征在于所述計算機可用介質(zhì)進(jìn)一步包括用于提供包含執(zhí)行所述置換的所述程序代碼裝置的第一虛擬機的程序代碼裝置;和用于提供包含用于執(zhí)行的所述程序代碼裝置的第二虛擬機的程序代碼裝置。
10.根據(jù)權(quán)利要求9所述的計算機可用介質(zhì),其特征在于所述計算機可用介質(zhì)進(jìn)一步包括提供所述計算機系統(tǒng)中的虛擬存儲管理器的程序代碼裝置,用于控制所述第一和第二虛擬機。
11.根據(jù)權(quán)利要求9所述的計算機可用介質(zhì),其特征在于所述計算機可用介質(zhì)進(jìn)一步包括用于將所述第一和第二虛擬機放置在分開的分區(qū)的程序代碼裝置。
12.根據(jù)權(quán)利要求9所述的計算機可用介質(zhì),其特征在于所述計算機可用介質(zhì)進(jìn)一步包括用于提供所述第一和第二虛擬機中的不同的操作系統(tǒng)的程序代碼裝置。
13.一種能夠防止惡意軟件被執(zhí)行的計算機系統(tǒng),所述計算機系統(tǒng)包括用于對應(yīng)用程序中的指令子集進(jìn)行置換從而在對所述計算機系統(tǒng)的所述應(yīng)用程序進(jìn)行任何實際執(zhí)行之前產(chǎn)生指令的置換序列的裝置;置換指令指針表,用于存儲指令的所述置換序列的置換序列號;和用于執(zhí)行在執(zhí)行模塊中的指令的所述置換序列的裝置,所述執(zhí)行模塊能夠根據(jù)存儲在所述置換指令指針表中的指令的所述置換序列的所述置換序列號將指令的所述置換序列翻譯為所述計算機系統(tǒng)內(nèi)的處理器的實際機器代碼。
14.根據(jù)權(quán)利要求13所述的計算機系統(tǒng),其特征在于所述應(yīng)用程序可在計算機系統(tǒng)中執(zhí)行而不進(jìn)行交叉編譯。
15.根據(jù)權(quán)利要求13所述的計算機系統(tǒng),其特征在于所述計算機系統(tǒng)進(jìn)一步包括第一虛擬機,包含用于執(zhí)行置換的所述裝置;和第二虛擬機,包含用于執(zhí)行的所述裝置。
16.根據(jù)權(quán)利要求15所述的計算機系統(tǒng),其特征在于所述計算機系統(tǒng)進(jìn)一步包括控制所述第一和第二虛擬機的虛擬存儲管理器。
17.根據(jù)權(quán)利要求15所述的計算機系統(tǒng),其特征在于所述第一和第二虛擬機位于分開的分區(qū)。
18.根據(jù)權(quán)利要求15所述的計算機系統(tǒng),其特征在于所述第一虛擬機的操作系統(tǒng)不同于所述第二虛擬機的操作系統(tǒng)。
19.一種防止惡意軟件在計算機系統(tǒng)內(nèi)執(zhí)行的方法,所述方法包括交叉編譯應(yīng)用程序,在所述計算機系統(tǒng)的所述應(yīng)用程序的任何實際執(zhí)行之前產(chǎn)生所述應(yīng)用程序的交叉編譯代碼集;和執(zhí)行在執(zhí)行模塊中的所述應(yīng)用程序的所述交叉編譯代碼集,所述執(zhí)行模塊能夠識別所述應(yīng)用程序的所述交叉編譯代碼集并將其翻譯為所述計算機系統(tǒng)中的處理器的實際機器代碼。
20.根據(jù)權(quán)利要求19所述的方法,其中所述應(yīng)用程序可在計算機系統(tǒng)中執(zhí)行而不進(jìn)行交叉編譯。
21.根據(jù)權(quán)利要求19所述的方法,其中所述方法進(jìn)一步包括提供第一虛擬機執(zhí)行所述交叉編譯;和提供第二虛擬機執(zhí)行所述執(zhí)行。
22.根據(jù)權(quán)利要求21所述的方法,其中所述方法進(jìn)一步包括在所述計算機系統(tǒng)中提供虛擬存儲管理器,用于控制所述第一和第二虛擬機。
23.根據(jù)權(quán)利要求21所述的方法,其中所述方法進(jìn)一步包括將所述第一和第二虛擬機放置于分開的分區(qū)。
24.根據(jù)權(quán)利要求21所述的方法,其中所述方法進(jìn)一步包括在所述第一和第二虛擬機中提供不同的操作系統(tǒng)。
25.一種具有防止惡意軟件在計算機系統(tǒng)內(nèi)執(zhí)行的計算機程序產(chǎn)品的計算機可用介質(zhì),所述計算機可用介質(zhì)包括用于交叉編譯應(yīng)用程序從而在對所述計算機系統(tǒng)的所述應(yīng)用程序進(jìn)行任何實際執(zhí)行之前產(chǎn)生所述應(yīng)用程序的交叉編譯代碼的程序代碼裝置;用于執(zhí)行在執(zhí)行模塊中的所述應(yīng)用程序的所述交叉編譯代碼集的程序代碼裝置,所述執(zhí)行模塊能夠識別所述應(yīng)用程序的所述交叉編譯代碼集并將其翻譯為所述計算機系統(tǒng)中的處理器的實際機器代碼。
26.根據(jù)權(quán)利要求25所述的計算機可用介質(zhì),其特征在于所述應(yīng)用程序可在計算機系統(tǒng)中執(zhí)行而不進(jìn)行交叉編譯。
27.根據(jù)權(quán)利要求25所述的計算機可用介質(zhì),其特征在于所述計算機可用介質(zhì)進(jìn)一步包括用于提供包含用于交叉編譯的所述程序代碼裝置的第一虛擬機的程序代碼裝置;和用于提供包含用于執(zhí)行的所述程序代碼裝置的第二虛擬機的程序代碼裝置。
28.根據(jù)權(quán)利要求27所述的計算機可用介質(zhì),其特征在于所述計算機可用介質(zhì)進(jìn)一步包括用于在所述計算機系統(tǒng)中提供虛擬存儲管理器的程序代碼裝置,用于控制所述第一和第二虛擬機。
29.根據(jù)權(quán)利要求27所述的計算機可用介質(zhì),其特征在于所述計算機可用介質(zhì)進(jìn)一步包括用于將所述第一和第二虛擬機放置在分開的分區(qū)的程序代碼裝置。
30.根據(jù)權(quán)利要求27所述的計算機可用介質(zhì),其特征在于所述計算機可用介質(zhì)進(jìn)一步包括用于在所述第一和第二虛擬機中提供不同的操作系統(tǒng)的程序代碼裝置。
31.一種能夠防止惡意軟件被執(zhí)行的計算機系統(tǒng),所述計算機系統(tǒng)包括交叉編譯應(yīng)用程序以便在所述計算機系統(tǒng)的所述應(yīng)用程序的任何實際執(zhí)行之前產(chǎn)生所述應(yīng)用程序的交叉編譯代碼集的裝置;和執(zhí)行在執(zhí)行模塊中的所述應(yīng)用程序的所述交叉編譯代碼集的裝置,所述執(zhí)行模塊能夠識別所述應(yīng)用程序的所述交叉編譯代碼集并將其翻譯為所述計算機系統(tǒng)中的處理器的實際機器代碼。
32.根據(jù)權(quán)利要求3 1所述的計算機系統(tǒng),其特征在于所述應(yīng)用程序可在計算機系統(tǒng)中執(zhí)行而不進(jìn)行交叉編譯。
33.根據(jù)權(quán)利要求31所述的計算機系統(tǒng),其特征在于所述計算機系統(tǒng)進(jìn)一步包括第一虛擬機,包含進(jìn)行交叉編譯的所述裝置;和第二虛擬機,包含用于執(zhí)行的所述裝置。
34.根據(jù)權(quán)利要求33所述的計算機系統(tǒng),其特征在于所述計算機系統(tǒng)進(jìn)一步包括控制所述第一和第二虛擬機的虛擬存儲管理器。
35.根據(jù)權(quán)利要求33所述的計算機系統(tǒng),其特征在于所述第一和第二虛擬機位于分開的分區(qū)。
36.根據(jù)權(quán)利要求33所述的計算機系統(tǒng),其特征在于所述第一虛擬機的操作系統(tǒng)不同于所述第二虛擬機的操作系統(tǒng)。
全文摘要
本發(fā)明揭示一種防止惡意軟件在計算機系統(tǒng)內(nèi)執(zhí)行的方法。在應(yīng)用程序中對指令子集進(jìn)行置換從而在對計算機系統(tǒng)的應(yīng)用程序進(jìn)行任何實際執(zhí)行之前產(chǎn)生指令的置換序列。指令的置換序列的置換序列號存儲在置換指令指針表中。在執(zhí)行模塊中執(zhí)行指令的置換序列,該執(zhí)行模塊能夠根據(jù)存儲在置換指令指針表中的指令的置換序列的置換序列號將指令的置換序列翻譯為計算機系統(tǒng)內(nèi)的處理器的實際機器代碼。
文檔編號G06F9/455GK101021886SQ20071000557
公開日2007年8月22日 申請日期2007年2月12日 優(yōu)先權(quán)日2006年2月14日
發(fā)明者大衛(wèi)·C.·查利納, 邁克·C.·戴維斯, 彼特·赫特舒斯, 羅德·D.·沃特曼 申請人:聯(lián)想(新加坡)私人有限公司