• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種熱補丁注入方法及裝置制造方法及圖紙

    技術編號:15690615 閱讀:79 留言:0更新日期:2017-06-24 03:09
    本發明專利技術公開了一種熱補丁注入方法及裝置,涉及計算機軟件領域,該方法將補丁代碼加載到目標進程中,在確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行時,將該N行指令修改為跳轉到補丁代碼的首地址的指令,在運行過程中即可實現由被替換的代碼跳轉到補丁代碼,從而實現熱補丁注入,不需要被注入的進程中有事先編譯,也減小了熱補丁注入時的消耗。由于在將該N行指令修改為跳轉到補丁代碼的首地址的指令前,確定了被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,也減小了補丁加載時的運行風險。

    Hot patch injection method and device

    The invention discloses a hot patch injection method and device, relates to the field of computer software, the patch code loaded into the target process, first determine the address in the code to be replaced in the continuous N commands not by any thread running, the N commands for modifying jump to patch code the address of the first instruction in the process of operation can be realized by the replaced code jump to patch code, so as to realize the hot patch implantation, do not need to be injected into the process of the pre compiled, also reduce the heat consumption when injected into the patch. Because in the N command line modified to jump to the address of the first patch code before the instruction is determined to be replaced in the code first starting address for continuous N instruction is not any thread running, also reduce the operation risk of the patch loading.

    【技術實現步驟摘要】
    一種熱補丁注入方法及裝置
    本專利技術涉及計算機軟件領域,尤其涉及一種熱補丁注入方法及裝置。
    技術介紹
    對于正在運行的軟件系統,想要進行一些功能擴展或者修補一些軟件問題,而又要求不能復位系統,這就需要給系統打熱補丁。熱補丁就是把原來軟件系統中的想要替換的函數單獨修改重新編譯組成熱補丁單元,再通過熱補丁加載工具加載到運行的目標軟件系統中,替換原始函數。然而,目前使用的熱補丁技術有兩個問題,一是需要在被注入的進程中有事先編譯進去的代碼負責補丁函數對被補函數的替換;二是當將被替換函數的頭幾條指令修改為跳轉到新的補丁函數時,補丁加載存在風險,解決這個風險的現有方案都存在應用面窄,不通用,增加額外的內存與cpu的消耗的問題。
    技術實現思路
    本專利技術提供一種熱補丁注入方法及裝置,以實現不依賴被注入的進程中有事先編譯進去的代碼進行熱補丁注入,并減小熱補丁注入時的消耗。依據本專利技術的一個方面,提供一種熱補丁注入方法,包括:將補丁代碼加載到目標進程中;確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,所述N大于或等于目標體系結構中跳轉到內存任意地址所需要的最小指令數;將所述N行指令修改為跳轉到補丁代碼的首地址的指令。進一步,所述確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,具體包括:暫停目標進程內的所有線程;確定被替換的代碼中首地址開始的連續N行指令為目標指令,并將該目標指令之外的至少一條指令修改為異常指令;讓所有指針處于目標指令中的線程繼續執行,當所有線程均被異常捕獲工具捕捉時,確定所述目標指令沒有被任何線程運行;此時,所述將所述N行指令修改為跳轉到補丁代碼的首地址的指令后,還包括:將所述修改為異常指令的至少一條指令恢復為原指令;繼續執行目標進程內的所有線程。更進一步,所述將該目標指令之外的至少一條指令修改為異常指令,具體包括:將該目標指令的后一條指令修改為異常指令。較佳的,所述將補丁代碼加載到目標進程中,具體包括:通過代碼注入將補丁代碼加載到目標進程中。本專利技術實施例還相應提供一種熱補丁注入裝置,包括:加載單元,用于將補丁代碼加載到目標進程中;確定單元,用于確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,所述N大于或等于目標體系結構中跳轉到內存任意地址所需要的最小指令數;修改單元,用于將所述N行指令修改為跳轉到補丁代碼的首地址的指令。進一步,所述確定單元具體用于:暫停目標進程內的所有線程;確定被替換的代碼中首地址開始的連續N行指令為目標指令,并將該目標指令之外的至少一條指令修改為異常指令;讓所有指針處于目標指令中的線程繼續執行,當所有線程均被異常捕獲工具捕捉時,確定所述目標指令沒有被任何線程運行;此時,所述修改單元還用于:將所述N行指令修改為跳轉到補丁代碼的首地址的指令后,將所述修改為異常指令的至少一條指令恢復為原指令,并繼續執行目標進程內的所有線程。更進一步,所述確定單元將該目標指令之外的至少一條指令修改為異常指令,具體包括:將該目標指令的后一條指令修改為異常指令。較佳的,所述加載單元具體用于:通過代碼注入將補丁代碼加載到目標進程中。本專利技術有益效果如下:通過本專利技術實施例提供的熱補丁注入方法及裝置,將補丁代碼加載到目標進程中,在確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行時,將該N行指令修改為跳轉到補丁代碼的首地址的指令,在運行過程中即可實現由被替換的代碼跳轉到補丁代碼,從而實現熱補丁注入,不需要被注入的進程中有事先編譯,也減小了熱補丁注入時的消耗。由于在將該N行指令修改為跳轉到補丁代碼的首地址的指令前,確定了被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,也減小了補丁加載時的運行風險。附圖說明為了更清楚地說明本專利技術實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本專利技術的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本專利技術實施例提供的熱補丁注入方法流程圖;圖2為本專利技術實施例提供的具體實例中的熱補丁注入方法流程圖;圖3為本專利技術實施例提供的熱補丁注入裝置結構示意圖。具體實施方式下面將結合本專利技術實施例中的附圖,對本專利技術實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本專利技術一部分實施例,而不是全部的實施例。基于本專利技術中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本專利技術保護的范圍。如圖1所示,本專利技術實施例提供的熱補丁注入方法,包括:步驟S101、將補丁代碼加載到目標進程中;步驟S102、確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,N大于或等于目標體系結構中跳轉到內存任意地址所需要的最小指令數;步驟S103、將N行指令修改為跳轉到補丁代碼的首地址的指令。由于在確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行時,將該N行指令修改為跳轉到補丁代碼的首地址的指令,在運行過程中即可實現由被替換的代碼跳轉到補丁代碼,從而實現熱補丁注入,不需要被注入的進程中有事先編譯,也減小了熱補丁注入時的消耗。由于在將該N行指令修改為跳轉到補丁代碼的首地址的指令前,確定了被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,也減小了補丁加載時的運行風險。該方法可以由程序員執行,也可以由熱補丁注入工具或者包含熱補丁注入工具的裝置來執行。具體的,可以利用異常捕獲工具來確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,此時,步驟S102中,確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,具體包括:暫停目標進程內的所有線程;確定被替換的代碼中首地址開始的連續N行指令為目標指令,并將該目標指令之外的至少一條指令修改為異常指令;讓所有指針處于目標指令中的線程繼續執行,當所有線程均被異常捕獲工具捕捉時,確定目標指令沒有被任何線程運行;此時,步驟S103中,將N行指令修改為跳轉到補丁代碼的首地址的指令后,還包括:將修改為異常指令的至少一條指令恢復為原指令;繼續執行目標進程內的所有線程。當然,本領域技術人員也可以采用其它的方法或利用其它工具來確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,此處不再一一說明。進一步,為提高異常捕獲的效率,可以將該目標指令的后一條指令修改為異常指令,此時異常捕獲的效率較高,修改量較少。此時,將該目標指令之外的至少一條指令修改為異常指令,具體包括:將該目標指令的后一條指令修改為異常指令。較佳的,可以通過代碼注入等工具來實現補丁代碼的加載,此時,步驟S101中,將補丁代碼加載到目標進程中,具體包括:通過代碼注入將補丁代碼加載到目標進程中。下面,通過一個具體的實例對本專利技術實施例提供的熱補丁注入方法進行說明:下面假設目的進程PROC中存在函數FUNC1,熱補丁PATCH模塊中存在函數FUNC2,目標體系結構中跳轉到內存任意地址需要N條指令,欲將FUNC1替換為補丁函數FUNC2,如圖2所示,詳細實施步驟如下:步驟S201、通過目標操作系統提供的基礎api組合實現代碼注入,把補丁模塊PATCH加載到PROC的本文檔來自技高網...
    一種熱補丁注入方法及裝置

    【技術保護點】
    一種熱補丁注入方法,其特征在于,包括:將補丁代碼加載到目標進程中;確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,所述N大于或等于目標體系結構中跳轉到內存任意地址所需要的最小指令數;將所述N行指令修改為跳轉到補丁代碼的首地址的指令。

    【技術特征摘要】
    1.一種熱補丁注入方法,其特征在于,包括:將補丁代碼加載到目標進程中;確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,所述N大于或等于目標體系結構中跳轉到內存任意地址所需要的最小指令數;將所述N行指令修改為跳轉到補丁代碼的首地址的指令。2.如權利要求1所述的方法,其特征在于,所述確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,具體包括:暫停目標進程內的所有線程;確定被替換的代碼中首地址開始的連續N行指令為目標指令,并將該目標指令之外的至少一條指令修改為異常指令;讓所有指針處于目標指令中的線程繼續執行,當所有線程均被異常捕獲工具捕捉時,確定所述目標指令沒有被任何線程運行;所述將所述N行指令修改為跳轉到補丁代碼的首地址的指令后,還包括:將所述修改為異常指令的至少一條指令恢復為原指令;繼續執行目標進程內的所有線程。3.如權利要求2所述的方法,其特征在于,所述將該目標指令之外的至少一條指令修改為異常指令,具體包括:將該目標指令的后一條指令修改為異常指令。4.如權利要求1所述的方法,其特征在于,所述將補丁代碼加載到目標進程中,具體包括:通過代碼注入將補丁代碼加載到目標進程...

    【專利技術屬性】
    技術研發人員:段晶晶李雙全謝柏利
    申請(專利權)人:中興通訊股份有限公司
    類型:發明
    國別省市:廣東,44

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 在线A级毛片无码免费真人| 伊人久久大香线蕉无码麻豆| 小泽玛丽无码视频一区| 一区二区三区无码被窝影院| 久久久久精品国产亚洲AV无码 | 无码高潮爽到爆的喷水视频app| 未满小14洗澡无码视频网站| 人妻丰满熟妞av无码区| 日韩精品无码免费视频| V一区无码内射国产| 亚洲国产av高清无码| 国产产无码乱码精品久久鸭| av无码一区二区三区| 中文字幕人成无码人妻| 亚洲AV无码一区二区一二区| 国产精品无码久久综合| 狠狠躁狠狠爱免费视频无码| 精品人妻少妇嫩草AV无码专区| 亚洲A∨无码无在线观看| 无码少妇精品一区二区免费动态| 内射精品无码中文字幕| 亚洲精品无码久久久久sm| 国产成年无码v片在线| 日韩AV无码一区二区三区不卡| 日韩精品无码永久免费网站| 国产精品无码v在线观看| 亚洲精品无码成人片在线观看| 国产AV天堂无码一区二区三区| 色综合色国产热无码一| 成人无码WWW免费视频| 日韩a级无码免费视频| 无码av免费网站| 亚洲色偷拍区另类无码专区| 久久无码专区国产精品| MM1313亚洲精品无码久久| 亚洲av无码不卡一区二区三区 | 一本一道av中文字幕无码| 久久无码人妻精品一区二区三区 | 无码熟妇人妻AV影音先锋| 无码人妻AⅤ一区二区三区| 精品亚洲AV无码一区二区 |