[發明專利]動態打補丁的方法和裝置有效
| 申請號: | 201210170368.3 | 申請日: | 2012-05-29 |
| 公開(公告)號: | CN102722387A | 公開(公告)日: | 2012-10-10 |
| 發明(設計)人: | 丁厚永 | 申請(專利權)人: | 華為技術有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445 |
| 代理公司: | 北京弘權知識產權代理事務所(普通合伙) 11363 | 代理人: | 許偉群;郭放 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 動態 打補丁 方法 裝置 | ||
1.一種動態打補丁的方法,其特在在于,包括:
將包含補丁代碼的可重定位的補丁鏡像文件動態加載到待打補丁的目標代碼所處的當前系統;
通過重定位和鏈接所述補丁鏡像文件將所述補丁代碼初始化;
將所述目標代碼的執行跳轉到所述補丁代碼的執行。
2.根據權利要求1所述的動態打補丁的方法,其特征在于,所述將包含補丁代碼的可重定位的補丁鏡像文件動態加載到待打補丁的目標代碼所處的當前系統,具體包括:
在所述當前系統中,
為所述補丁鏡像文件中的文本段和數據段分配運行空間,并且將所述文本段和數據段的內容拷貝到所述運行空間;
為所述補丁鏡像文件中的符號段分配符號空間,并且將所述符號段的內容拷貝到所述符號空間。
3.根據權利要求1或2所述的動態打補丁的方法,其特征在于,所述通過重定位和鏈接所述補丁鏡像文件將所述補丁代碼初始化,具體包括:
以所述運行空間的地址作為起始絕對地址,對所述符號段中的函數和全局變量的符號賦值;
通過所述補丁鏡像文件的重定位段中包含的指令對所述補丁代碼進行重定位;
調用特定的補丁初始化入口函數來初始化所述補丁代碼。
4.根據權利要求3所述的動態打補丁的方法,其特征在于,
所述補丁鏡像文件中包含的在所述目標代碼中不存在的函數的地址等于所述函數的地址加上所述函數在符號段的實際加載地址;
所述補丁鏡像文件中包含的在所述目標代碼中不存在的全局變量的地址等于所述全局變量的地址加上所述全局變量在符號段的實際加載地址。
5.根據權利要求3或4所述的動態打補丁的方法,其特征在于,所述通過所述補丁鏡像文件的重定位段中包含的指令對所述補丁代碼進行重定位,具體包括:
修改所述目標代碼的函數入口指令以跳轉到所述補丁代碼的補丁函數;
將所述補丁鏡像文件中包含的在所述目標代碼中不存在的函數和全局變量的信息添加到當前系統中。
6.一種動態打補丁的裝置,其特征在于,包括:
加載單元,用于將包含補丁代碼的可重定位的補丁鏡像文件動態加載到待打補丁的目標代碼所處的當前系統;
重定位和鏈接單元,用于通過重定位和鏈接所述補丁鏡像文件將所述補丁代碼初始化;
跳轉單元,用于將所述目標代碼的執行跳轉到所述補丁代碼的執行。
7.根據權利要求6所述的動態打補丁的裝置,其特征在于,所述加載單元具體用于:
在所述當前系統中,
為所述補丁鏡像文件中的文本段和數據段分配運行空間,并且將所述文本段和數據段的內容拷貝到所述運行空間;
為所述補丁鏡像文件中的符號段分配符號空間,并且將所述符號段的內容拷貝到所述符號空間。
8.根據權利要求6或7所述的動態打補丁的裝置,其特征在于,所述重定位和鏈接單元具體用于:
以所述運行空間的地址作為起始絕對地址,對所述符號段的函數和全局變量的符號賦值;
通過所述補丁鏡像文件的重定位段中包含的指令對所述補丁代碼進行重定位;
調用特定的補丁初始化入口函數來初始化所述補丁代碼。
9.根據權利要求8所述的動態打補丁的裝置,其特征在于,所述重定位和鏈接單元在通過所述補丁鏡像文件的重定位段中包含的指令對所述補丁代碼進行重定位時,具體用于:
修改所述目標代碼的函數入口指令以跳轉到所述補丁代碼的補丁函數;
將所述補丁鏡像文件中包含的在所述目標代碼中不存在的函數和全局變量的信息添加到當前系統中。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司,未經華為技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210170368.3/1.html,轉載請聲明來源鉆瓜專利網。





