專(zhuān)利名稱(chēng):監(jiān)控軟件程序按規(guī)定執(zhí)行的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及根據(jù)權(quán)利要求1前序部分的一種方法,也就是一種用于監(jiān)控軟件程序按規(guī)定執(zhí)行的方法。
按規(guī)定執(zhí)行軟件程序是一個(gè)永久目標(biāo),通過(guò)提供不同的措施總可以近似實(shí)現(xiàn)這個(gè)目標(biāo)。
然而早期造成軟件程序沒(méi)有按規(guī)定執(zhí)行原因是不可靠的硬件和程序錯(cuò)誤,在這期間,目標(biāo)明確的操作程序運(yùn)行總占有重要角色。
通過(guò)目標(biāo)明確的操作程序運(yùn)行,例如可能跳過(guò)特定的程序部分,因此例如可以繞開(kāi)確定訪問(wèn)權(quán)限的檢查。
例如這遠(yuǎn)遠(yuǎn)不僅僅造成芯片卡中的一個(gè)嚴(yán)重問(wèn)題,因?yàn)橐环矫孢@首先在與安全相關(guān)的區(qū)域(例如對(duì)于訪問(wèn)操作、現(xiàn)金交易等等)找到另外一個(gè)改進(jìn),另一個(gè)方面,因?yàn)樗匀徊豢赡芴幱诔掷m(xù)的監(jiān)控或者監(jiān)視下,所以它可以無(wú)障礙成為操作嘗試的目標(biāo)。
根據(jù)大量已經(jīng)提供的安全預(yù)防,對(duì)于濫用可用的操作的成功的可能性十分小。但盡管這樣也不能完全排除這些可能性。
因此基于本發(fā)明的任務(wù)是找出一個(gè)監(jiān)控軟件程序按規(guī)定執(zhí)行的方法,通過(guò)這種方法可以進(jìn)一步排除對(duì)程序運(yùn)行目標(biāo)特別明確的操作。
根據(jù)本發(fā)明通過(guò)在權(quán)利要求1特征部分所說(shuō)明的特征完成這個(gè)任務(wù)。
因此計(jì)劃避免改寫(xiě)為以后使用而存儲(chǔ)的返回地址和/或使用錯(cuò)誤的返回地址或已改寫(xiě)的返回地址作為返回地址。
可以使用不同的方式和方法具體實(shí)現(xiàn)這些處理步驟。在最簡(jiǎn)單情況下,在一個(gè)要求存儲(chǔ)返回地址的函數(shù)調(diào)用或者相似的情況中,不僅僅存儲(chǔ)返回地址自身,而且補(bǔ)充存儲(chǔ)安全信息,安全信息能夠判斷被存儲(chǔ)的返回地址是否還是必需的,并且因此不允許改寫(xiě)返回地址,和/或判斷被存儲(chǔ)的返回地址是否是開(kāi)始時(shí)存儲(chǔ)的返回地址或者是否是將存儲(chǔ)的返回地址。
在首先被提到的情況中,也就是在實(shí)現(xiàn)返回地址改寫(xiě)保護(hù)時(shí),例如安全信息可以包括一個(gè)寫(xiě)保護(hù)識(shí)別碼,如一個(gè)寫(xiě)保護(hù)位或者類(lèi)似的識(shí)別碼,在存儲(chǔ)一個(gè)返回地址時(shí),設(shè)置寫(xiě)保護(hù)位,在使用存儲(chǔ)的返回地址作為返回地址后,復(fù)位寫(xiě)保護(hù)位。
在第二種情況中,也就是在實(shí)現(xiàn)返回地址應(yīng)用保護(hù)時(shí),安全信息例如包括返回地址自身或者包括以特別方法表示返回地址或者描述返回地址特征的數(shù)據(jù)。
所謂的安全信息被存儲(chǔ)在一個(gè)存儲(chǔ)器區(qū)域中,優(yōu)選的不可能從外部存取這個(gè)存儲(chǔ)器區(qū)域;象往常一樣可以以所謂的棧的形式(堆棧存儲(chǔ)器)實(shí)現(xiàn)返回地址的“標(biāo)準(zhǔn)”存儲(chǔ)。
在對(duì)棧的每次寫(xiě)嘗試之前,通過(guò)寫(xiě)保護(hù)位證明將被寫(xiě)區(qū)域是否是一個(gè)寫(xiě)保護(hù)區(qū)域,因此避免了改寫(xiě)以后用作返回地址的數(shù)據(jù)。
替換或者補(bǔ)充檢查用作返回地址的數(shù)據(jù)是否相應(yīng)于開(kāi)始時(shí)存儲(chǔ)的或者將被存儲(chǔ)的返回地址,因此可以避免在存儲(chǔ)返回地址后,將改變了的數(shù)據(jù)(被操作)數(shù)據(jù)作為返回地址。
在兩種情況中,為了避免另外的操作嘗試,可以中斷正在運(yùn)行的程序,和/或復(fù)位執(zhí)行程序的系統(tǒng),和/或者釋放一個(gè)警報(bào),和/或者清除與安全相關(guān)的數(shù)據(jù),和/或采取特別的保護(hù)措施。
使用這些方法,可以保證對(duì)返回地址目標(biāo)明確的操作不能改變程序按規(guī)定運(yùn)行。
因此找到一種可以進(jìn)一步排除目標(biāo)特別明確的操作軟件運(yùn)行的方法。
本發(fā)明優(yōu)選的另外設(shè)計(jì)是從屬權(quán)利要求的主題。
下面根據(jù)實(shí)施例,參考附圖,詳細(xì)說(shuō)明本發(fā)明。
圖中
圖1一個(gè)說(shuō)明執(zhí)行返回地址應(yīng)用保護(hù)系統(tǒng)的部分簡(jiǎn)圖,和圖2一個(gè)說(shuō)明一個(gè)返回地址改寫(xiě)保護(hù)和一個(gè)修改過(guò)的返回地址應(yīng)用保護(hù)的簡(jiǎn)圖。
在圖1中部分說(shuō)明的系統(tǒng)是一個(gè)為執(zhí)行軟件程序而設(shè)計(jì)的系統(tǒng),它可以完全或者部分的處于一個(gè)微處理器中、一個(gè)控制器中、一個(gè)信號(hào)處理器或者相類(lèi)似的器件中。
所說(shuō)明的部分是系統(tǒng)中與處理返回地址相關(guān)的部分。
例如如果執(zhí)行的程序包括一個(gè)函數(shù)調(diào)用,那么存儲(chǔ)返回地址。在一個(gè)函數(shù)調(diào)用(例如在英特爾微控制器8051的指令LCALL)中-在程序存儲(chǔ)器的范圍內(nèi),跳轉(zhuǎn)到一個(gè)位置(地址),在這個(gè)位置上存儲(chǔ)用于現(xiàn)在將執(zhí)行函數(shù)的程序,-執(zhí)行所涉及的函數(shù)程序,和-返回到程序存儲(chǔ)器中的位置,在這個(gè)位置上,實(shí)現(xiàn)了到函數(shù)程序的跳轉(zhuǎn)。
最后提到的地址,也就是在執(zhí)行函數(shù)程序后,繼續(xù)執(zhí)行程序的地址,該地址就是所說(shuō)的返回地址。
因此執(zhí)行軟件程序的設(shè)備引導(dǎo)該設(shè)備在執(zhí)行函數(shù)后必須跳轉(zhuǎn)到哪,它需要時(shí)間上中間存儲(chǔ)返回地址。
在這個(gè)位置上已經(jīng)提到的函數(shù)調(diào)用不是唯一的事件,其中必須存儲(chǔ)返回地址。僅舉出一些例子,例如在中斷(程序中斷)時(shí)或者當(dāng)多任務(wù)操作系統(tǒng)中任務(wù)切換時(shí),存儲(chǔ)返回地址是必需的。
一般的以一個(gè)所謂的?;蛘叨褩?堆棧)的形式實(shí)現(xiàn)存儲(chǔ)返回地址。在圖1中使用符號(hào)1表示這樣一個(gè)棧。一個(gè)棧邏輯電路2控制或者管理?xiàng)?。另外棧邏輯電路2產(chǎn)生一個(gè)所謂的棧指針,該指針指示棧的部分區(qū)域,該區(qū)域作為下次將被寫(xiě)入或者讀出的區(qū)域。棧和它的工作方式一般是公開(kāi)的,因此這里可以不作進(jìn)一步說(shuō)明。
在棧1中不僅可以存儲(chǔ)返回地址,而且還可以存儲(chǔ)其他任意的數(shù)據(jù)(寄存器內(nèi)容、局部變量等等)。然而本發(fā)明的敘述基本上唯一涉及處理返回地址。
例如在LCALL指令的情況下,在棧1中需要存儲(chǔ)一個(gè)返回地址,這通過(guò)棧邏輯電路2來(lái)實(shí)現(xiàn)。
與在傳統(tǒng)系統(tǒng)中不同,在現(xiàn)在考慮的系統(tǒng)中,在棧1中存儲(chǔ)的或者將被存儲(chǔ)的返回地址附加作為安全信息被存儲(chǔ)在另一個(gè)存儲(chǔ)器中。這個(gè)存儲(chǔ)器在下面被稱(chēng)作安全存儲(chǔ)器,在圖1中用符號(hào)3表示這個(gè)存儲(chǔ)器。為安全存儲(chǔ)器3分配一個(gè)安全存儲(chǔ)器邏輯電路4,通過(guò)這個(gè)邏輯電路4可以使用類(lèi)似于棧邏輯電路2控制棧1的方式控制或者管理安全存儲(chǔ)器。
與棧1相反,在執(zhí)行軟件程序的系統(tǒng)外是不能引用安全存儲(chǔ)器3,也就是說(shuō)不能或者或者至少不能使用可以承擔(dān)的費(fèi)用對(duì)寫(xiě)入安全存儲(chǔ)器的數(shù)據(jù)進(jìn)行目標(biāo)明確的操作。
如果能夠?qū)懭牖蛘咦x出一個(gè)返回地址,那么與堆棧2相反,在所考慮的例子中,僅應(yīng)用安全存儲(chǔ)器控制邏輯4。然而替換的自然還可以使安全存儲(chǔ)器控制邏輯4能夠?qū)α硪粋€(gè)事件(在外部實(shí)現(xiàn)的寫(xiě)或者讀過(guò)程)起反應(yīng)。
如果程序運(yùn)行到達(dá)一個(gè)點(diǎn),在這個(gè)點(diǎn)上實(shí)現(xiàn)了到以前存儲(chǔ)的返回地址的跳躍,例如在一個(gè)RET指令中,那么通過(guò)相應(yīng)的讀棧1可以得到必需的返回地址。但是在使用這時(shí)得到的數(shù)據(jù)作為返回地址前,檢查得到的數(shù)據(jù)是否和安全存儲(chǔ)器3中作為安全信息存儲(chǔ)的返回地址一致。
為此提供一個(gè)比較器5,這個(gè)比較器接受從棧1和安全存儲(chǔ)器3中得到的相互對(duì)照的數(shù)據(jù),并且比較這些數(shù)據(jù)。
如果在比較器5中進(jìn)行的比較中證實(shí)相互對(duì)照的數(shù)據(jù)是一致的,那么這意味著從棧1中得到的數(shù)據(jù)對(duì)應(yīng)于開(kāi)始存儲(chǔ)的返回地址,也就是既不是由于硬件和/或軟件錯(cuò)誤不正確操作,也不是在或者從錯(cuò)誤位置上存儲(chǔ)或者讀出。因此可以將在棧1存儲(chǔ)的數(shù)據(jù)認(rèn)為是按順序的返回地址并且使用這些數(shù)據(jù)。因?yàn)橄笊厦嬉呀?jīng)提到的,實(shí)際上不可能對(duì)安全存儲(chǔ)器3的內(nèi)容有目標(biāo)明確的影響,因此這種最終推斷是可行的。
如果在比較器5中進(jìn)行的比較中證實(shí)相互對(duì)照的數(shù)據(jù)不是一致的,那么這意味著從棧1中得到的數(shù)據(jù)具有極大的可能性,即或者被操作,或者由于硬件和/或軟件錯(cuò)誤被不正確存儲(chǔ)或者讀出,或者在或者從錯(cuò)誤位置上存儲(chǔ)或者讀出的可能性。與造成不一致的原因無(wú)關(guān),不能作為返回地址使用棧1存儲(chǔ)的數(shù)據(jù),因?yàn)檫@樣將得出與按規(guī)定程序運(yùn)行的偏差。在這種情況下比較器5產(chǎn)生一個(gè)信號(hào)NMI,這個(gè)信號(hào)輸出到一個(gè)NMI邏輯電路6。NMI邏輯電路6實(shí)現(xiàn)立即中斷程序和/或者復(fù)位處理軟件程序的系統(tǒng)和/或者釋放一個(gè)警報(bào)和/或者清除與安全相關(guān)的數(shù)據(jù)。
在所考慮的例子中,通過(guò)指令激活比較器5,該指令例如是RET指令,該指令將從棧1中讀出作為返回地址解釋的數(shù)據(jù)。在其他的所有時(shí)間內(nèi),不激活比較器。
通過(guò)說(shuō)明的方法,實(shí)現(xiàn)了如果并且只要沒(méi)有象往常一樣探測(cè)到返回地址錯(cuò)誤,那么可以不執(zhí)行將被執(zhí)行的軟件程序。
參考圖1所說(shuō)明的例子可以認(rèn)為是在需要時(shí)引用返回地址應(yīng)用保護(hù)的具體實(shí)現(xiàn)。
雖然根據(jù)例子對(duì)此沒(méi)有作詳細(xì)說(shuō)明,但是屬于各個(gè)返回地址的安全信息是返回地址自身這一情況不一定是必需的。替換的可以僅使用返回地址的選出部分或者使用任意其他方式和方法表示返回地址或者描述返回地址特征的數(shù)據(jù)作為安全信息。然后比較器5也許能夠?qū)⑾鄳?yīng)給出的狀態(tài)替換為被改變的對(duì)照設(shè)備。
力求的程序運(yùn)行監(jiān)控的替換是一個(gè)現(xiàn)參考圖2說(shuō)明的返回地址改寫(xiě)保護(hù)。
另外圖2說(shuō)明一個(gè)存儲(chǔ)器11,能夠?qū)⒋鎯?chǔ)器11分成棧11a形式的第一個(gè)存儲(chǔ)器區(qū)域和安全存儲(chǔ)器11b形式的第二個(gè)存儲(chǔ)器區(qū)域。
棧11a對(duì)應(yīng)于在圖1中說(shuō)明的棧1。安全存儲(chǔ)器11b大概對(duì)應(yīng)于在圖1中說(shuō)明的安全存儲(chǔ)器3;一般的使用其他安全信息說(shuō)明安全存儲(chǔ)器11b,象這是在安全存儲(chǔ)器3中的情況。
象安全存儲(chǔ)器3一樣,不能從執(zhí)行監(jiān)視軟件程序的設(shè)備外部引用安全存儲(chǔ)器11b。也就是說(shuō),在程序過(guò)程監(jiān)控的這個(gè)變體中,不能操作在安全存儲(chǔ)器存儲(chǔ)的安全信息,或者在任何情況下不能使用可計(jì)算的費(fèi)對(duì)其操作。
在安全存儲(chǔ)器11b存儲(chǔ)的安全信息包括一個(gè)寫(xiě)保護(hù)位,如果不允許改寫(xiě)分配給棧區(qū)域的內(nèi)容,那么設(shè)置這個(gè)寫(xiě)保護(hù)位為“1”;如果允許改寫(xiě)屬于棧區(qū)域的內(nèi)容,那么設(shè)置這個(gè)寫(xiě)保護(hù)位為“1”。
例如在LCALL指令的情況下,涉及在棧11a存儲(chǔ)一個(gè)返回地址,那么使用一般的方式和方法實(shí)現(xiàn)這個(gè)操作。
同時(shí),屬于棧區(qū)域的安全存儲(chǔ)器11b的區(qū)域?qū)懭胍粋€(gè)“1”,因此標(biāo)明不允許改寫(xiě)相應(yīng)的棧區(qū)域,在上述棧區(qū)域中寫(xiě)入返回地址。
在考慮的例子中,棧11a被分為分別包括8位的區(qū)域,其中為每一個(gè)8位區(qū)域分配一個(gè)在安全存儲(chǔ)器11b中存儲(chǔ)的寫(xiě)保護(hù)位。如果從使用16位地址處理出發(fā),那么為了存儲(chǔ)一個(gè)返回地址,必須存儲(chǔ)兩個(gè)棧區(qū)域。
根據(jù)在圖2中的說(shuō)明,在棧11a中存儲(chǔ)一個(gè)返回地址。返回地址將一個(gè)包括較高權(quán)的8位部分(PCH)和一個(gè)在包括較低權(quán)的8位部分(PCL)組合在一起。不僅為包括PCH的棧區(qū)域而且為包括PCL的棧區(qū)域分配“1”,作為安全信息或者寫(xiě)保護(hù)位。
如果作為返回地址來(lái)使用在所屬的棧區(qū)域中存儲(chǔ)的數(shù)據(jù),那么將各個(gè)安全信息或者寫(xiě)保護(hù)位復(fù)位為“0”。
在每次嘗試在棧中寫(xiě)入數(shù)據(jù)(那里改寫(xiě)被存儲(chǔ)的數(shù)據(jù))前,分析屬于被寫(xiě)棧區(qū)域的安全信息(所屬的寫(xiě)保護(hù)位),以便于確定在這個(gè)位置上是否允許寫(xiě)棧。
如果所屬的安全信息或者所屬的寫(xiě)保護(hù)位具有值“1”,那么在這個(gè)位置上不允許寫(xiě)棧。寫(xiě)嘗試被判斷為操作嘗試或者硬件或者軟件故障。如果相反所屬的安全信息或者所屬的寫(xiě)保護(hù)位為“0”,那么在這個(gè)位置上,允許寫(xiě)棧。
通過(guò)一個(gè)寫(xiě)保護(hù)檢查電路來(lái)檢查確定是否允許寫(xiě)特定的棧區(qū)域,在考慮的例子中通過(guò)一個(gè)UND網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)這個(gè)寫(xiě)保護(hù)檢查電路。在UND網(wǎng)絡(luò)12中,將屬于將被寫(xiě)棧區(qū)域的寫(xiě)保護(hù)位和一個(gè)通知寫(xiě)愿望的信號(hào)Write_Stack作為輸入信號(hào)。其中如果存在著一個(gè)寫(xiě)愿望,那么Write_Stack可能接受值“1”,如果不存在一個(gè)寫(xiě)愿望,那么Write_Stack可能接受值“0”。UND網(wǎng)絡(luò)12的輸出信號(hào)Valid_Write說(shuō)明是否允許按預(yù)期寫(xiě)所涉及的棧區(qū)域(Valid_Write=“0”)或者是否不允許寫(xiě)(Valid_Write=“1”)??梢韵髨D1中比較器5的輸出信號(hào)NMI一樣來(lái)使用UND網(wǎng)絡(luò)的輸出信號(hào)Valid_Write,以便于立即中斷程序的運(yùn)行和/或者復(fù)位處理程序的系統(tǒng)和/或者釋放一個(gè)警報(bào)和/或者清除與安全相關(guān)的數(shù)據(jù)。
補(bǔ)充這個(gè)返回地址改寫(xiě)保護(hù),可以在根據(jù)圖2的系統(tǒng)中集成一個(gè)與根據(jù)圖1的執(zhí)行相反的被修改的返回地址應(yīng)用保護(hù)。這個(gè)補(bǔ)充保護(hù)機(jī)制的內(nèi)容是在使用從棧11a中讀出的數(shù)據(jù)作為返回地址前在這一點(diǎn)上檢查它是否完全表示一個(gè)返回地址。這可以從屬于各個(gè)棧區(qū)域的安全信息或者寫(xiě)保護(hù)位來(lái)判斷。僅僅當(dāng)屬于將被讀出棧區(qū)域的安全信息或者寫(xiě)保護(hù)位的值是“1”時(shí),存儲(chǔ)在相應(yīng)棧區(qū)域中的數(shù)據(jù)表示一個(gè)返回地址。對(duì)此的前提條件自然是安全信息或者寫(xiě)保護(hù)位僅僅對(duì)于表示返回地址的數(shù)據(jù),也就是例如關(guān)于一個(gè)CALL指令或者相類(lèi)似在棧11a被寫(xiě)入的數(shù)據(jù)的指令,被置為“1”。
根據(jù)圖2的說(shuō)明通過(guò)一個(gè)UND網(wǎng)絡(luò)實(shí)現(xiàn)這個(gè)補(bǔ)充保護(hù)機(jī)制。在這個(gè)UND網(wǎng)絡(luò)13上使用屬于將讀出棧區(qū)域的寫(xiě)保護(hù)位和一個(gè)通知所讀出數(shù)據(jù)的使用目的的信號(hào)Read_Stack作為輸入信號(hào),其中如果象在出現(xiàn)一個(gè)RET指令時(shí),考慮一個(gè)應(yīng)用作為返回地址,那么Read_Stack可能接受值“1”,其中如果想要其它方面的應(yīng)用,Read_Stack可能接受值“0”。然后UND網(wǎng)絡(luò)13的輸出信號(hào)Valid_Read說(shuō)明是否允許所請(qǐng)求的數(shù)據(jù)作為返回地址(Valid_Read=“1”)或者它是否允許(Valid_Read=“0”)。如果在請(qǐng)求返回地址時(shí)出現(xiàn)這種情況使用從棧11a中請(qǐng)求的作為返回地址的數(shù)據(jù)通過(guò)Valid_Read=“0”歸為不允許的,那么可以將它翻譯為操作嘗試或者硬件或者軟件錯(cuò)誤,并且利用它導(dǎo)出適合的保護(hù)方法。這種方法可以特別是立即程序中斷和/或者復(fù)位處理程序的系統(tǒng)和/或者釋放一個(gè)警報(bào)和/或者清除與安全相關(guān)的數(shù)據(jù)。
根據(jù)現(xiàn)有的說(shuō)明,防止外部訪問(wèn)的安全信息包括一個(gè)寫(xiě)保護(hù)位。以下內(nèi)容是不言而喻的可以使用一個(gè)包括具有任意多個(gè)和任意意義的位的識(shí)別碼代替這些,通過(guò)這個(gè)識(shí)別碼,不僅返回地址,而且任意另一個(gè)保護(hù)值的數(shù)據(jù),在操作和錯(cuò)誤前,為了保護(hù)它們,接受一次特別處理。
安全存儲(chǔ)器象上面所說(shuō)的是一個(gè)從外部不能引用的存儲(chǔ)器,在這個(gè)安全存儲(chǔ)器中存儲(chǔ)不同的安全信息。優(yōu)選在執(zhí)行將被監(jiān)控的軟件程序的設(shè)備中實(shí)現(xiàn)這個(gè)安全存儲(chǔ)器,也就是在通常的一個(gè)微處理器中、一個(gè)微控制器中或者一個(gè)信號(hào)處理器自身中實(shí)現(xiàn);這樣特別好防止了從外面對(duì)它的訪問(wèn)。在一個(gè)微處理器、一個(gè)微控制器或者一個(gè)信號(hào)處理器(例如隱藏或者陰影棧中)的范圍內(nèi),能夠相當(dāng)簡(jiǎn)單的實(shí)現(xiàn)從外部不能被引用的存儲(chǔ)器。因此它僅僅需要對(duì)核心軟件進(jìn)行相應(yīng)的修改。
此外使用已經(jīng)說(shuō)明的方法不要求在硬件和軟件上的變化。特別的可以照常繼續(xù)使用棧。
因此找到一種監(jiān)視軟件程序按規(guī)定執(zhí)行的方法,這種方法使用簡(jiǎn)單的方法并且不改變軟件,可以進(jìn)一步排除對(duì)軟件運(yùn)行目標(biāo)特別明確的操作、另外部分的硬件和軟件錯(cuò)誤。
權(quán)利要求
1.監(jiān)控軟件程序按規(guī)定運(yùn)行的方法,其特征在于,避免了為了以后使用存儲(chǔ)的返回地址和/或者使用錯(cuò)誤存儲(chǔ)的或者被改寫(xiě)的返回地址作為返回地址的改寫(xiě)。
2.根據(jù)權(quán)利要求1的方法,其特征在于,在分析安全信息的情況下實(shí)現(xiàn)了返回地址改寫(xiě)保護(hù)和返回地址使用保護(hù),安全信息在存儲(chǔ)返回地址的情況下產(chǎn)生并且被存儲(chǔ)在一個(gè)安全存儲(chǔ)器中。
3.根據(jù)權(quán)利要求2的方法,其特征在于,使用一個(gè)從執(zhí)行要監(jiān)控軟件程序的系統(tǒng)外部不能引用的存儲(chǔ)器作為安全存儲(chǔ)器。
4.根據(jù)權(quán)利要求3的方法,其特征在于,使用一個(gè)在執(zhí)行軟件程序的微處理器、微控制器或者信號(hào)處理器所提供的存儲(chǔ)器作為安全存儲(chǔ)器。
5.根據(jù)權(quán)利要求2至4中任一個(gè)的方法,其特征在于使用返回地址自身或者這個(gè)表示的數(shù)據(jù)或者描述特征的數(shù)據(jù)作為安全信息。
6.根據(jù)權(quán)利要求5的方法,其特征在于,在使用被存儲(chǔ)的數(shù)據(jù)作為返回地址前,對(duì)照所存儲(chǔ)的數(shù)據(jù)和所屬的安全信息,其中如果確定安全信息表示被存儲(chǔ)的數(shù)據(jù)或者描述被存儲(chǔ)數(shù)據(jù)的特征,那么僅允許使用數(shù)據(jù)作為返回地址,
7.根據(jù)權(quán)利要求5或者6的方法,其特征在于,如果在請(qǐng)求表示返回地址的數(shù)據(jù)時(shí),確定安全信息不表示在響應(yīng)請(qǐng)求中得到的數(shù)據(jù)或者描述這些數(shù)據(jù)特征,那么實(shí)現(xiàn)立即程序中斷和/或者復(fù)位執(zhí)行軟件程序的系統(tǒng)和/或者釋放一個(gè)警報(bào)和/或者清除與安全相關(guān)的數(shù)據(jù)。
8.根據(jù)權(quán)利要求2至4之一的方法,其特征在于,作為安全信息,存儲(chǔ)通知寫(xiě)保護(hù)的寫(xiě)保護(hù)識(shí)別碼。
9.根據(jù)權(quán)利要求8的方法,其特征在于,禁止改寫(xiě)存儲(chǔ)器區(qū)域,對(duì)于這個(gè)存儲(chǔ)器區(qū)域,寫(xiě)保護(hù)識(shí)別碼通知寫(xiě)保護(hù)。
10.根據(jù)權(quán)利要求8或者9的方法,其特征在于,如果在嘗試改寫(xiě)一個(gè)存儲(chǔ)器區(qū)域時(shí),確定所屬安全信息通知寫(xiě)保護(hù),那么實(shí)現(xiàn)立即程序中斷和/或者復(fù)位執(zhí)行軟件程序的系統(tǒng)和/或者釋放一個(gè)警報(bào)和/或者清除與安全相關(guān)的數(shù)據(jù)。
11.根據(jù)權(quán)利要求8至10之一的方法,其特征在于,在使用所存儲(chǔ)的數(shù)據(jù)作為返回地址前,查詢所屬的安全信息,其中如果確定安全信息通知寫(xiě)保護(hù),那么僅允許使用數(shù)據(jù)作為返回地址。
12.根據(jù)權(quán)利要求11的方法,其特征在于如果在請(qǐng)求表示返回地址的數(shù)據(jù)時(shí),確定所屬的安全信息不通知寫(xiě)保護(hù),那么實(shí)現(xiàn)立即程序中斷和/或者復(fù)位執(zhí)行軟件程序的系統(tǒng)和/或者釋放一個(gè)警報(bào)和/或者清除與安全相關(guān)的數(shù)據(jù)。
全文摘要
所說(shuō)明的方法涉及避免改寫(xiě)為以后使用而存儲(chǔ)的返回地址和/或使用錯(cuò)誤存儲(chǔ)的或者改寫(xiě)的返回地址作為返回地址。使用這種方法可以實(shí)現(xiàn)能夠進(jìn)一步排除對(duì)軟件程序的程序運(yùn)行的目標(biāo)特別明確的操作。
文檔編號(hào)G06F21/54GK1243580SQ98801856
公開(kāi)日2000年2月2日 申請(qǐng)日期1998年1月15日 優(yōu)先權(quán)日1997年1月15日
發(fā)明者M·巴爾迪施維勒, S·普法布 申請(qǐng)人:西門(mén)子公司