[發明專利]目標應用的熱更新方法和裝置、存儲介質和電子設備有效
| 申請號: | 202010628955.7 | 申請日: | 2020-07-02 |
| 公開(公告)號: | CN111666096B | 公開(公告)日: | 2021-03-16 |
| 發明(設計)人: | 劉陽;張俊峰;葉崢鋮;周長壽 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F8/656 | 分類號: | G06F8/656;G06F8/41 |
| 代理公司: | 北京康信知識產權代理有限責任公司 11240 | 代理人: | 王曉婷 |
| 地址: | 518000 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 目標 應用 更新 方法 裝置 存儲 介質 電子設備 | ||
1.一種目標應用的熱更新方法,其特征在于,包括:
在當前運行的目標應用中的第一函數出現問題的情況下,使用鏈接腳本生成器根據目標應用的原始二進制文件生成目標鏈接腳本,包括將原始進程中的代碼段起始地址到數據段起始地址所占的空間大小、以及鏈接腳本模版中的代碼段起始地址分別存儲在所述鏈接腳本模版中,得到所述目標鏈接腳本,對第一函數的補丁代碼進行編譯,得到目標文件,其中,所述第一函數的補丁代碼用于修復所述第一函數出現的所述問題,所述原始二進制文件中的數據段在所述目標鏈接腳本中的起始地址為X+N*M,所述目標鏈接腳本在所述鏈接腳本模版中的起始地址為X+i*M,1≤iN,X為所述鏈接腳本模版中的代碼段起始地址,M為原始進程中的代碼段起始地址到數據段起始地址所占的空間大小;
根據所述目標鏈接腳本對所述目標文件進行鏈接,得到目標二進制文件;
從所述目標二進制文件中抽取出目標代碼段,并將所述目標代碼段生成目標補丁包;
將所述目標補丁包加載到目標進程地址空間中的目標預留地址,其中,所述目標進程地址空間用于存儲所述當前運行的所述目標應用中的代碼段和數據段;
在所述第一函數的入口處指令被修改為目標跳轉指令、且運行所述目標應用的過程中執行到所述第一函數的情況下,通過所述目標跳轉指令跳轉到所述目標預留地址,執行所述目標補丁包中的所述目標代碼段,其中,所述目標跳轉指令用于跳轉到所述目標預留地址,并執行所述目標代碼段。
2.根據權利要求1所述的方法,其特征在于,所述方法還包括:
獲取所述目標進程地址空間的修改權限;
在獲取到所述修改權限、且所述目標進程地址空間的訪問權限為只讀權限的情況下,將所述目標進程地址空間的訪問權限修改為允許寫權限;
在所述目標進程地址空間的訪問權限為所述允許寫權限的情況下,將所述第一函數的入口處指令修改為所述目標跳轉指令。
3.根據權利要求2所述的方法,其特征在于,所述將所述目標進程地址空間的訪問權限修改為允許寫權限,包括:
在所述第一函數在所述目標進程地址空間中所在的內存頁為第一內存頁的情況下,將所述第一內存頁的訪問權限修改為所述允許寫權限。
4.根據權利要求1所述的方法,其特征在于,所述將所述目標補丁包加載到目標進程地址空間中的目標預留地址,包括:
將所述目標補丁包映射到所述目標預留地址。
5.一種目標應用的熱更新裝置,其特征在于,包括:
第一處理單元,用于在當前運行的目標應用中的第一函數出現問題的情況下,使用鏈接腳本生成器根據目標應用的原始二進制文件生成目標鏈接腳本,對第一函數的補丁代碼進行編譯,得到目標文件,其中,所述第一函數的補丁代碼用于修復所述第一函數出現的所述問題;
鏈接單元,用于根據所述目標鏈接腳本對所述目標文件進行鏈接,得到目標二進制文件;
第二處理單元,用于從所述目標二進制文件中抽取出目標代碼段,并將所述目標代碼段生成目標補丁包;
加載單元,用于將所述目標補丁包加載到目標進程地址空間中的目標預留地址,其中,所述目標進程地址空間用于存儲所述當前運行的所述目標應用中的代碼段和數據段;
第三處理單元,用于在所述第一函數的入口處指令被修改為目標跳轉指令、且運行所述目標應用的過程中執行到所述第一函數的情況下,通過所述目標跳轉指令跳轉到所述目標預留地址,執行所述目標補丁包中的所述目標代碼段,其中,所述目標跳轉指令用于跳轉到所述目標預留地址,并執行所述目標代碼段;
所述第一處理單元包括生成模塊,用于將原始進程中的代碼段起始地址到數據段起始地址所占的空間大小、以及鏈接腳本模版中的代碼段起始地址分別存儲在所述鏈接腳本模版中,得到所述目標鏈接腳本,其中,所述原始二進制文件中的數據段在所述目標鏈接腳本中的起始地址為X+N*M,所述目標鏈接腳本在所述鏈接腳本模版中的起始地址為X+i*M,1≤iN,X為所述鏈接腳本模版中的代碼段起始地址,M為原始進程中的代碼段起始地址到數據段起始地址所占的空間大小。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010628955.7/1.html,轉載請聲明來源鉆瓜專利網。





