国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      內(nèi)核修復(fù)方法和裝置的制造方法

      文檔序號:10687460閱讀:223來源:國知局
      內(nèi)核修復(fù)方法和裝置的制造方法
      【專利摘要】本申請公開了內(nèi)核修復(fù)方法和裝置。所述方法的一【具體實施方式】包括:加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁,所述補(bǔ)丁是以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的;使用內(nèi)存安全語言引擎執(zhí)行所述補(bǔ)??;接收執(zhí)行所述補(bǔ)丁過程中調(diào)用修復(fù)用接口對所述目標(biāo)函數(shù)進(jìn)行修復(fù)的調(diào)用請求,其中,修復(fù)用接口是所述內(nèi)存安全語言引擎所提供的、用于對函數(shù)進(jìn)行修復(fù)的接口;執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù)。實現(xiàn)了內(nèi)核的熱修補(bǔ)與安全性。
      【專利說明】
      內(nèi)核修復(fù)方法和裝置
      技術(shù)領(lǐng)域
      [0001 ]本申請涉及計算機(jī)技術(shù)領(lǐng)域,具體涉及信息安全領(lǐng)域,尤其涉及內(nèi)核修復(fù)方法和
      目.0
      【背景技術(shù)】
      [0002]內(nèi)核漏洞是安卓設(shè)備所面臨的一個技術(shù)問題。目前,盡管大量內(nèi)核漏洞已被公開,但依然有很多安卓設(shè)備得不到及時的更新。黑色產(chǎn)業(yè)利用這些漏洞可以攻破設(shè)備中設(shè)置的加密、指紋、數(shù)據(jù)隔離等幾乎所有的安全保護(hù)機(jī)制。手機(jī)廠商無法像具備安全能力的第三方廠商那樣集中力量發(fā)現(xiàn)與修復(fù)內(nèi)核漏洞,因此僅僅依賴手機(jī)廠商是很難解決這一問題。另夕卜,安卓產(chǎn)業(yè)鏈非常長,內(nèi)核補(bǔ)丁在通過一系列審核測試后才能到達(dá)用戶設(shè)備,為時已晚。因此,需要讓有安全能力的廠商一起和產(chǎn)業(yè)鏈上其他環(huán)節(jié)的廠商進(jìn)行合作。
      [0003]然而,安全廠商很難拿到設(shè)備源碼,也很難對市面上成千上萬種設(shè)備進(jìn)行適配,所以亟需一種靈活的機(jī)制允許安全廠商不受平臺限制插入修補(bǔ)邏輯。此外,靈活則意味著風(fēng)險,我們同時需要一種約束機(jī)制來局限安全廠商的修補(bǔ)能力,防止任意篡改內(nèi)核邏輯甚至插入后I ~\。

      【發(fā)明內(nèi)容】

      [0004]本申請的目的在于提出一種改進(jìn)的內(nèi)核修復(fù)方法和裝置,來解決以上【背景技術(shù)】部分提到的技術(shù)問題。
      [0005]第一方面,本申請?zhí)峁┝艘环N內(nèi)核修復(fù)方法,所述方法包括:加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁,所述補(bǔ)丁是以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的;接收執(zhí)行所述補(bǔ)丁過程中調(diào)用修復(fù)用接口對所述目標(biāo)函數(shù)進(jìn)行修復(fù)的調(diào)用請求,其中,修復(fù)用接口是所述內(nèi)存安全語言引擎所提供的、用于對函數(shù)進(jìn)行修復(fù)的接口;執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù)。
      [0006]在一些實施例中,所述執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù),包括:在所述目標(biāo)函數(shù)的起始位置,插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,所述檢查函數(shù)用于檢查函數(shù)的入口參數(shù)是否異常。
      [0007]在一些實施例中,所述執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù):對于所述目標(biāo)函數(shù)調(diào)用的函數(shù),在函數(shù)的起始位置插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,所述檢查函數(shù)用于檢查執(zhí)行狀態(tài)和/或函數(shù)的入口參數(shù)是否異常。
      [0008]在一些實施例中,所述執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù):對于所述目標(biāo)函數(shù)調(diào)用的函數(shù),在函數(shù)中返回指令前的位置,插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,所述檢查函數(shù)用于檢查執(zhí)行狀態(tài)是否異常。
      [0009]在一些實施例中,在所述插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用之前,所述執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù)還包括:確定所述目標(biāo)函數(shù)調(diào)用的函數(shù)是返回值為執(zhí)行結(jié)果狀態(tài)的函數(shù)。
      [0010]在一些實施例中,在所述加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁之前,所述方法還包括:對所述補(bǔ)丁進(jìn)行簽名驗證,以確定所述補(bǔ)丁的合法性。
      [0011]第二方面,本申請?zhí)峁┝艘环N內(nèi)核修復(fù)裝置,所述裝置包括:加載單元,用于加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁,所述補(bǔ)丁是以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的;執(zhí)行單元,用于使用內(nèi)存安全語言引擎執(zhí)行所述補(bǔ)丁;接收單元,用于接收執(zhí)行所述補(bǔ)丁過程中調(diào)用修復(fù)用接口對所述目標(biāo)函數(shù)進(jìn)行修復(fù)的調(diào)用請求,其中,修復(fù)用接口是所述內(nèi)存安全語言引擎所提供的、用于對函數(shù)進(jìn)行修復(fù)的接口 ;修復(fù)單元,用于執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù)。
      [0012]在一些實施例中,所述修復(fù)單元進(jìn)一步用于:在所述目標(biāo)函數(shù)的起始位置,插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,所述檢查函數(shù)用于檢查函數(shù)的入口參數(shù)是否異常。
      [0013]在一些實施例中,所述修復(fù)單元進(jìn)一步用于:對于所述目標(biāo)函數(shù)調(diào)用的函數(shù),在函數(shù)的起始位置插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,所述檢查函數(shù)用于檢查執(zhí)行狀態(tài)和/或函數(shù)的入口參數(shù)是否異常。
      [0014]在一些實施例中,所述修復(fù)單元進(jìn)一步用于:對于所述目標(biāo)函數(shù)調(diào)用的函數(shù),在函數(shù)中返回指令前的位置,插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,所述檢查函數(shù)用于檢查執(zhí)行狀態(tài)是否異常。
      [0015]在一些實施例中,所述修復(fù)單元還用于:在所述插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用之前,確定所述目標(biāo)函數(shù)調(diào)用的函數(shù)是返回值為執(zhí)行結(jié)果狀態(tài)的函數(shù)。
      [0016]在一些實施例中,所述裝置還包括:驗證單元,用于在所述加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁之前,對所述補(bǔ)丁進(jìn)行簽名驗證,以確定所述補(bǔ)丁的合法性。
      [0017]本申請?zhí)峁┑膬?nèi)核修復(fù)方法和裝置,通過內(nèi)存安全語言引擎執(zhí)行以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的補(bǔ)丁,補(bǔ)丁通過調(diào)用內(nèi)存安全語言引擎提供的修復(fù)用接口執(zhí)行相應(yīng)的修補(bǔ),使得通過第三方的安全廠商即可以借助這些修復(fù)用接口開發(fā)用于修復(fù)內(nèi)核漏洞的補(bǔ)丁,無須考慮適配問題。同時,該方法也盡可能地限制補(bǔ)丁執(zhí)行時的權(quán)限,防止非法人員通過執(zhí)行補(bǔ)丁任意篡改內(nèi)核邏輯甚至插入后門,從而實現(xiàn)了內(nèi)核修補(bǔ)的安全性。
      【附圖說明】
      [0018]通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細(xì)描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:
      [0019]圖1是本申請可以應(yīng)用于其中的示例性系統(tǒng)架構(gòu)圖;
      [0020]圖2是根據(jù)本申請的內(nèi)核修復(fù)方法的一個實施例的流程圖;
      [0021]圖3是根據(jù)本申請的內(nèi)核修復(fù)方法的又一個實施例的流程圖;
      [0022]圖4是根據(jù)本申請的內(nèi)核修復(fù)裝置的一個實施例的結(jié)構(gòu)示意圖;
      [0023]圖5是適于用來實現(xiàn)本申請實施例的終端設(shè)備或服務(wù)器的計算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。
      【具體實施方式】
      [0024]下面結(jié)合附圖和實施例對本申請作進(jìn)一步的詳細(xì)說明??梢岳斫獾氖牵颂幩枋龅木唧w實施例僅僅用于解釋相關(guān)發(fā)明,而非對該發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。
      [0025]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細(xì)說明本申請。
      [0026]圖1示出了可以應(yīng)用本申請的內(nèi)核修復(fù)方法或內(nèi)核修復(fù)裝置的實施例的示例性系統(tǒng)架構(gòu)100。
      [0027]如圖1所示,系統(tǒng)架構(gòu)100可以包括終端設(shè)備101、102、103,網(wǎng)絡(luò)104和服務(wù)器105。網(wǎng)絡(luò)104用以在終端設(shè)備101、102、103和服務(wù)器105之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)104可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
      [0028]用戶可以使用終端設(shè)備101、102、103通過網(wǎng)絡(luò)104與服務(wù)器105交互,以接收或發(fā)送消息等。終端設(shè)備101、102、103上可以安裝有各種通訊客戶端應(yīng)用,例如網(wǎng)頁瀏覽器應(yīng)用、購物類應(yīng)用、搜索類應(yīng)用、即時通信工具、郵箱客戶端、社交平臺軟件等。
      [0029]終端設(shè)備101、102、103可以是具有操作系統(tǒng)的各種電子設(shè)備,包括但不限于智能手機(jī)、平板電腦、電子書閱讀器、MP3播放器(Moving Picture Experts Group Aud1 LayerIII,動態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面3)、MP4(Moving Picture Experts Group Aud1Layer IV,動態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面4)播放器、膝上型便攜計算機(jī)和臺式計算機(jī)等等。上述操作系統(tǒng)包括但不限于安卓操作系統(tǒng)、Linux操作系統(tǒng)。
      [0030]服務(wù)器105可以是提供各種服務(wù)的服務(wù)器,例如對終端設(shè)備101、102、103上所加載的內(nèi)核補(bǔ)丁提供支持的補(bǔ)丁服務(wù)器。補(bǔ)丁服務(wù)器可以響應(yīng)于終端設(shè)備101、102、103發(fā)送的補(bǔ)丁獲取請求,給終端設(shè)備101、102、103分發(fā)相應(yīng)的補(bǔ)丁。
      [0031]需要說明的是,本申請實施例所提供的內(nèi)核修復(fù)方法一般由終端設(shè)備101、102、103執(zhí)行,相應(yīng)地,內(nèi)核修復(fù)裝置一般設(shè)置于終端設(shè)備101、102、103中。
      [0032]應(yīng)該理解,圖1中的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器的數(shù)目僅僅是示意性的。根據(jù)實現(xiàn)需要,可以具有任意數(shù)目的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器。
      [0033]繼續(xù)參考圖2,示出了根據(jù)本申請的內(nèi)核修復(fù)方法的一個實施例的流程200。所述的內(nèi)核修復(fù)方法,包括以下步驟:
      [0034]步驟201,加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁。
      [0035]在本實施例中,內(nèi)核修復(fù)方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的終端設(shè)備)可以在接收到內(nèi)核修復(fù)的操作請求時,加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁。該補(bǔ)丁可以是預(yù)先存儲在終端設(shè)備本地的,也可以是通過有線連接方式或者無線連接方式從服務(wù)器獲取到的。上述內(nèi)核通??梢允荓inux等各種操作系統(tǒng)的內(nèi)核。
      [0036]電子設(shè)備的操作系統(tǒng)內(nèi)核中可以預(yù)先植入有用于對補(bǔ)丁執(zhí)行各種功能的內(nèi)核熱修補(bǔ)框架,該內(nèi)核熱修補(bǔ)框架的植入的方式包括但不限于通過利用已有內(nèi)核漏洞植入內(nèi)核、通過手機(jī)廠商預(yù)置或動態(tài)裝載植入內(nèi)核。該熱修補(bǔ)框架對補(bǔ)丁執(zhí)行的功能包括但不限于:加載、執(zhí)行、停止、卸載、運(yùn)行狀態(tài)監(jiān)控、執(zhí)行日志記錄、限制策略控制。
      [0037]需要說明的,上述補(bǔ)丁可以是以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的。內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集可以是能夠避免各類內(nèi)存錯誤的語言,內(nèi)存錯誤包括但不限于:數(shù)組越界、緩沖區(qū)溢出、引用空指針、使用未初始化內(nèi)存、使用或釋放已釋放的指針或無效、未分配的指針、堆棧耗盡時試圖分配更多內(nèi)存以及在堆棧空間不足時分配超額內(nèi)存。
      [0038]步驟202,使用內(nèi)存安全語言引擎執(zhí)行上述補(bǔ)丁。
      [0039]在本實施例中,電子設(shè)備在內(nèi)核中設(shè)置有內(nèi)存安全語言引擎,該內(nèi)存安全語言引擎可用于解釋執(zhí)行或編譯對以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的代碼。內(nèi)存安全語言引擎在執(zhí)行以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的代碼時,可以將代碼的能力限制在設(shè)定的范圍內(nèi),從而減小安全風(fēng)險。上述內(nèi)存安全語言引擎包括但不限于Lua、Luajit等語言引擎。該內(nèi)存安全語言引擎可以作為上述熱修補(bǔ)框架的一個模塊存在。在基于步驟201對補(bǔ)丁進(jìn)行加載后,電子設(shè)備可以通過內(nèi)核中的內(nèi)存安全語言引擎執(zhí)行該補(bǔ)丁。
      [0040]可選的,上述內(nèi)存安全語言引擎可以選用Luat3Lua語言簡潔、輕量,以Lua編寫的代碼很容易和C/C++語言進(jìn)行互調(diào),很適合集成在內(nèi)核里。另外Lua虛擬機(jī)也能對補(bǔ)丁代碼的執(zhí)行進(jìn)行限制,使得補(bǔ)丁代碼只允許調(diào)用Lua引擎所提供的C接口,防止漏洞、后門、攻擊邏輯的威脅。
      [0041]步驟203,接收執(zhí)行補(bǔ)丁過程中調(diào)用修復(fù)用接口對目標(biāo)函數(shù)進(jìn)行修復(fù)的調(diào)用請求。
      [0042]在本實施例中,上述內(nèi)存安全語言引擎提供了一些修復(fù)用接口,這些接口供外部程序進(jìn)行調(diào)用來實現(xiàn)對內(nèi)核中的函數(shù)進(jìn)行修復(fù)的功能。可選的,這些修復(fù)用接口可以通過上述熱修補(bǔ)框架的限制策略控制功能進(jìn)行維護(hù)。上述補(bǔ)丁中包括調(diào)用上述修復(fù)用接口的代碼,因此上述補(bǔ)丁在執(zhí)行時可以發(fā)起對修復(fù)用調(diào)用接口的調(diào)用請求,從而可以使得電子設(shè)備的內(nèi)存安全語言引擎接收到該調(diào)用請求。通常,修復(fù)用接口的內(nèi)部實現(xiàn)具有對內(nèi)核中的函數(shù)中的匯編指令進(jìn)行操作的權(quán)限,這些內(nèi)部實現(xiàn)封裝成能力接口對外提供。補(bǔ)丁中的代碼只能通過調(diào)用這些能力接口實現(xiàn),不能直接對內(nèi)核中的函數(shù)進(jìn)行直接操作,從而實現(xiàn)了對補(bǔ)丁的權(quán)限控制。
      [0043]步驟204,執(zhí)行所請求的修復(fù)用接口以修復(fù)目標(biāo)函數(shù)。
      [0044]在本實施例中,基于步驟203所接收到的、對修復(fù)用調(diào)用接口的調(diào)用請求,電子設(shè)備的內(nèi)存安全語言引擎可以通過執(zhí)行所請求的修復(fù)用接口對目標(biāo)函數(shù)進(jìn)行修復(fù)。執(zhí)行修復(fù)用接口,即是對修復(fù)用接口所對應(yīng)的函數(shù)實現(xiàn)進(jìn)行執(zhí)行。該函數(shù)實現(xiàn)的具體內(nèi)容可以是對目標(biāo)函數(shù)執(zhí)行預(yù)設(shè)的操作,以對目標(biāo)函數(shù)進(jìn)行修復(fù)。可選的,修復(fù)用接口所執(zhí)行的操作包括但不限于:在目標(biāo)函數(shù)的指定位置插入?yún)R編指令或插入對內(nèi)存安全語言所寫的函數(shù)的調(diào)用、在目標(biāo)函數(shù)的指定位置修改匯編指令或?qū)⒃紖R編指令替換成對內(nèi)存安全語言所寫的函數(shù)的調(diào)用、對設(shè)定的調(diào)用進(jìn)行掛鉤、對設(shè)定的函數(shù)實現(xiàn)進(jìn)行替換。
      [0045]在本實施例的一些可選實現(xiàn)方式中,步驟204在執(zhí)行一些修復(fù)用接口時,可以具體以如下方式實現(xiàn):在目標(biāo)函數(shù)的起始位置,插入對補(bǔ)丁提供的檢查函數(shù)的調(diào)用,該檢查函數(shù)可以用于檢查目標(biāo)函數(shù)的輸入?yún)?shù)是否異常。在本實現(xiàn)方式中,以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的上述補(bǔ)丁,提供有在修復(fù)過程中用到的檢查函數(shù),該檢查函數(shù)的函數(shù)名可以作為調(diào)用請求的參數(shù)。如此,電子設(shè)備可以根據(jù)函數(shù)名確定所需要調(diào)用的檢查函數(shù),從而得以順利在目標(biāo)函數(shù)的起始位置,插入對補(bǔ)丁提供的檢查函數(shù)的調(diào)用。通過回調(diào)機(jī)制,修復(fù)后的目標(biāo)函數(shù)在執(zhí)行時可調(diào)用該檢查函數(shù)。通常,當(dāng)檢查函數(shù)執(zhí)行時,可以生成用于表征是否存在異常的檢查結(jié)果,該檢查結(jié)果可用于指示是否執(zhí)行目標(biāo)函數(shù)的后續(xù)過程。根據(jù)檢查結(jié)果確定是否執(zhí)行目標(biāo)函數(shù)的后續(xù)過程可以通過各種機(jī)制實現(xiàn)。例如,檢查函數(shù)可以負(fù)責(zé)將該檢查結(jié)果返回至目標(biāo)函數(shù),以使目標(biāo)函數(shù)中通過中的語句通過判斷檢查結(jié)果確定是否目標(biāo)函數(shù)的后續(xù)過程。又例如,檢查函數(shù)也可以在確定檢查結(jié)果指示出現(xiàn)異常時,通過調(diào)用內(nèi)存安全語言提供的、用于終止函數(shù)執(zhí)行的接口,直接從目標(biāo)函數(shù)中跳出到調(diào)用該目標(biāo)函數(shù)的函數(shù)處,同時還可以將指示異常的檢查結(jié)果返回給該函數(shù)。根據(jù)檢查結(jié)果確定是否執(zhí)行目標(biāo)函數(shù)的后續(xù)過程的方式不限于以上所列出的。
      [0046]以內(nèi)存安全語言引擎選用Lua為例,對該實現(xiàn)方式進(jìn)行舉例說明。修復(fù)用接口在執(zhí)行內(nèi)核修復(fù)功能時,可以在Lua補(bǔ)丁聲明的存在漏洞的目標(biāo)函數(shù)入口處插入回調(diào)。修復(fù)后的目標(biāo)函數(shù)一旦執(zhí)行到此,便會調(diào)用Lua補(bǔ)丁所實現(xiàn)的檢查函數(shù),并將目標(biāo)內(nèi)核函數(shù)的參數(shù)傳給該檢查函數(shù)。檢查函數(shù)可對輸入?yún)?shù)進(jìn)行檢查,返回正常(比如返回O)或異常(比如返回-1)兩個值,如果正常,則目標(biāo)函數(shù)照常執(zhí)行,否則終止目標(biāo)函數(shù)執(zhí)行,返回異常給目標(biāo)函數(shù)調(diào)用者。更具體的,上述插入對檢查函數(shù)的調(diào)用的過程可以通過如下方式實現(xiàn):首先可以將目標(biāo)函數(shù)的入口處替換成跳轉(zhuǎn)到跳轉(zhuǎn)函數(shù)的跳轉(zhuǎn)指令。跳轉(zhuǎn)函數(shù)首先負(fù)責(zé)在跳轉(zhuǎn)后保存現(xiàn)場,所保存的信息包括但不限于寄存器狀態(tài)、堆棧信息等。接著,跳轉(zhuǎn)函數(shù)調(diào)用Lua補(bǔ)丁里實現(xiàn)的檢查函數(shù),在調(diào)用時傳入目標(biāo)函數(shù)的入口參數(shù)。之后,跳轉(zhuǎn)函數(shù)負(fù)責(zé)在檢查函數(shù)返回檢查結(jié)果時恢復(fù)現(xiàn)場。如果檢查函數(shù)返回結(jié)果正常,則繼續(xù)執(zhí)行目標(biāo)函數(shù)的后續(xù)指令,否則中斷目標(biāo)函數(shù)的執(zhí)行。
      [0047]在該實現(xiàn)方式中,通過執(zhí)行一些修復(fù)用接口,可以在目標(biāo)函數(shù)的起始位置處插入用于對目標(biāo)函數(shù)的輸入?yún)?shù)是否異常的檢查函數(shù)的調(diào)用,在執(zhí)行修復(fù)后的目標(biāo)函數(shù)時,可以利用檢查函數(shù)及時對目標(biāo)函數(shù)的入口參數(shù)進(jìn)行檢查,以防目標(biāo)函數(shù)的入口參數(shù)出現(xiàn)異常而導(dǎo)致執(zhí)行目標(biāo)函數(shù)時出現(xiàn)信息泄露等風(fēng)險,實現(xiàn)漏洞修復(fù)。
      [0048]在本實施例的一些實現(xiàn)方式中,步驟204在執(zhí)行一些修復(fù)用接口時,可以通過如下方式執(zhí)行:對于目標(biāo)函數(shù)調(diào)用的函數(shù),在函數(shù)的起始位置插入對補(bǔ)丁提供的檢查函數(shù)的調(diào)用,該檢查函數(shù)用于檢查執(zhí)行狀態(tài)和/或函數(shù)的入口參數(shù)是否異常。
      [0049]由于目標(biāo)函數(shù)存在漏洞的部分除了存在于起始位置外,還可能存在于其他位置,尤其是在調(diào)用其他函數(shù)的過程中。對于被調(diào)用函數(shù),通常在其入口處會由于入口參數(shù)或者執(zhí)行狀態(tài)異常而導(dǎo)致目標(biāo)函數(shù)的后續(xù)過程出現(xiàn)安全風(fēng)險。因此,這些修復(fù)用接口的功能可以是在被調(diào)用函數(shù)的起始位置的位置插入對上述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,從而實現(xiàn)對相應(yīng)的數(shù)據(jù)進(jìn)行異常檢查。通過與前述實現(xiàn)方式中相同的方法,即可根據(jù)該檢查函數(shù)生成的檢查結(jié)果決定是否執(zhí)行目標(biāo)函數(shù)中的后續(xù)過程,這里不再贅述。
      [0050]在本實施例的一些實現(xiàn)方式中,步驟204在執(zhí)行一些修復(fù)用接口時,可以通過如下方式執(zhí)行:對于目標(biāo)函數(shù)調(diào)用的函數(shù),在函數(shù)中返回指令前的位置,插入對補(bǔ)丁提供的檢查函數(shù)的調(diào)用,檢查函數(shù)用于檢查執(zhí)行狀態(tài)是否異常。被目標(biāo)函數(shù)調(diào)用的函數(shù)也可能在返回執(zhí)行結(jié)果時出現(xiàn)異常,因此這些修復(fù)用接口的功能可以是在被調(diào)用函數(shù)中返回指令前的位置處插入對上述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,從而使得執(zhí)行修復(fù)后的目標(biāo)函數(shù)時能對函數(shù)返回前的執(zhí)行狀態(tài)是否異常進(jìn)行檢查,以防安全風(fēng)險。
      [0051 ]在前述兩種實現(xiàn)方式的一些可選實現(xiàn)方式中,步驟404在插入對補(bǔ)丁提供的檢查函數(shù)的調(diào)用之前,還包括:確定目標(biāo)函數(shù)調(diào)用的函數(shù)是返回值為執(zhí)行結(jié)果狀態(tài)的函數(shù)。在本實施例中,在目標(biāo)函數(shù)中所調(diào)用的各個函數(shù)中,上述修復(fù)用接口所操作的對象限于返回值為執(zhí)行結(jié)果狀態(tài)的函數(shù)。只有返回值為執(zhí)行結(jié)果狀態(tài)的函數(shù),才允許修復(fù)用接口插入對補(bǔ)丁所提供的檢查函數(shù)的調(diào)用,而返回值為普通數(shù)值的被調(diào)用函數(shù)則不允許插入對外部補(bǔ)丁中檢查函數(shù)的調(diào)用,從而防止補(bǔ)丁中的代碼通過操作返回值造成內(nèi)核的安全風(fēng)險。因此,該實現(xiàn)方式可以進(jìn)一步提高安全性。
      [0052]同樣以上述內(nèi)存安全語言引擎選用Lua為例對該實現(xiàn)方式進(jìn)行說明。執(zhí)行一些修復(fù)用接口時,可以是在Lua補(bǔ)丁聲明的存在漏洞的目標(biāo)內(nèi)核函數(shù)中,對返回值為執(zhí)行結(jié)果狀態(tài)的函數(shù)的調(diào)用進(jìn)行掛鉤/替換,在其入口或返回前調(diào)用Lua補(bǔ)丁所實現(xiàn)的檢查函數(shù)檢查其狀態(tài),返回正常(比如返回O)或異常(比如返回-1)兩個值。返回值還可以直接返回給目標(biāo)函數(shù)的調(diào)用者。具體實現(xiàn)與前述實現(xiàn)基本一致,這里不再贅述。
      [0053]本申請的上述實施例提供的方法,通過內(nèi)存安全語言引擎執(zhí)行以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的補(bǔ)丁,補(bǔ)丁通過調(diào)用內(nèi)存安全語言引擎提供的修復(fù)用接口執(zhí)行相應(yīng)的修補(bǔ),使得通過第三方的安全廠商即可以借助這些修復(fù)用接口開發(fā)用于修復(fù)內(nèi)核漏洞的補(bǔ)丁,無須考慮適配問題。同時,該方法也盡可能地限制補(bǔ)丁執(zhí)行時的權(quán)限,防止非法人員通過執(zhí)行補(bǔ)丁任意篡改內(nèi)核邏輯甚至插入后門,從而實現(xiàn)了內(nèi)核修補(bǔ)的安全性。
      [0054]進(jìn)一步參考圖3,其示出了內(nèi)核修復(fù)方法的又一個實施例的流程300。該內(nèi)核修復(fù)方法的流程300,包括以下步驟:
      [0055]步驟301,對補(bǔ)丁進(jìn)行簽名驗證,以確定補(bǔ)丁的合法性。
      [0056]在本實施例中,在加載補(bǔ)丁前,電子設(shè)備可以首先對補(bǔ)丁進(jìn)行簽名驗證。該步驟中的簽名通常是數(shù)字簽名,數(shù)字簽名就是附加在數(shù)據(jù)單元上的一些數(shù)據(jù),或是對數(shù)據(jù)單元所作的密碼變換。這種數(shù)據(jù)或變換允許數(shù)據(jù)單元的接收者用以確認(rèn)數(shù)據(jù)單元的來源和數(shù)據(jù)單元的完整性并保護(hù)數(shù)據(jù),防止被人(例如接收者)進(jìn)行偽造。它是對電子形式的消息進(jìn)行簽名的一種方法,一個簽名消息能在一個通信網(wǎng)絡(luò)中傳輸。
      [0057]通過對補(bǔ)丁的簽名進(jìn)行驗證,可以判斷補(bǔ)丁的完整性和來源可靠性。在驗證通過后,方可執(zhí)行后續(xù)步驟。在補(bǔ)丁未簽名、用不可信證書簽名以及補(bǔ)丁內(nèi)容與簽名不一致等情況,則驗證不通過,可以棄用相應(yīng)的補(bǔ)丁。通過對簽名的驗證,可以確保后續(xù)加載的補(bǔ)丁具有合法性。
      [0058]步驟302,加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁。
      [0059]在本實施例中,步驟302的具體操作可以參考圖2對應(yīng)實施例的步驟201,這里不再贅述。
      [0060]步驟303,使用內(nèi)存安全語言引擎執(zhí)行補(bǔ)丁。
      [0061 ]在本實施例中,步驟303的具體操作可以參考圖2對應(yīng)實施例的步驟202,這里不再贅述。
      [0062]步驟304,接收執(zhí)行補(bǔ)丁過程中調(diào)用修復(fù)用接口對目標(biāo)函數(shù)進(jìn)行修復(fù)的調(diào)用請求。
      [0063]在本實施例中,步驟304的具體操作可以參考圖2對應(yīng)實施例的步驟203,這里不再贅述。
      [0064]步驟305,執(zhí)行所請求的修復(fù)用接口以修復(fù)目標(biāo)函數(shù)。
      [0065]在本實施例中,步驟305的具體操作可以參考圖2對應(yīng)實施例的步驟204,這里不再贅述。
      [0066]從圖3中可以看出,與圖2對應(yīng)的實施例相比,本實施例中的內(nèi)核修復(fù)方法的流程300突出了對補(bǔ)丁的簽名驗證,從而確保后續(xù)加載并執(zhí)行的補(bǔ)丁具有合法性,進(jìn)一步降低安全隱患。
      [0067]進(jìn)一步參考圖4,作為對上述各圖所示方法的實現(xiàn),本申請?zhí)峁┝艘环N內(nèi)核修復(fù)裝置的一個實施例,該裝置實施例與圖2所示的方法實施例相對應(yīng),該裝置具體可以應(yīng)用于各種電子設(shè)備中。
      [0068]如圖4所示,本實施例所述的內(nèi)核修復(fù)裝置400包括:加載單元401、執(zhí)行單元402、接收單元403和修復(fù)單元404。其中,加載單元401用于加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁,補(bǔ)丁是以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的;執(zhí)行單元402用于使用內(nèi)存安全語言引擎執(zhí)行補(bǔ)丁;接收單元403用于接收執(zhí)行補(bǔ)丁過程中調(diào)用修復(fù)用接口對目標(biāo)函數(shù)進(jìn)行修復(fù)的調(diào)用請求,其中,修復(fù)用接口是內(nèi)存安全語言引擎所提供的、用于對函數(shù)進(jìn)行修復(fù)的接口;而修復(fù)單元404用于執(zhí)行所請求的修復(fù)用接口以修復(fù)目標(biāo)函數(shù)。
      [0069]在本實施例中,內(nèi)核修復(fù)裝置400的加載單元401、執(zhí)行單元402、接收單元403和修復(fù)單元404的具體操作可以參考圖2對應(yīng)的實現(xiàn)方式,這里不再贅述。
      [0070]在本實施例的一些可選實現(xiàn)方式中,修復(fù)單元404進(jìn)一步用于:在目標(biāo)函數(shù)的起始位置,插入對補(bǔ)丁提供的檢查函數(shù)的調(diào)用,檢查函數(shù)用于檢查函數(shù)的入口參數(shù)是否異常。該實現(xiàn)方式的具體處理可以參考圖2對應(yīng)實施例中相應(yīng)的實現(xiàn)方式,這里不再贅述。
      [0071]在本實施例的一些可選實現(xiàn)方式中,修復(fù)單元404進(jìn)一步用于:對于目標(biāo)函數(shù)調(diào)用的函數(shù),在函數(shù)的起始位置插入對補(bǔ)丁提供的檢查函數(shù)的調(diào)用,檢查函數(shù)用于檢查執(zhí)行狀態(tài)和/或函數(shù)的入口參數(shù)是否異常。該實現(xiàn)方式的具體處理可以參考圖2對應(yīng)實施例中相應(yīng)的實現(xiàn)方式,這里不再贅述。
      [0072]在本實施例的一些可選實現(xiàn)方式中,修復(fù)單元404進(jìn)一步用于:對于目標(biāo)函數(shù)調(diào)用的函數(shù),在函數(shù)中返回指令前的位置,插入對補(bǔ)丁提供的檢查函數(shù)的調(diào)用,檢查函數(shù)用于檢查執(zhí)行狀態(tài)是否異常。該實現(xiàn)方式的具體處理可以參考圖2對應(yīng)實施例中相應(yīng)的實現(xiàn)方式,這里不再贅述。
      [0073]在本實施例的一些可選實現(xiàn)方式中,修復(fù)單元404還用于:在插入對補(bǔ)丁提供的檢查函數(shù)的調(diào)用之前,確定目標(biāo)函數(shù)調(diào)用的函數(shù)是返回值為執(zhí)行結(jié)果狀態(tài)的函數(shù)。該實現(xiàn)方式的具體處理可以參考圖2對應(yīng)實施例中相應(yīng)的實現(xiàn)方式,這里不再贅述。
      [0074]在本實施例的一些可選實現(xiàn)方式中,內(nèi)核修復(fù)裝置400還包括:驗證單元(未示出),用于在加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁之前,對補(bǔ)丁進(jìn)行簽名驗證,以確定補(bǔ)丁的合法性。該實現(xiàn)方式的具體處理可以參考圖3對應(yīng)實施例中的步驟301,這里不再贅述。
      [0075]下面參考圖5,其示出了適于用來實現(xiàn)本申請實施例的終端設(shè)備或服務(wù)器的計算機(jī)系統(tǒng)500的結(jié)構(gòu)示意圖。
      [0076]如圖5所示,計算機(jī)系統(tǒng)500包括中央處理單元(CPU)501,其可以根據(jù)存儲在只讀存儲器(R0M)502中的程序或者從存儲部分508加載到隨機(jī)訪問存儲器(RAM)503中的程序而執(zhí)行各種適當(dāng)?shù)膭幼骱吞幚?。在RAM 503中,還存儲有系統(tǒng)500操作所需的各種程序和數(shù)據(jù)。CPU 50KROM 502以及RAM 503通過總線504彼此相連。輸入/輸出(I/O)接口505也連接至總線 504。
      [0077]以下部件連接至I/O接口505:包括鍵盤、鼠標(biāo)等的輸入部分506 ;包括諸如陰極射線管(CRT)、液晶顯示器(LCD)等以及揚(yáng)聲器等的輸出部分507;包括硬盤等的存儲部分508;以及包括諸如LAN卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分509。通信部分509經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動器510也根據(jù)需要連接至I/O接口 505??刹鹦督橘|(zhì)511,諸如磁盤、光盤、磁光盤、半導(dǎo)體存儲器等等,根據(jù)需要安裝在驅(qū)動器510上,以便于從其上讀出的計算機(jī)程序根據(jù)需要被安裝入存儲部分508。
      [0078]特別地,根據(jù)本公開的實施例,上文參考流程圖描述的過程可以被實現(xiàn)為計算機(jī)軟件程序。例如,本公開的實施例包括一種計算機(jī)程序產(chǎn)品,其包括有形地包含在機(jī)器可讀介質(zhì)上的計算機(jī)程序,所述計算機(jī)程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實施例中,該計算機(jī)程序可以通過通信部分509從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)511被安裝。
      [0079]附圖中的流程圖和框圖,圖示了按照本申請各種實施例的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機(jī)指令的組合來實現(xiàn)。
      [0080]描述于本申請實施例中所涉及到的單元可以通過軟件的方式實現(xiàn),也可以通過硬件的方式來實現(xiàn)。所描述的單元也可以設(shè)置在處理器中,例如,可以描述為:一種處理器包括加載單元、執(zhí)行單元、接收單元和修復(fù)單元。其中,這些單元的名稱在某種情況下并不構(gòu)成對該單元本身的限定,例如,加載單元還可以被描述為“加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁的單元”。
      [0081]作為另一方面,本申請還提供了一種非易失性計算機(jī)存儲介質(zhì),該非易失性計算機(jī)存儲介質(zhì)可以是上述實施例中所述裝置中所包含的非易失性計算機(jī)存儲介質(zhì);也可以是單獨存在,未裝配入終端中的非易失性計算機(jī)存儲介質(zhì)。上述非易失性計算機(jī)存儲介質(zhì)存儲有一個或者多個程序,當(dāng)所述一個或者多個程序被一個設(shè)備執(zhí)行時,使得所述設(shè)備:加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁,所述補(bǔ)丁是以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的;使用內(nèi)存安全語言引擎執(zhí)行所述補(bǔ)丁;接收執(zhí)行所述補(bǔ)丁過程中調(diào)用修復(fù)用接口對所述目標(biāo)函數(shù)進(jìn)行修復(fù)的調(diào)用請求,其中,修復(fù)用接口是所述內(nèi)存安全語言引擎所提供的、用于對函數(shù)進(jìn)行修復(fù)的接口;執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù)。
      [0082]以上描述僅為本申請的較佳實施例以及對所運(yùn)用技術(shù)原理的說明。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本申請中所涉及的發(fā)明范圍,并不限于上述技術(shù)特征的特定組合而成的技術(shù)方案,同時也應(yīng)涵蓋在不脫離所述發(fā)明構(gòu)思的情況下,由上述技術(shù)特征或其等同特征進(jìn)行任意組合而形成的其它技術(shù)方案。例如上述特征與本申請中公開的(但不限于)具有類似功能的技術(shù)特征進(jìn)行互相替換而形成的技術(shù)方案。
      【主權(quán)項】
      1.一種內(nèi)核修復(fù)方法,其特征在于,所述方法包括: 加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁,所述補(bǔ)丁是以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的; 使用內(nèi)存安全語言引擎執(zhí)行所述補(bǔ)??; 接收執(zhí)行所述補(bǔ)丁過程中調(diào)用修復(fù)用接口對所述目標(biāo)函數(shù)進(jìn)行修復(fù)的調(diào)用請求,其中,修復(fù)用接口是所述內(nèi)存安全語言引擎所提供的、用于對函數(shù)進(jìn)行修復(fù)的接口; 執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù)。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù),包括: 在所述目標(biāo)函數(shù)的起始位置,插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,所述檢查函數(shù)用于檢查函數(shù)的入口參數(shù)是否異常。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù): 對于所述目標(biāo)函數(shù)調(diào)用的函數(shù),在函數(shù)的起始位置插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,所述檢查函數(shù)用于檢查執(zhí)行狀態(tài)和/或函數(shù)的入口參數(shù)是否異常。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù): 對于所述目標(biāo)函數(shù)調(diào)用的函數(shù),在函數(shù)中返回指令前的位置,插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,所述檢查函數(shù)用于檢查執(zhí)行狀態(tài)是否異常。5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,在所述插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用之前,所述執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù)還包括: 確定所述目標(biāo)函數(shù)調(diào)用的函數(shù)是返回值為執(zhí)行結(jié)果狀態(tài)的函數(shù)。6.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁之前,所述方法還包括: 對所述補(bǔ)丁進(jìn)行簽名驗證,以確定所述補(bǔ)丁的合法性。7.—種內(nèi)核修復(fù)裝置,其特征在于,所述裝置包括: 加載單元,用于加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁,所述補(bǔ)丁是以內(nèi)存安全語言或非內(nèi)存安全語言的內(nèi)存安全語言子集進(jìn)行編寫的; 執(zhí)行單元,用于使用內(nèi)存安全語言引擎執(zhí)行所述補(bǔ)丁 ; 接收單元,用于接收執(zhí)行所述補(bǔ)丁過程中調(diào)用修復(fù)用接口對所述目標(biāo)函數(shù)進(jìn)行修復(fù)的調(diào)用請求,其中,修復(fù)用接口是所述內(nèi)存安全語言引擎所提供的、用于對函數(shù)進(jìn)行修復(fù)的接P; 修復(fù)單元,用于執(zhí)行所請求的修復(fù)用接口以修復(fù)所述目標(biāo)函數(shù)。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述修復(fù)單元進(jìn)一步用于: 在所述目標(biāo)函數(shù)的起始位置,插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,所述檢查函數(shù)用于檢查函數(shù)的入口參數(shù)是否異常。9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述修復(fù)單元進(jìn)一步用于: 對于所述目標(biāo)函數(shù)調(diào)用的函數(shù),在函數(shù)的起始位置插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,所述檢查函數(shù)用于檢查執(zhí)行狀態(tài)和/或函數(shù)的入口參數(shù)是否異常。10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述修復(fù)單元進(jìn)一步用于: 對于所述目標(biāo)函數(shù)調(diào)用的函數(shù),在函數(shù)中返回指令前的位置,插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用,所述檢查函數(shù)用于檢查執(zhí)行狀態(tài)是否異常。11.根據(jù)權(quán)利要求9或10所述的裝置,其特征在于,所述修復(fù)單元還用于: 在所述插入對所述補(bǔ)丁提供的檢查函數(shù)的調(diào)用之前,確定所述目標(biāo)函數(shù)調(diào)用的函數(shù)是返回值為執(zhí)行結(jié)果狀態(tài)的函數(shù)。12.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 驗證單元,用于在所述加載用于對內(nèi)核中待修復(fù)的目標(biāo)函數(shù)進(jìn)行修復(fù)的補(bǔ)丁之前,對所述補(bǔ)丁進(jìn)行簽名驗證,以確定所述補(bǔ)丁的合法性。
      【文檔編號】G06F21/56GK106055979SQ201610350050
      【公開日】2016年10月26日
      【申請日】2016年5月24日
      【發(fā)明人】張煜龍, 包沉浮, 韋韜
      【申請人】百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1