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行指令修改為跳轉到補丁代碼的首地址的指令。
【技術特征摘要】
1.一種熱補丁注入方法,其特征在于,包括:將補丁代碼加載到目標進程中;確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,所述N大于或等于目標體系結構中跳轉到內存任意地址所需要的最小指令數;將所述N行指令修改為跳轉到補丁代碼的首地址的指令。2.如權利要求1所述的方法,其特征在于,所述確定被替換的代碼中首地址開始的連續N行指令沒有被任何線程運行,具體包括:暫停目標進程內的所有線程;確定被替換的代碼中首地址開始的連續N行指令為目標指令,并將該目標指令之外的至少一條指令修改為異常指令;讓所有指針處于目標指令中的線程繼續執行,當所有線程均被異常捕獲工具捕捉時,確定所述目標指令沒有被任何線程運行;所述將所述N行指令修改為跳轉到補丁代碼的首地址的指令后,還包括:將所述修改為異常指令的至少一條指令恢復為原指令;繼續執行目標進程內的所有線程。3.如權利要求2所述的方法,其特征在于,所述將該目標指令之外的至少一條指令修改為異常指令,具體包括:將該目標指令的后一條指令修改為異常指令。4.如權利要求1所述的方法,其特征在于,所述將補丁代碼加載到目標進程中,具體包括:通過代碼注入將補丁代碼加載到目標進程...
【專利技術屬性】
技術研發人員:段晶晶,李雙全,謝柏利,
申請(專利權)人:中興通訊股份有限公司,
類型:發明
國別省市:廣東,44
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。