欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

執(zhí)行程序的信息處理設(shè)備、計(jì)算機(jī)可讀介質(zhì)和程序控制方法

文檔序號:6564100閱讀:164來源:國知局
專利名稱:執(zhí)行程序的信息處理設(shè)備、計(jì)算機(jī)可讀介質(zhì)和程序控制方法
技術(shù)領(lǐng)域
本發(fā)明涉及響應(yīng)于主程序的調(diào)用而執(zhí)行預(yù)定處理,并將處理結(jié)果返回主程序的子程序。
背景技術(shù)
通常有一種公知的子程序,諸如插件程序,其響應(yīng)于主程序的調(diào)用執(zhí)行預(yù)定處理,并將處理結(jié)果返回主程序。
從子程序返回主程序的處理結(jié)果包括這種如果在未授權(quán)方式下使用可能引發(fā)問題的數(shù)據(jù),諸如與使用限制有關(guān)的訪問權(quán)信息,未公開的信息或解密密鑰。
當(dāng)這種具有高度機(jī)密性的數(shù)據(jù)從子程序輸送到主程序時(shí),存在一種已知的會使主程序遭受電子欺騙的攻擊。作為這樣一種攻擊,存在偽造主程序本身的攻擊,或者侵入主程序與子程序之間從而吸取(sniff)或者偽造它們之間的數(shù)據(jù)交換。
日本專利未審公開No.2005-166051披露了一種通過API鉤子引擎防止對API(應(yīng)用程序接口)的未授權(quán)訪問的技術(shù),其中該API鉤子引擎通過API將調(diào)用鉤住,并根據(jù)所調(diào)用的API預(yù)計(jì)的處理或者API所執(zhí)行的處理種類確定繼續(xù)還是終止通過該API的處理。
日本專利未審公開No.2005-166051中所描述的API鉤子引擎根據(jù)所調(diào)用的API的種類來判斷是繼續(xù)還是終止所調(diào)用API的處理。不過,如果所調(diào)用的API的種類是允許的,則API鉤子引擎使得API的處理繼續(xù)。從而,如果受到電子欺騙的主程序調(diào)用一個(gè)被允許的API,則API鉤子引擎允許該調(diào)用。從而,根據(jù)日本專利未審公開No1.2005-166051中所述的技術(shù),機(jī)密信息有可能通過允許種類的API流出到被電子欺騙的主程序。
本發(fā)明意在針對響應(yīng)于主調(diào)程序的調(diào)用執(zhí)行預(yù)定處理并將處理結(jié)果返回主調(diào)程序的子程序,加強(qiáng)處理結(jié)果的安全性。

發(fā)明內(nèi)容
根據(jù)本發(fā)明一個(gè)方面,提供一種信息處理設(shè)備,包括子進(jìn)程部分,執(zhí)行包括響應(yīng)于主調(diào)程序的調(diào)用而執(zhí)行的處理和將處理結(jié)果返回主調(diào)程序的返回處理的子進(jìn)程;地址獲取處理部分,其獲取子進(jìn)程部分執(zhí)行子進(jìn)程時(shí)訪問的訪問目的地址,訪問目的地址被分配給主調(diào)程序的一個(gè)存儲區(qū);判斷處理部分,其根據(jù)所獲取的存儲信息判斷主調(diào)程序是否合法;以及終止處理部分,如果判斷結(jié)果為主調(diào)程序不合法,則終止子進(jìn)程的執(zhí)行。
根據(jù)本發(fā)明另一方面,判斷處理部分根據(jù)所獲得的訪問目的地址獲取有關(guān)主調(diào)程序所使用的存儲區(qū)的存儲信息,并根據(jù)存儲信息判斷主調(diào)程序是否為合法的主調(diào)程序。
根據(jù)本發(fā)明另一方面,判斷處理部分根據(jù)所獲得的訪問目的地址獲得有關(guān)主調(diào)程序的屬性信息,并通過將該屬性信息與關(guān)于合法主調(diào)程序的屬性信息進(jìn)行比較,判斷主調(diào)程序是否為合法的主調(diào)程序。
此外,根據(jù)本發(fā)明另一方面,判斷處理部分通過比較所獲得的訪問目的地址與合法主調(diào)程序的最初訪問目的地址,判斷主調(diào)程序是否為合法的主調(diào)程序。在此情形中,通過查閱登記了一組合法主調(diào)程序的原始訪問目的地址的地址列表,判斷主調(diào)程序是否為合法的主調(diào)程序。
此外,根據(jù)本發(fā)明另一方面,判斷處理部分根據(jù)所獲得的訪問目的地址來獲得保存主調(diào)程序的存儲區(qū)的起始地址,比較所獲得的起始地址與預(yù)先登記的合法主調(diào)程序的起始地址,在存在差別的情況下確定差別,根據(jù)所述差別校正所獲得的訪問目的地址,并根據(jù)經(jīng)過校正的訪問目的地址判斷主調(diào)程序是否為合法的主調(diào)程序。
根據(jù)本發(fā)明另一方面,判斷處理部分從存儲器獲取存儲在預(yù)定地址范圍內(nèi)待判斷的數(shù)據(jù),該預(yù)定地址范圍位為以所獲得的訪問目的地址作為參考指定的,通過將待判斷的數(shù)據(jù)與以合法主調(diào)程序的原始訪問目的地址作為參考所指定的預(yù)定地址范圍內(nèi)所存儲的數(shù)據(jù)進(jìn)行比較,判斷主調(diào)程序是否為合法的主調(diào)程序。
此外,根據(jù)本發(fā)明另一方面,判斷處理部分從存儲器獲得存儲在預(yù)定地址范圍內(nèi)的待判斷的數(shù)據(jù),所述預(yù)定范圍是以所獲得的訪問目的地址為參考指定出的,計(jì)算該數(shù)據(jù)的哈希(hash)值,并通過將待判斷的數(shù)據(jù)與以合法主調(diào)程序的原始訪問目的地址為參考所指定的預(yù)定地址范圍內(nèi)所存儲的數(shù)據(jù)確定的哈希值進(jìn)行比較,判斷主調(diào)程序是否為合法的主調(diào)程序。
此外,根據(jù)本發(fā)明另一方面,判斷處理部分根據(jù)所獲得的訪問目的地址獲得存儲主調(diào)程序的存儲區(qū)的起始地址,比較所獲得的起始地址與預(yù)先登記的合法主調(diào)程序的起始地址,如果存在差別則確定差別,根據(jù)所述差別校正待判斷的數(shù)據(jù),并通過比較經(jīng)過校正的待判斷數(shù)據(jù)與所存儲的數(shù)據(jù),判斷主調(diào)程序是否為合法的主調(diào)程序。
此外,根據(jù)本發(fā)明另一方面,訪問目的地址為在子進(jìn)程的一系列處理結(jié)束之后,子進(jìn)程部分將要訪問的返回目的地址。
此外,根據(jù)本發(fā)明另一方面,訪問目的地址為主調(diào)程序調(diào)用子程序時(shí)所述主調(diào)程序發(fā)出的參數(shù)所指示的地址。該地址可以為主調(diào)程序指定為回調(diào)目的的回調(diào)地址。
根據(jù)本發(fā)明一個(gè)方面,對于響應(yīng)于主調(diào)程序的調(diào)用而執(zhí)行處理并將處理結(jié)果返回主調(diào)程序的程序,可加強(qiáng)處理結(jié)果的安全性。


將基于下面的附圖詳細(xì)描述本發(fā)明的實(shí)施例,其中圖1表示一個(gè)實(shí)施例及第一到第三變型例中信息處理設(shè)備的功能框圖;圖2為該信息處理設(shè)備所具有的硬盤的原理圖;圖3為在主存儲器中構(gòu)成的地址空間的示意圖;圖4所示的流程圖表示在所述實(shí)施例中,當(dāng)主調(diào)程序調(diào)用子程序時(shí)所執(zhí)行的子程序的過程;
圖5所示的流程圖表示在第一變型例中,當(dāng)主調(diào)程序調(diào)用子程序時(shí)子程序的執(zhí)行過程;圖6所示的流程圖表示當(dāng)子程序檢驗(yàn)是否已經(jīng)執(zhí)行重新分配時(shí)子程序的執(zhí)行過程;以及圖7所示的流程圖表示在第二變型例中,當(dāng)主調(diào)程序調(diào)用子程序時(shí)子程序的執(zhí)行過程。
具體實(shí)施例方式
下面將參照附圖描述用于實(shí)施本發(fā)明的優(yōu)選實(shí)施例(下面稱之為實(shí)施例)。
圖1表示根據(jù)該示例性實(shí)施例的信息處理設(shè)備的功能框圖。在圖1中,CPU10為對整個(gè)信息處理設(shè)備進(jìn)行控制的中央處理部件。硬盤20為輔助存儲裝置,其保存在信息處理設(shè)備上運(yùn)行的程序。主存儲器30為主存儲裝置,當(dāng)某一程序在信息處理設(shè)備上執(zhí)行時(shí)其臨時(shí)保存該程序。
當(dāng)某一程序在按如上所述配置的信息處理設(shè)備上執(zhí)行時(shí),CPU10首先從硬盤20獲得指定的程序,并將其加載到主存儲器30中。此外,CPU10從主存儲器30取出程序中所述的處理命令,并對命令的內(nèi)容進(jìn)行解碼。從而,信息處理設(shè)備能夠執(zhí)行該程序。
在本實(shí)施例中,至少主程序22和子程序24被保存在硬盤20中,如圖2中所示。
主程序22為在信息處理設(shè)備上執(zhí)行特定處理的主軟件,例如,為應(yīng)用程序。例如,字處理軟件,電子制表軟件,文檔瀏覽軟件,圖像編輯軟件,數(shù)據(jù)庫軟件,演示文稿軟件,游戲軟件,網(wǎng)絡(luò)瀏覽器,電子郵件軟件等均可作為該應(yīng)用程序。公司中使用的會計(jì)軟件,人事管理軟件和存貨管理軟件也為各種應(yīng)用程序。
子程序24是獨(dú)立于主程序22的軟件,并且作為允許第三方等隨后將其自己的功能增加到主程序22中而不改變主程序22的輔助程序。子程序24由主程序22調(diào)用,執(zhí)行預(yù)定的處理并將處理結(jié)果返回主程序22。下面將子程序24根據(jù)主程序22的調(diào)用所執(zhí)行的一系列處理稱作“子進(jìn)程”。將調(diào)用該子程序的主程序稱作“主調(diào)程序”,將該子程序被稱作“被調(diào)程序”。
子程序24為例如所謂的插件程序。當(dāng)主程序22在Windows(注冊商標(biāo))、一個(gè)基本的OS(操作系統(tǒng))上運(yùn)行時(shí),常常由DLL(動態(tài)鏈接庫)來實(shí)現(xiàn)子程序24。
圖3示意地表示子程序24在被主程序22調(diào)用時(shí)主存儲器30的地址空間。如圖3中所示,主存儲器30上構(gòu)成的地址空間被根據(jù)用途分成某些區(qū)域。在本實(shí)施例中,構(gòu)成用于存儲主程序22的程序數(shù)據(jù)的主程序區(qū)M10,用于存儲子程序24的程序數(shù)據(jù)的子程序區(qū)M12和用于存儲多個(gè)變量數(shù)據(jù)的堆棧區(qū)M14。在堆棧區(qū)M14中,存儲在本實(shí)施例中具有重要作用的“返回目的地址”等。返回目的地址為子程序24執(zhí)行預(yù)定處理之后操作返回主程序22時(shí),執(zhí)行控制從子程序24移出的地址。該地址是分配給主程序區(qū)M10的地址。
用于開發(fā)諸如插件程序的子程序的開發(fā)工具(SDK軟件開發(fā)工具包),常常是公開的,從而可由第三方自由地向主程序添加功能。常常是,諸如插件程序的子程序可由除相應(yīng)主程序之外的程序調(diào)用。在此情形中,可相對較易于創(chuàng)建用于監(jiān)測或改變主程序與子程序之間交換的數(shù)據(jù)的模塊。盡管諸如插件程序的高度靈活的子程序是非常有用的,不過,當(dāng)子程序?yàn)樘峁┌踩δ艿哪K時(shí),有可能會引發(fā)安全問題。
例如,假設(shè)子程序?yàn)閮H當(dāng)子程序被授權(quán)用戶調(diào)用時(shí)才提供對加密內(nèi)容進(jìn)行解密以便能夠使用該內(nèi)容的功能。在有些情形中,這種子程序響應(yīng)于主調(diào)程序的調(diào)用而執(zhí)行對用戶權(quán)利的驗(yàn)證處理,并且如果驗(yàn)證成功,則將用于對內(nèi)容進(jìn)行解密的密鑰發(fā)送給主調(diào)程序?;蛘?,存在這樣的情形即,子程序24將關(guān)于加密內(nèi)容的權(quán)利信息,諸如“僅瀏覽”,“可編輯”和“可打印”,發(fā)送給主調(diào)程序,主調(diào)程序基于得到的權(quán)利信息對內(nèi)容進(jìn)行安全控制。
在由子程序提供上述安全功能的情況下,有可能執(zhí)行未經(jīng)授權(quán)的訪問,諸如未經(jīng)授權(quán)地獲取用于對加密內(nèi)容進(jìn)行解密的密鑰,或者如上所述利用工具監(jiān)測或改變主程序與子程序之間交換的數(shù)據(jù)、而纂改關(guān)于內(nèi)容的權(quán)利信息。
已知有一種關(guān)于驗(yàn)證功能的技術(shù),其中,為了防止發(fā)生這種未經(jīng)授權(quán)的訪問,主程序通過確認(rèn)數(shù)字簽名等來驗(yàn)證其調(diào)用的子程序,并且僅當(dāng)驗(yàn)證成功時(shí)才使所調(diào)用的子程序繼續(xù)處理。
不過,即使主程序提供這種驗(yàn)證功能,也不可能保護(hù)主程序與子程序之間交換的數(shù)據(jù),這是因?yàn)樽映绦驘o法驗(yàn)證主程序。
因此,在本實(shí)施例中,通過確認(rèn)子程序24是否由正確的主程序22直接調(diào)用來保護(hù)主程序22與子程序24之間所交換的數(shù)據(jù)。
現(xiàn)在,將參照圖4中所示的流程圖針對主調(diào)程序調(diào)用子程序24時(shí)子程序24根據(jù)本實(shí)施例執(zhí)行的過程進(jìn)行描述。
首先,當(dāng)從主調(diào)程序接收到調(diào)用時(shí),子程序24從主存儲器30的堆棧區(qū)M14獲得返回目的地址(S100)。
表示返回目的地址存儲位置的存儲地址,由作為主程序22執(zhí)行環(huán)境的OS或者用于編譯主程序22的編譯器的技術(shù)規(guī)范預(yù)先指定。例如,在子程序24被調(diào)用時(shí),存儲地址為堆棧區(qū)M14的頂部地址。根據(jù)計(jì)算機(jī)體系結(jié)構(gòu),返回目的地址可以不保存在堆棧區(qū)M14中,而保存在特定寄存器中。
當(dāng)主程序22調(diào)用子程序24時(shí),將表示返回目的地址的數(shù)據(jù)存儲在堆棧區(qū)M14的頂部地址處。從而,子程序24可通過訪問預(yù)定的地址獲得返回目的地址。
在獲得返回目的地址之后,子程序24獲得關(guān)于包括返回目的地址的存儲區(qū)的存儲信息(下面稱作“主調(diào)程序存儲區(qū)”)(S102)。關(guān)于主調(diào)程序存儲區(qū)的就緒狀態(tài)或主調(diào)程序存儲區(qū)的頂部地址的信息可作為存儲信息。例如,在Windows(注冊商標(biāo))的情形中,可使用VirtualQuery函數(shù)獲得存儲信息。更具體而言,通過將返回目的地址,保存待獲取的存儲信息的緩沖區(qū)的起始地址,以及緩沖區(qū)的數(shù)據(jù)尺寸示出作為VirtualQuery函數(shù)的參數(shù),并訪問OS,子程序24可從OS獲得包括返回目的地址在內(nèi)的存儲區(qū)的存儲信息。
然后,子程序24通過查閱所獲得的存儲信息和為存儲區(qū)設(shè)定的標(biāo)志來判斷是否主調(diào)程序存儲區(qū)是可執(zhí)行的(S104)。作為判斷結(jié)果,如果判斷結(jié)果為所述的標(biāo)志表示不可執(zhí)行(步驟S104處判斷結(jié)果為否“N”),則子程序24判斷其有可能被偽裝成合法主程序的虛假程序調(diào)用,并終止子進(jìn)程(S106)。
另一方面,如果判斷結(jié)果為所述的標(biāo)志表示可執(zhí)行(步驟S104處判斷結(jié)果為是“Y”),則子程序24通過參考所獲得的存儲信息來獲得主調(diào)程序存儲區(qū)的起始地址(S108),然后基于起始地址獲得有關(guān)主調(diào)程序的屬性信息(S110)。接下來,子程序24根據(jù)所獲得的屬性信息驗(yàn)證主調(diào)程序是否為合法的主程序22(S112)。例如,可通過核實(shí)子程序預(yù)先具有的與合法主程序22相應(yīng)的屬性信息,與從主調(diào)程序獲得的屬性信息彼此是否一致來進(jìn)行驗(yàn)證。
屬性信息為例如主調(diào)程序的文件名。在Windows(注冊商標(biāo))的情形中,可使用GetModuleFileName函數(shù)獲得該文件名。更具體而言,子程序24通過以起始地址等作為參數(shù)調(diào)用GetModuleFileName函數(shù)來獲得主調(diào)程序的文件名。子程序24也可以通過調(diào)用GetModuleFileName函數(shù)獲得指向存儲主調(diào)程序的位置的文件路徑。因而,子程序24可根據(jù)文件路徑訪問文件,并識別出文件的創(chuàng)建者、創(chuàng)建時(shí)間以及文件大小。子程序24還可以使用這些信息項(xiàng)作為屬性信息。如果合法的主程序24被具有相同文件名和相同路徑的虛假程序取代,則例如僅利用基于文件名的驗(yàn)證方法不能執(zhí)行正確的驗(yàn)證。不過,如果利用如上所述除文件名之外的屬性信息來執(zhí)行驗(yàn)證,則即使發(fā)生了這種惡意取代,也會增大實(shí)現(xiàn)正確驗(yàn)證的可能性。
在數(shù)字簽名附加到主程序22的情形中,子程序24可通過訪問與主調(diào)程序相應(yīng)的文件,檢查數(shù)字簽名的存在或簽名的正確性,來檢查主調(diào)程序是否為合法的主程序22,這是因?yàn)槿绻髡{(diào)程序是合法的主程序22,則其附加有數(shù)字簽名。
作為驗(yàn)證的結(jié)果,如果主調(diào)程序的驗(yàn)證失敗(步驟S114處判斷結(jié)果為否“N”),則子程序24終止子進(jìn)程(S106)。
另一方面,如果主調(diào)程序的驗(yàn)證成功(步驟S114處判斷結(jié)果為是“Y”),則子程序24繼續(xù)子進(jìn)程(S116)。
如上所述,子程序24在響應(yīng)于調(diào)用而執(zhí)行子進(jìn)程之前,執(zhí)行有關(guān)主調(diào)程序是否為合法主程序22的驗(yàn)證,并且只有當(dāng)驗(yàn)證成功時(shí)才執(zhí)行子進(jìn)程。
從而,根據(jù)本示例性實(shí)施例,可防止發(fā)生未經(jīng)授權(quán)的訪問,諸如未經(jīng)授權(quán)地獲取用于對加密內(nèi)容進(jìn)行解密的密鑰,或者通過使用用于監(jiān)測或改變主程序22與子程序24之間交換的數(shù)據(jù)而篡改有關(guān)內(nèi)容權(quán)利的信息。
此外,根據(jù)本實(shí)施例,如果虛假程序而非合法的主程序22調(diào)用了子程序24,則子進(jìn)程不繼續(xù)。從而,可防止未經(jīng)授權(quán)地調(diào)用子程序24,以及以未經(jīng)授權(quán)的方式從子程序24獲得數(shù)據(jù)。
現(xiàn)在,將描述該實(shí)施例的第一變型例。
在第一變型例中,通過核實(shí)返回目的地址是否為與合法主程序22相應(yīng)的返回目的地址來執(zhí)行關(guān)于主調(diào)程序是否為合法主程序22的驗(yàn)證。
現(xiàn)在,將參照圖5中的流程圖,對于第一變型例中主調(diào)程序調(diào)用子程序24時(shí)子程序24的執(zhí)行過程進(jìn)行描述。在圖5中,由于步驟S100到S106與圖4中相同,將省略對其的描述,將從步驟S120開始描述。
如果判斷結(jié)果為用于主調(diào)程序存儲器的標(biāo)志表示可以執(zhí)行(步驟S104處判斷結(jié)果為是“Y”),則子程序24查閱登記了與合法主程序22相應(yīng)的返回目的地址的地址列表,核實(shí)所獲得的返回目的地址是否被登記在地址列表中(S120)。
該地址列表可以在子程序的開發(fā)階段被創(chuàng)建。更具體而言,執(zhí)行合法的主程序22來調(diào)用子程序22,并且監(jiān)視保存在堆棧區(qū)M14中的返回目的地址。從而,當(dāng)合法的主程序22被執(zhí)行時(shí),保存在堆棧區(qū)M14中的返回目的地址是已知的。因而,通過創(chuàng)建登記了返回目的地址的列表,可產(chǎn)生上述地址列表。由于合法的主程序22可多次調(diào)用子程序24,同時(shí)執(zhí)行一系列處理,登記在地址列表中的返回目的地址的數(shù)量不必局限于一個(gè)。
作為地址列表的核實(shí)結(jié)果,如果判斷所獲得的返回目的地址沒有登記在地址列表中(步驟S122處判斷結(jié)果為否“N”),則子程序24確定其沒有被合法的主程序22調(diào)用,并終止子進(jìn)程(S106)。
另一方面,如果判斷所獲得的返回目的地址登記在地址列表中(步驟S122處判斷結(jié)果為是“Y”),則子程序24確定其正被合法的主程序22調(diào)用,并繼續(xù)子進(jìn)程(S124)。
如上所述,在第一變型例中,基于主調(diào)程序的返回目的地址來判斷主調(diào)程序是否為合法的主程序22,之后,僅在主調(diào)程序?yàn)楹戏ǖ闹鞒绦?2時(shí)子程序24才繼續(xù)子進(jìn)程。
從而,與上述實(shí)施例相同,根據(jù)第一變型例,可防止通過未經(jīng)授權(quán)地調(diào)用子程序24,以一種未經(jīng)授權(quán)的方式從子程序24獲得數(shù)據(jù)。
在上面的描述中,沒有考慮在主程序22的程序數(shù)據(jù)的加載位置處,重新分配(重新定位)主程序區(qū)M10的地址的情形。不過,可根據(jù)OS的技術(shù)規(guī)范執(zhí)行重新分配。在此情形中,即使被合法的主程序22調(diào)用,子程序24也有可能不能判斷該主調(diào)程序是合法的主程序22。
從而,子程序24可以在使用地址列表執(zhí)行核實(shí)之前核實(shí)是否進(jìn)行了重新分配。在此情形中,如果已經(jīng)進(jìn)行了重新分配,則子程序24校正所獲得的返回目的地址。
現(xiàn)在,將參照圖6中所示的流程圖,針對在使用地址列表進(jìn)行核實(shí)之前子程序24核實(shí)是否已經(jīng)進(jìn)行重新分配時(shí)所執(zhí)行的過程進(jìn)行描述。
首先,子程序24按照與上述實(shí)施例相同的方法獲得主調(diào)程序存儲區(qū)的起始地址(S200)。然后,子程序24比較預(yù)先保存的合法主程序22的起始地址與所獲得的起始地址,判斷它們是否彼此一致(S202)。
結(jié)果,如果判斷它們彼此一致(步驟S202處判斷結(jié)果為是“Y”),則子程序24確定主調(diào)程序的地址沒有進(jìn)行重新分配,并利用所獲得的返回目的地址執(zhí)行圖5中所示的處理。
另一方面,如果判斷返回目的地址彼此不一致(步驟S202處判斷結(jié)果為否“N”),則子程序24確定主調(diào)程序的地址已經(jīng)進(jìn)行了重新分配,并計(jì)算所獲得起始地址與所登記的起始地址之間的差值(S204)。然后,子程序24基于這一差值校正所獲得的返回目的地址(S206)。之后,子程序24使用經(jīng)過校正的返回目的地址執(zhí)行圖5中所示的處理。
如上所述,即使對主程序區(qū)M10的地址進(jìn)行了重新分配,子程序24也能正確地核實(shí)主調(diào)程序是否為合法的主程序22。
根據(jù)運(yùn)行子程序24的OS,即使對存儲區(qū)的地址進(jìn)行了重新分配,通過OS一側(cè)進(jìn)行地址轉(zhuǎn)換等操作,可防止程序側(cè)受地址改變的影響。在此情形中,子程序24可以在不需要考慮上述地址重新分配的條件下驗(yàn)證主調(diào)程序。
現(xiàn)在,將描述該實(shí)施例的第二變型例。
在第二變型例中,子程序24根據(jù)保存在以返回目的地址為參考所指定的預(yù)定地址范圍內(nèi)的程序數(shù)據(jù),驗(yàn)證主調(diào)程序。
此時(shí),將參照圖7中所示的流程圖,針對第二變型例中主調(diào)程序調(diào)用子程序24時(shí)子程序24的執(zhí)行過程進(jìn)行描述。在圖7中,由于步驟S100到步驟S106與圖4中的處理相同,將省略對其的描述,將從步驟S130開始描述。
如果主調(diào)程序存儲區(qū)的標(biāo)志表示可執(zhí)行(步驟S104處判斷結(jié)果為是“Y”),則子程序24從主存儲器30獲得保存在以所獲得的返回目的地址為參考所指定的預(yù)定地址范圍內(nèi)的程序數(shù)據(jù)(S130)。所述的預(yù)定地址范圍可以預(yù)先確定,例如,以返回目的地址為參考地址的相對地址。
在此情形中,必須確定保存了能夠核實(shí)主調(diào)程序是否為合法主程序的程序數(shù)據(jù)的范圍,作為預(yù)定的地址范圍。從而,希望將保存有專用于與其他程序不同的合法主程序的程序數(shù)據(jù)的地址范圍,指定為預(yù)定的地址范圍。
然后,子程序24根據(jù)所獲得的程序數(shù)據(jù)對主調(diào)程序執(zhí)行驗(yàn)證和核實(shí)(S132)。
例如,可如下面所述進(jìn)行核實(shí)。子程序24預(yù)先保存將要加載到預(yù)定地址范圍內(nèi)的合法主程序22的程序數(shù)據(jù)。然后,子程序24將預(yù)先保存的程序數(shù)據(jù)與從加載主調(diào)程序的存儲區(qū)獲得的程序數(shù)據(jù)彼此進(jìn)行比較,以核實(shí)主調(diào)程序是否為合法的主程序22??梢圆煌ㄟ^上面所述的通過比較程序數(shù)據(jù)本身來進(jìn)行核實(shí),而是例如,通過預(yù)先針對合法主程序的程序數(shù)據(jù)計(jì)算諸如哈希(hash)值的特性,并比較所述特性來進(jìn)行核實(shí)。
作為驗(yàn)證的結(jié)果,如果對主調(diào)程序的驗(yàn)證失敗(步驟S134處判斷結(jié)果為否“N”),則子程序24確定其沒有被合法的主程序22調(diào)用,并終止子進(jìn)程(S106)。
另一方面,如果對主調(diào)程序的驗(yàn)證成功(步驟S134處判斷結(jié)果為是“Y”),則子程序24確定其正被合法的主程序22調(diào)用,并繼續(xù)子進(jìn)程(S124)。
如上所述,在第二變型例中,在核實(shí)加載在包括主調(diào)程序的返回目的地址的預(yù)定地址范圍內(nèi)的程序數(shù)據(jù)是否為合法主程序22的程序數(shù)據(jù)之后,子程序24只有在主調(diào)程序是合法主程序22時(shí)才繼續(xù)子進(jìn)程。
從而,與上面所述的示例性實(shí)施例和第一變型例相同,根據(jù)第二變型例,可防止通過對子程序24的未經(jīng)授權(quán)的調(diào)用,以未經(jīng)授權(quán)的方式從子程序24獲得數(shù)據(jù)。
包括在程序數(shù)據(jù)中的處理命令可包括地址信息,諸如JUMP命令的情形。從而,如果對主程序區(qū)M10的地址進(jìn)行了重新分配,則有可能改變程序數(shù)據(jù)的內(nèi)容。
從而,在第二變型例中,也必須根據(jù)主程序22的技術(shù)規(guī)范考慮地址的重新分配。
在此情形中,例如,預(yù)先從上述的預(yù)定地址范圍排除可通過正重新分配地址而導(dǎo)致數(shù)據(jù)內(nèi)容被重寫的地址(下面稱作“數(shù)據(jù)將被重寫的地址”)。由此,這種其內(nèi)容可通過重新分配地址而被改變的數(shù)據(jù),可以不包含在將被核實(shí)的程序數(shù)據(jù)中。
因而,即使執(zhí)行了地址的重新分配,子程序24也能正確地驗(yàn)證主調(diào)程序。
例如,通過查閱稱作重定位表的表格可確定將被重寫的數(shù)據(jù)的地址,其中所述重定位表登記了可通過重新分配地址而重寫數(shù)據(jù)內(nèi)容的地址。在主程序22沒有提供重定位表的情況下,創(chuàng)建登記有數(shù)據(jù)將被重寫的地址的列表,并將其加載到可由子程序24預(yù)先查閱的存儲區(qū)中。
還可以不通過排除數(shù)據(jù)將被重寫的地址,而是通過校正保存在數(shù)據(jù)將被重寫地址處的程序數(shù)據(jù)對主調(diào)程序進(jìn)行驗(yàn)證。在此情形中,利用例如圖6中所示的方法確定差值,并且基于所述差值校正保存在數(shù)據(jù)將被重寫的地址中的程序數(shù)據(jù)。即,可基于計(jì)算出的差值來校正被加載在數(shù)據(jù)將被重寫的地址處的處理命令中所包含的地址。
在上述實(shí)施例和每個(gè)變型例中,針對子程序24利用從堆棧區(qū)M14等獲得的返回目的地址作為分配給主調(diào)程序使用的存儲區(qū)的地址、對主調(diào)程序進(jìn)行驗(yàn)證的示例進(jìn)行了描述。不過,如果可以對主調(diào)程序進(jìn)行驗(yàn)證,則子程序24還可以使用除返回目的地址之外的地址。
在本示例性實(shí)施例的第三變型例中,將針對利用主程序22調(diào)用子程序時(shí)發(fā)送的參數(shù)所表示的地址作為地址,而非返回目的地址,對驗(yàn)證主調(diào)程序的情形進(jìn)行描述。
在第三變型例中,使用回調(diào)地址作為由參數(shù)所表示的地址。此處,回調(diào)地址表示存儲將要被調(diào)用的回調(diào)函數(shù)的地址?;卣{(diào)函數(shù)為主調(diào)程序中的一個(gè)函數(shù),子程序24響應(yīng)于主調(diào)程序的調(diào)用來調(diào)用該回調(diào)函數(shù)。即,子程序24訪問由主調(diào)程序發(fā)送的參數(shù)所指示的回調(diào)地址,而調(diào)用該回調(diào)函數(shù)。
第三變型例與上述使用從堆棧區(qū)M14等獲得返回目的地址的實(shí)施例的不同之處在于,子程序24使用主調(diào)程序發(fā)送的參數(shù)所指示的回調(diào)地址。不過,在其他方面,該過程與上述實(shí)施例相同,從而將省略對其的描述。參照上述示例性實(shí)施例的描述,同時(shí)適當(dāng)?shù)赜没卣{(diào)地址取代返回目的地址。
此外,在第一和第二變型例的過程中,也可以使用回調(diào)地址取代返回目的地址。在此情形中,也參照第一和第二變型例的描述,同時(shí)適當(dāng)?shù)赜没卣{(diào)地址取代返回目的地址。
在使用回調(diào)地址的情形中,必須考慮保存主程序22的存儲區(qū)的地址的重新分配。在此情形中,與第一和第二變型例相同,子程序24根據(jù)圖6中所示的過程,判斷是否已經(jīng)進(jìn)行了地址的重新分配,并且如果進(jìn)行了重新分配,則確定差值。然后,子程序24根據(jù)所述差值,校正保存在所獲得的回調(diào)地址處或者以所獲得的回調(diào)地址作為參考所指定的預(yù)定地址范圍內(nèi)的程序數(shù)據(jù),之后,對主調(diào)程序進(jìn)行驗(yàn)證。
可以在子程序24執(zhí)行將作為子進(jìn)程的結(jié)果獲得的數(shù)據(jù)返回主調(diào)程序的返回處理之前,執(zhí)行上述實(shí)施例和每個(gè)變型例中所示的對主調(diào)程序進(jìn)行驗(yàn)證的處理。例如,子程序24可以在接收到調(diào)用之后、剛好在調(diào)用回調(diào)函數(shù)之前或者在將作為子進(jìn)程的結(jié)果獲得的數(shù)據(jù)返回主調(diào)程序之前,立即執(zhí)行對主調(diào)程序的驗(yàn)證處理。
上述的每個(gè)處理可以以程序的形式分發(fā)。在此情形中,可通過將程序記錄在諸如floppy(注冊商標(biāo))盤、CD-ROM和DVD的記錄介質(zhì)中來分發(fā)程序?;蛘?,可通過使用公共網(wǎng)絡(luò)等通過傳輸介質(zhì)來分發(fā)部分或所有程序或文件。在此情形中,收到程序的用戶可以利用諸如CD-ROM裝置的讀出裝置(輸入/輸出部分的一部件),從諸如floppy(注冊商標(biāo))盤,CD-ROM和DVD的便攜式記錄介質(zhì),將程序拷貝到外部記錄部件,或者通過計(jì)算機(jī)的通信部件將程序從互連網(wǎng)拷貝到外部記錄部件。可以利用執(zhí)行程序的CPU,在用戶計(jì)算機(jī)上實(shí)現(xiàn)上述功能。
為了說明和描述的目的提供本發(fā)明實(shí)施例的上述描述。無意窮舉或者將本發(fā)明限制為所披露的具體形式。顯然,本領(lǐng)域技術(shù)人員易于想到多種變型和改變。實(shí)施例的選擇和描述是為了最好地解釋本發(fā)明的原理及其實(shí)際應(yīng)用,從而使本領(lǐng)域技術(shù)人員能夠理解本發(fā)明適于具體使用的多個(gè)實(shí)施例和多種變型。本發(fā)明的范圍由所附權(quán)利要求及其等效范圍來限定。
權(quán)利要求
1.一種信息處理設(shè)備,包括子進(jìn)程部分,執(zhí)行包括響應(yīng)于主調(diào)程序的調(diào)用而執(zhí)行的處理和將所述處理結(jié)果返回所述主調(diào)程序的返回處理的子進(jìn)程;地址獲取處理部分,其獲取所述子進(jìn)程部分執(zhí)行所述子進(jìn)程時(shí)所訪問的訪問目的地址,所述訪問目的地址被指定為所述主調(diào)程序的一個(gè)存儲區(qū);判斷處理部分,其根據(jù)所獲取的存儲信息判斷所述主調(diào)程序是否合法;以及終止處理部分,如果判斷所述主調(diào)程序不合法,則終止所述子進(jìn)程的執(zhí)行。
2.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述判斷處理部分基于所獲得的訪問目的地址獲得有關(guān)所述主調(diào)程序所使用的所述存儲區(qū)的存儲信息,并根據(jù)所述存儲信息判斷所述主調(diào)程序是否合法。
3.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述判斷處理部分基于所獲得的訪問目的地址獲得有關(guān)所述主調(diào)程序的屬性信息,并根據(jù)所獲得的所述屬性信息和預(yù)先登記的合法主調(diào)程序的屬性信息,判斷所述主調(diào)程序是否合法。
4.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述判斷處理部分根據(jù)所獲得的訪問目的地址以及預(yù)先登記的合法主調(diào)程序的原始訪問目的地址,判斷所述主調(diào)程序是否合法。
5.根據(jù)權(quán)利要求4所述的設(shè)備,其中所述判斷處理部分通過查閱登記了一組合法主調(diào)程序的原始訪問目的地址的地址列表,判斷所述主調(diào)程序是否合法。
6.根據(jù)權(quán)利要求4所述的設(shè)備,其中所述判斷處理部分根據(jù)所獲得的訪問目的地址,獲得保存所述主調(diào)程序的所述存儲區(qū)的起始地址,如果所獲得的起始地址與預(yù)先登記的合法主調(diào)程序的起始地址不同,則確定差值,根據(jù)所述差值校正所獲得的訪問目的地址,并且根據(jù)經(jīng)過校正的訪問目的地址判斷所述主調(diào)程序是否合法。
7.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述判斷處理部分從存儲器獲得保存在一定地址范圍內(nèi)的數(shù)據(jù),所述范圍是基于所獲得的訪問目的地址指定的;通過比較所獲得的數(shù)據(jù)與將要保存在合法主調(diào)程序的訪問目的地址所指定的地址范圍內(nèi)的數(shù)據(jù),判斷所述主調(diào)程序是否合法。
8.根據(jù)權(quán)利要求7所述的設(shè)備,其中所述地址范圍不包括保存了通過地址重新分配可能改變其內(nèi)容的數(shù)據(jù)的地址。
9.根據(jù)權(quán)利要求7所述的設(shè)備,其中所述判斷處理部分根據(jù)所獲得的訪問目的地址,獲得保存了主調(diào)程序的存儲區(qū)的起始地址,如果所獲得的起始地址與預(yù)先登記的合法主調(diào)程序的起始地址不同,則確定差值,根據(jù)所述差值校正所獲得的數(shù)據(jù),以及根據(jù)經(jīng)過校正的數(shù)據(jù)和待保存的數(shù)據(jù),判斷所述主調(diào)程序是否合法。
10.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述判斷處理部分從存儲器獲得保存在一定地址范圍內(nèi)的數(shù)據(jù),所述范圍是根據(jù)所獲得的訪問目的地址指定的,計(jì)算所獲得的數(shù)據(jù)的哈希值,以及根據(jù)計(jì)算出的哈希值和從將要保存在根據(jù)預(yù)先登記的合法主調(diào)程序的訪問目的地址所指定的地址范圍內(nèi)的數(shù)據(jù)中所確定的哈希值,判斷所述主調(diào)程序是否合法。
11.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述訪問目的地址為程序的處理結(jié)束之后,程序轉(zhuǎn)移執(zhí)行控制的返回目的地址。
12.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述訪問目的地址為當(dāng)程序被所述主調(diào)程序調(diào)用時(shí)主調(diào)程序發(fā)送出的參數(shù)所表示的地址。
13.根據(jù)權(quán)利要求12所述的設(shè)備,其中所述地址為所述主調(diào)程序指定為回調(diào)目的的回調(diào)地址。
14.一種保存程序的計(jì)算機(jī)可讀介質(zhì),使計(jì)算機(jī)執(zhí)行包括響應(yīng)于主調(diào)程序的調(diào)用而執(zhí)行的處理和將處理結(jié)果返回所述主調(diào)程序的返回處理的子進(jìn)程,所述子進(jìn)程包括獲得被所述程序訪問的訪問目的地址,所述訪問目的地址被分配給所述主調(diào)程序的一個(gè)存儲區(qū);根據(jù)所獲得的訪問目的地址判斷所述主調(diào)程序是否合法;以及如果判斷所述主調(diào)程序不合法,則終止所述子進(jìn)程的執(zhí)行。
15.一種用于執(zhí)行子程序的程序控制方法,所述子程序執(zhí)行包括響應(yīng)于主調(diào)程序的調(diào)用而執(zhí)行的處理和將處理結(jié)果返回所述主調(diào)程序的返回處理的子進(jìn)程,所述程序控制方法包括獲得被所述子程序訪問的訪問目的地址,所述訪問目的地址被分配給所述主調(diào)程序的一個(gè)存儲區(qū);根據(jù)所獲得的訪問目的地址判斷所述主調(diào)程序是否合法;以及如果判斷所述主調(diào)程序不合法則終止所述子進(jìn)程的執(zhí)行。
全文摘要
提供一種信息處理設(shè)備,包括子進(jìn)程部分,其執(zhí)行包括根據(jù)主調(diào)程序的調(diào)用而執(zhí)行的處理和將處理結(jié)果返回主調(diào)程序的返回處理的子進(jìn)程;地址獲取處理部分,其獲取子進(jìn)程部分執(zhí)行子進(jìn)程時(shí)訪問的訪問目的地址,訪問目的地址被分配給主調(diào)程序的一個(gè)存儲區(qū);判斷處理部分,其根據(jù)所獲取的存儲信息判斷主調(diào)程序是否合法;以及終止處理部分,如果判斷結(jié)果為主調(diào)程序不合法,則終止子進(jìn)程的執(zhí)行。
文檔編號G06F9/46GK1975678SQ20061016353
公開日2007年6月6日 申請日期2006年11月29日 優(yōu)先權(quán)日2005年11月30日
發(fā)明者齊藤和雄 申請人:富士施樂株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
南京市| 宝山区| 合作市| 永新县| 旺苍县| 吉木乃县| 潞西市| 广宗县| 利津县| 连江县| 会昌县| 靖远县| 青川县| 呼和浩特市| 朝阳市| 黔南| 海城市| 得荣县| 慈溪市| 阿克陶县| 巫溪县| 伊吾县| 前郭尔| 精河县| 灵台县| 呼图壁县| 乌苏市| 项城市| 潢川县| 南昌市| 武川县| 河曲县| 宜川县| 内黄县| 丰宁| 宁蒗| 宜州市| 湘潭市| 临汾市| 濮阳县| 泸西县|