專利名稱:系統(tǒng)管理中斷的執(zhí)行方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種系統(tǒng)管理中斷的執(zhí)行方法,尤其涉及一種保護系統(tǒng)管理中斷的執(zhí)行方法。
背景技術(shù):
系統(tǒng)管理模式(System Management Mode, SMM)為現(xiàn)今一般電腦系統(tǒng)所用的中央處理單元(Central Processing Unit, CPU)的一種特別功能。當系統(tǒng)管理中斷(System Management hterrupt,SMI)被觸發(fā)到中央處理單元時,便會進入系統(tǒng)管理模式。在系統(tǒng)管理模式下,CPU將執(zhí)行基本輸入輸出系統(tǒng)(Basic Input Output System,BIOS)的系統(tǒng)管理中斷處理程序(SiOhandler routine,以下簡SMI處理程序),以由SMI處理程序來服務(wù)此系統(tǒng)管理中斷,再者,此SMI處理程序位于系統(tǒng)管理隨機存取存儲器(SystemManagement Random Access Memory, SMRAM)內(nèi)。近年來,BIOS大量使用軟件SMI (Software SMI,Sff SMI)以回避操作系統(tǒng) (Operating System, OS)來執(zhí)行一些重要程序。例如執(zhí)行BIOS的更新、致能或禁能先進組態(tài)與電源介面(Advanced Configuration and Powerlnterface,ACPI)、注入錯誤校正碼 (Error Correction Code,ECC)等。倘若軟件SMI使用不當將會破壞系統(tǒng)的穩(wěn)定性,甚至破壞BIOS,造成無法開機。由于軟件SMI的輸入輸出端口(10 port)容易被得知,因而讓惡毒軟件便可利用軟件SMI來破壞系統(tǒng)。例如,軟件SMI的輸入輸出端口地址通常儲存于固定先進組態(tài)與電源介面描述表(Fixed ACPI Description Table, FACP)中,惡毒軟件由FACP表格中便能夠獲得軟件SMI的輸入輸出端口地址?;蛘撸瑦憾拒浖材軌蛴赡蠘蚓闹圃焐套R別碼及裝置識別碼來獲得軟件SMI的輸入輸出端口地址。
發(fā)明內(nèi)容
本發(fā)明提供一種系統(tǒng)管理中斷的執(zhí)行方法,以避免惡毒軟件直接來使用系統(tǒng)管理中斷。本發(fā)明提出一種系統(tǒng)管理中斷的執(zhí)行方法。在執(zhí)行開機自我測試時,產(chǎn)生第一識別碼并儲存第一識別碼至存儲器的系統(tǒng)管理模式區(qū)塊。其中,該系統(tǒng)管理模式區(qū)塊在操作系統(tǒng)執(zhí)行之下被隱藏。在啟動操作系統(tǒng)的過程中,從系統(tǒng)管理模式區(qū)塊中讀取第一識別碼來作為第二識別碼,而儲存第二識別碼至存儲器的操作系統(tǒng)區(qū)塊。當操作系統(tǒng)欲使用系統(tǒng)管理中斷時,分別從系統(tǒng)管理模式區(qū)塊與操作系統(tǒng)區(qū)塊讀取出第一識別碼與第二識別碼。 比較第一識別碼與第二識別碼是否相同。若第一識別碼與第二識別碼相同,執(zhí)行系統(tǒng)管理中斷。在本發(fā)明的一實施例中,上述系統(tǒng)管理中斷的執(zhí)行方法還包括在產(chǎn)生第一識別碼的步驟之后,將第一識別碼加密為第一加密識別碼。并且,在將第一識別碼當作第二識別碼的步驟之后,將第二識別碼加密為第二加密識別碼。
在本發(fā)明的一實施例中,上述系統(tǒng)管理中斷的執(zhí)行方法中,當操作系統(tǒng)欲使用系統(tǒng)管理中斷時,分別從系統(tǒng)管理模式區(qū)塊與操作系統(tǒng)區(qū)塊讀取出該第一識別碼與該第二識別碼的步驟包括從操作系統(tǒng)區(qū)塊讀取第二加密識別碼,而解密為第二識別碼,并且,進入系統(tǒng)管理模式,從系統(tǒng)管理模式區(qū)塊讀取第一加密識別碼,而解密為第一識別碼。在本發(fā)明的一實施例中,上述系統(tǒng)管理中斷的執(zhí)行方法中,當操作系統(tǒng)欲使用系統(tǒng)管理中斷時,將第二識別碼的存儲器地址寫入至?xí)捍嫫髦械牟襟E后,還包括當中央處理單元接收到系統(tǒng)管理中斷時,進入系統(tǒng)管理模式,將暫存器的值寫入至系統(tǒng)管理模式區(qū)塊。 接著,執(zhí)行中斷處理程序,通過中斷處理程序從系統(tǒng)管理模式區(qū)塊中讀取第二識別碼的存儲器地址。并且,依據(jù)存儲器地址來取得第二識別碼。在本發(fā)明的一實施例中,第一識別碼為全域唯一識別碼(GlobalIyUnique Identifier, GUID)。在本發(fā)明的一實施例中,上述系統(tǒng)管理中斷的執(zhí)行方法中,可建立識別碼讀取程序,通過識別碼讀取程序從系統(tǒng)管理模式區(qū)塊讀取第一識別碼。并且還可建立識別碼傳送程序,通過識別碼傳送程序?qū)⒌谝蛔R別碼作為第二識別碼,而儲存第二識別碼至操作系統(tǒng)區(qū)塊。在本發(fā)明的一實施例中,上述通過識別碼讀取程序從系統(tǒng)管理模式區(qū)塊讀取第一識別碼的步驟包括在啟動操作系統(tǒng)的過程中,呼叫識別碼讀取程序以產(chǎn)生專用系統(tǒng)管理中斷。并且利用專用系統(tǒng)管理中斷從系統(tǒng)管理模式區(qū)塊中讀取第一識別碼。在本發(fā)明的一實施例中,上述儲存第二識別碼至操作系統(tǒng)區(qū)塊的步驟包括在啟動操作系統(tǒng)的過程中,呼叫識別碼傳送程序。并且,利用識別碼傳送程序?qū)⒌谝蛔R別碼傳送至操作系統(tǒng)區(qū)塊來作為第二識別碼?;谏鲜觯景l(fā)明在操作系統(tǒng)區(qū)塊與系統(tǒng)管理模式區(qū)塊分別儲存了一個識別碼。 當欲使用系統(tǒng)管理中斷時,比較兩個識別碼是否相同,以在兩個識別碼相同時才執(zhí)行系統(tǒng)管理中斷。據(jù)此,可避免惡毒軟件輕易地來使用系統(tǒng)管理中斷。為讓本發(fā)明的上述特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合所附圖式作詳細說明如下。
圖1是依照本發(fā)明第一實施例所示出的系統(tǒng)管理中斷的執(zhí)行方法的流程圖。圖2是依照本發(fā)明第二實施例所示出的系統(tǒng)管理中斷的執(zhí)行方法的流程圖。附圖標記S105 S120、S205 S255-步驟。
具體實施例方式第一實施例圖1是依照本發(fā)明第一實施例所示出的系統(tǒng)管理中斷的執(zhí)行方法的流程圖。請參照圖1,在步驟S105中,在執(zhí)行開機自我測試(Power On Self Test,POST)時,產(chǎn)生第一識別碼,并將第一識別碼儲存至存儲器的系統(tǒng)管理模式區(qū)塊。在本實施例中,存儲器包括操作系統(tǒng)區(qū)塊(讓操作系統(tǒng)所使用的區(qū)塊)、系統(tǒng)管理模式區(qū)塊以及給其他程序所使用的區(qū)塊。其中,系統(tǒng)管理模式區(qū)塊在操作系統(tǒng)執(zhí)行之下是被隱藏而看不到。舉例來說,系統(tǒng)管理模式區(qū)塊例如為系統(tǒng)管理隨機存取存儲器(System Management Random Access Memory, SMRAM), SMRAM只有在進入系統(tǒng)管理模式(System Management Mode, S匪)時看得到,也就是說在進入SMM模式時,方會將SMRAM映射至存儲器地址空間。接著,在步驟SllO中,在執(zhí)行操作系統(tǒng)的過程中,從系統(tǒng)管理模式區(qū)塊中讀取第一識別碼來作為第二識別碼,而將第二識別碼儲存至存儲器的操作系統(tǒng)區(qū)塊。例如,通過操作系統(tǒng)產(chǎn)生中斷編號為Flh的專用系統(tǒng)管理中斷(System Management Interrupt, SMI)以從系統(tǒng)管理模式區(qū)塊中取得第一識別碼。并且,將此第一識別碼作為第二識別碼而儲存至操作系統(tǒng)區(qū)塊中。另外,還可將此專用系統(tǒng)管理中斷設(shè)定在每次開機只能執(zhí)行一次。另外,為了提高安全性,在POST過程中,在產(chǎn)生第一識別碼之后還可將第一識別碼加密為第一加密識別碼,再將第一加密識別碼儲存至系統(tǒng)管理模式區(qū)塊中。而當在執(zhí)行操作系統(tǒng)的過程中,利用自訂SMI來取出第一加密識別碼并解密之后,將第一識別碼作為第二識別碼。此時,也可將第二識別碼加密為第二加密識別碼,再儲存至操作系統(tǒng)區(qū)塊。然后,在步驟S115中,當操作系統(tǒng)欲使用SMI時,分別從系統(tǒng)管理模式區(qū)塊與操作系統(tǒng)區(qū)塊讀取出第一識別碼與第二識別碼。當操作系統(tǒng)欲使用SMI時,操作系統(tǒng)將第二識別碼傳送給SMI處理程序(SMI Handler),并且SMI處理程序會從系統(tǒng)管理模式區(qū)塊取得第一識別碼。在此,儲存于操作系統(tǒng)區(qū)塊為第二加密識別碼,則操作系統(tǒng)會先將第二加密識別碼解密再傳送給SMI處理程序。最后,在步驟S120中,若第一識別碼與第二識別碼相同,執(zhí)行系統(tǒng)管理中斷。由 SMI處理程序來比較第一識別碼與第二識別碼是否相同。在兩者吻合的狀況之下,才會執(zhí)行操作系統(tǒng)所要求的SMI。據(jù)此,上述實施例是利用第一識別碼來當作是執(zhí)行SMI的金鑰,也就是在系統(tǒng)管理模式區(qū)塊與操作系統(tǒng)區(qū)塊中各自儲存一個識別碼,當操作系統(tǒng)欲使用SMI時,若比較兩個識別碼相同,才允許執(zhí)行SMI。由于要經(jīng)過操作系統(tǒng)來讀取第二識別碼并傳送至SMI處理程序,因此只有知道第二識別碼的應(yīng)用程序方能夠有效地執(zhí)行SMI。如此一來,惡毒軟件便無法不經(jīng)由操作系統(tǒng)而直接使用SMI。第二實施例為了避免每次開機時所產(chǎn)生的識別碼重復(fù),在本實施例中,利用全域唯一識別碼 (Globally Unique Identifier,⑶ID)來作為識別碼。另外,在此所使用的SMI機制為軟件 SMI (Software SMI, Sff SMI)圖2是依照本發(fā)明第二實施例所示出的系統(tǒng)管理中斷的執(zhí)行方法的流程圖。請參照圖2,在步驟S205中,基本輸入輸出系統(tǒng)(Basic Input OutputSystem, BIOS)于POST過程中產(chǎn)生一個⑶ID_1。接著,在步驟S210中,將⑶ID_1加密為⑶ID_1E。 之后,在步驟S215中,將⑶ID_1E儲存至存儲器的系統(tǒng)管理模式區(qū)塊(例如SMRAM)。當BIOS執(zhí)行完P(guān)OST之后,開始啟動操作系統(tǒng)。在啟動操作系統(tǒng)的過程中(操作系統(tǒng)尚未啟動完成),如步驟S220所示,產(chǎn)生專用SW SMI,以從系統(tǒng)管理模式區(qū)塊中讀取 ⑶ID_1E,并將其解密為⑶ID_1。舉例來說,建立識別碼讀取程序,例如AML (ACPI Machine Language)程序的程序 (method)_INI,以通過識別碼讀取程序從系統(tǒng)管理模式區(qū)塊讀?、荌D_1。在啟動操作系統(tǒng)的過程中,呼叫(call)識別碼讀取程序,倘若為第一次呼叫識別碼讀取程序,則產(chǎn)生一專用SW SMI (例如,中斷編號為Flh),利用此專用SW SMI從系統(tǒng)管理模式區(qū)塊中讀取第一識別碼。在此,專用SW SMI只執(zhí)行一次,以避免被惡毒軟件來利用。之后,在步驟S225中,將⑶ID_1當作⑶ID_2,并將⑶ID_2加密成為⑶ID_2E而儲存至操作系統(tǒng)區(qū)塊。具體而言,可建立一識別碼傳送程序,例如AML程序的程序(method)_ SffSK,以通過識別碼傳送程序?qū)ⅱ荌D_1作為⑶ID_2。也就是在啟動操作系統(tǒng)的過程中,呼叫識別碼傳送程序,利用識別碼傳送程序?qū)ⅱ荌D_1傳送至操作系統(tǒng)區(qū)塊來作為⑶ID_2,并且將⑶ID_2加密為⑶ID_2E。此時,將⑶ID_2E儲存至操作系統(tǒng)區(qū)塊之后,便可將⑶ID_2 清除。在操作系統(tǒng)啟動完成之后,當操作系統(tǒng)欲使用SW SMI時,如步驟S230所示,操作系統(tǒng)取出⑶ID_2E而解密為⑶ID_2,并將⑶ID_2的存儲器地址寫入至中央處理單元的暫存器(例如EAX)中,然后觸發(fā)SW SMI。例如,使用SMI命令端口(Command Port)B2h。當中央處理單元接收到SW SMI時,如步驟S235所示,進入SMM模式,并將暫存器的值(例如CPU Context,當中包括EAX)寫入至系統(tǒng)管理模式區(qū)塊。也就是將⑶ID_2的存儲器地址寫入至系統(tǒng)管理模式區(qū)塊。這是因為在進入SMM模式之后,中央處理單元會將現(xiàn)有的狀態(tài)儲存至系統(tǒng)管理模式區(qū)塊Hf^nSSMRAM)里。接著,在步驟S240中,執(zhí)行SMI處理程序時,依據(jù)系統(tǒng)管理模式區(qū)塊中儲存的 ⑶ID_2的存儲器地址去讀?、荌D_2。并且,從系統(tǒng)管理模式區(qū)塊中取得⑶ID_1E,并將 GUID_1E 解密為 GUID_1。之后,在步驟S245中,SMI處理程序會比較⑶ID_1與⑶ID_2是否相同。倘若兩者相同,如步驟S250所示,執(zhí)行SW SMI0倘若兩者不相同,如步驟S255所示,退出SMM模式。 據(jù)此,可保護SMI不被惡毒軟件所使用。綜上所述,本發(fā)明在操作系統(tǒng)區(qū)塊與系統(tǒng)管理模式區(qū)塊分別儲存了一個識別碼。 當欲使用系統(tǒng)管理中斷時,比較兩個識別碼是否相同,以在兩個識別碼相同時才執(zhí)行系統(tǒng)管理中斷。在操作系統(tǒng)之下使用的系統(tǒng)管理中斷都會受到保護,應(yīng)用程序只能通過操作系統(tǒng)來下達系統(tǒng)管理中斷。據(jù)此,可避免惡毒軟件直接來使用系統(tǒng)管理中斷。并且,在每次開機時都會動態(tài)產(chǎn)生一識別碼,減少被惡毒軟件破解的機會。雖然本發(fā)明已以實施例揭示如上,但并非用以限定本發(fā)明,任何所屬技術(shù)領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當可作些許的更動與潤飾,因此,本發(fā)明的保護范圍當以權(quán)利要求限定的范圍為準。
權(quán)利要求
1.一種系統(tǒng)管理中斷的執(zhí)行方法,其特征在于,包括在執(zhí)行開機自我測試時,產(chǎn)生第一識別碼并儲存該第一識別碼至存儲器的系統(tǒng)管理模式區(qū)塊,其中該系統(tǒng)管理模式區(qū)塊在操作系統(tǒng)執(zhí)行之下被隱藏;在啟動該操作系統(tǒng)的過程中,從該系統(tǒng)管理模式區(qū)塊中讀取該第一識別碼來作為第二識別碼,而儲存該第二識別碼至該存儲器的操作系統(tǒng)區(qū)塊;當該操作系統(tǒng)欲使用系統(tǒng)管理中斷時,分別從該系統(tǒng)管理模式區(qū)塊與該操作系統(tǒng)區(qū)塊讀取出該第一識別碼與該第二識別碼;比較該第一識別碼與該第二識別碼是否相同;以及若該第一識別碼與該第二識別碼相同,執(zhí)行該系統(tǒng)管理中斷。
2.根據(jù)權(quán)利要求1所述的系統(tǒng)管理中斷的執(zhí)行方法,其特征在于,還包括 在產(chǎn)生該第一識別碼的步驟之后,將該第一識別碼加密為第一加密識別碼;以及在將該第一識別碼當作該第二識別碼的步驟之后,將該第二識別碼加密為第二加密識別碼。
3.根據(jù)權(quán)利要求2所述的系統(tǒng)管理中斷的執(zhí)行方法,其特征在于,其中當該操作系統(tǒng)欲使用該系統(tǒng)管理中斷時,分別從該系統(tǒng)管理模式區(qū)塊與該操作系統(tǒng)區(qū)塊讀取出該第一識別碼與該第二識別碼的步驟包括從該操作系統(tǒng)區(qū)塊讀取該第二加密識別碼,而解密為該第二識別碼;以及進入系統(tǒng)管理模式,從該系統(tǒng)管理模式區(qū)塊讀取該第一加密識別碼,而解密為該第一識別碼。
4.根據(jù)權(quán)利要求1所述的系統(tǒng)管理中斷的執(zhí)行方法,其特征在于,還包括當該操作系統(tǒng)欲使用該系統(tǒng)管理中斷時,將該第二識別碼的存儲器地址寫入至?xí)捍嫫髦小?br>
5.根據(jù)權(quán)利要求4所述的系統(tǒng)管理中斷的執(zhí)行方法,其特征在于,其中在將該第二識別碼的該存儲器地址寫入至該暫存器中的步驟之后,還包括當中央處理單元接收到該系統(tǒng)管理中斷時,進入系統(tǒng)管理模式,將該暫存器的值寫入至該系統(tǒng)管理模式區(qū)塊;執(zhí)行中斷處理程序,通過該中斷處理程序從該系統(tǒng)管理模式區(qū)塊中讀取該第二識別碼的存儲器地址;以及依據(jù)該存儲器地址來取得該第二識別碼。
6.根據(jù)權(quán)利要求1所述的系統(tǒng)管理中斷的執(zhí)行方法,其特征在于,其中該第一識別碼為全域唯一識別碼。
7.根據(jù)權(quán)利要求1所述的系統(tǒng)管理中斷的執(zhí)行方法,其特征在于,還包括建立識別碼讀取程序,通過該識別碼讀取程序從該系統(tǒng)管理模式區(qū)塊讀取該第一識別碼;以及建立識別碼傳送程序,通過該識別碼傳送程序?qū)⒃摰谝蛔R別碼作為該第二識別碼,而儲存該第二識別碼至該操作系統(tǒng)區(qū)塊。
8.根據(jù)權(quán)利要求7所述的系統(tǒng)管理中斷的執(zhí)行方法,其特征在于,其中通過該識別碼讀取程序從該系統(tǒng)管理模式區(qū)塊讀取該第一識別碼的步驟包括在啟動該操作系統(tǒng)的過程中,呼叫該識別碼讀取程序以產(chǎn)生專用系統(tǒng)管理中斷;以及利用該專用系統(tǒng)管理中斷從該系統(tǒng)管理模式區(qū)塊中讀取該第一識別碼。
9.根據(jù)權(quán)利要求7所述的系統(tǒng)管理中斷的執(zhí)行方法,其特征在于,其中儲存該第二識別碼至該操作系統(tǒng)區(qū)塊的步驟包括在啟動該操作系統(tǒng)的過程中,呼叫該識別碼傳送程序;以及利用該識別碼傳送程序?qū)⒃摰谝蛔R別碼傳送至該操作系統(tǒng)區(qū)塊來作為該第二識別碼。
全文摘要
本發(fā)明提供一種系統(tǒng)管理中斷的執(zhí)行方法。在執(zhí)行開機自我測試時,產(chǎn)生第一識別碼并儲存第一識別碼至存儲器的系統(tǒng)管理模式區(qū)塊。在啟動操作系統(tǒng)的過程中,從系統(tǒng)管理模式區(qū)塊中讀取第一識別碼來作為第二識別碼,而儲存第二識別碼至存儲器的操作系統(tǒng)區(qū)塊。當操作系統(tǒng)欲使用系統(tǒng)管理中斷時,分別從系統(tǒng)管理模式區(qū)塊與操作系統(tǒng)區(qū)塊讀取出第一識別碼與第二識別碼。比較第一識別碼與第二識別碼是否相同。若第一識別碼與第二識別碼相同,執(zhí)行系統(tǒng)管理中斷。
文檔編號G06F21/22GK102467644SQ20101055169
公開日2012年5月23日 申請日期2010年11月17日 優(yōu)先權(quán)日2010年11月17日
發(fā)明者盧盈志, 王郁蕙 申請人:英業(yè)達股份有限公司