[發(fā)明專(zhuān)利]補(bǔ)丁加載方法及裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201410033575.3 | 申請(qǐng)日: | 2014-01-23 |
| 公開(kāi)(公告)號(hào): | CN103744709B | 公開(kāi)(公告)日: | 2017-02-15 |
| 發(fā)明(設(shè)計(jì))人: | 劉中柱 | 申請(qǐng)(專(zhuān)利權(quán))人: | 華為技術(shù)有限公司 |
| 主分類(lèi)號(hào): | G06F9/445 | 分類(lèi)號(hào): | G06F9/445 |
| 代理公司: | 北京同立鈞成知識(shí)產(chǎn)權(quán)代理有限公司11205 | 代理人: | 劉芳 |
| 地址: | 518129 廣東*** | 國(guó)省代碼: | 廣東;44 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 補(bǔ)丁 加載 方法 裝置 | ||
1.一種補(bǔ)丁加載方法,其特征在于,包括:
編譯補(bǔ)丁代碼生成可重定位的動(dòng)態(tài)鏈接庫(kù),所述補(bǔ)丁代碼為以補(bǔ)丁函數(shù)為單位的指令;
解析包含所述補(bǔ)丁代碼的補(bǔ)丁鏡像文件,獲取所述補(bǔ)丁鏡像文件中的重定位函數(shù)信息,建立所述補(bǔ)丁鏡像文件和目標(biāo)進(jìn)程的連接關(guān)系,所述目標(biāo)進(jìn)程為加載所述補(bǔ)丁代碼后的應(yīng)用程序在運(yùn)行時(shí)所處的進(jìn)程;
根據(jù)所述補(bǔ)丁鏡像文件和目標(biāo)進(jìn)程的連接關(guān)系,修改原有函數(shù)入口指令,跳轉(zhuǎn)執(zhí)行所述補(bǔ)丁函數(shù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述解析包含所述補(bǔ)丁代碼的補(bǔ)丁鏡像文件,獲取所述補(bǔ)丁鏡像文件中的重定位函數(shù)信息,建立所述補(bǔ)丁鏡像文件和目標(biāo)進(jìn)程的連接關(guān)系之前,所述方法還包括:
找出目標(biāo)進(jìn)程中加載的鏡像文件,采用可執(zhí)行的鏈接格式ELF解析所述鏡像文件,獲取所述鏡像文件中的原有函數(shù)和原有全局變量對(duì)應(yīng)的名稱(chēng)和絕對(duì)地址,得到所述目標(biāo)進(jìn)程的符號(hào)表,所述符號(hào)表包含所述原有函數(shù)和所述原有全局變量對(duì)應(yīng)的名稱(chēng)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述解析包含所述補(bǔ)丁代碼的補(bǔ)丁鏡像文件,獲取所述補(bǔ)丁鏡像文件中的重定位函數(shù)信息,建立所述補(bǔ)丁鏡像文件和目標(biāo)進(jìn)程的連接關(guān)系,包括:
分析所述補(bǔ)丁鏡像文件,記錄所述補(bǔ)丁鏡像文件中的補(bǔ)丁函數(shù)和補(bǔ)丁全局變量的名稱(chēng)和相對(duì)地址;
分析所述補(bǔ)丁鏡像文件中的重定位段,獲取重定位函數(shù)和重定位全局變量的名稱(chēng)和相對(duì)地址;
根據(jù)所述重定位函數(shù)和重定位全局變量的名稱(chēng)和相對(duì)地址,建立所述補(bǔ)丁鏡像文件和目標(biāo)進(jìn)程的連接關(guān)系。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述補(bǔ)丁鏡像文件和目標(biāo)進(jìn)程的連接關(guān)系,修改原有函數(shù)入口指令,跳轉(zhuǎn)執(zhí)行所述補(bǔ)丁函數(shù),包括:
在所述目標(biāo)進(jìn)程的符號(hào)表中,查找所述重定位函數(shù)名稱(chēng)和/或所述重定位全局變量名稱(chēng);
若確定所述重定位函數(shù)名稱(chēng)和所述重定位全局變量名稱(chēng)存在于所述目標(biāo)進(jìn)程中,則將其標(biāo)記為目標(biāo)進(jìn)程內(nèi)函數(shù)或目標(biāo)進(jìn)程內(nèi)變量;
將所述目標(biāo)進(jìn)程內(nèi)函數(shù)和/或目標(biāo)進(jìn)程內(nèi)變量從所述重定位段中移除,并調(diào)用系統(tǒng)的動(dòng)態(tài)鏈接庫(kù)加載函數(shù)重定位所述動(dòng)態(tài)鏈接庫(kù)中的符號(hào);以及,
根據(jù)所述補(bǔ)丁鏡像文件的加載內(nèi)存地址及所述目標(biāo)進(jìn)程內(nèi)函數(shù)和所述目標(biāo)進(jìn)程內(nèi)變量的相對(duì)地址,得到所述目標(biāo)進(jìn)程內(nèi)函數(shù)和所述目標(biāo)進(jìn)程內(nèi)變量的重定位地址并寫(xiě)入;
修改所述原有函數(shù)的入口指令,跳轉(zhuǎn)執(zhí)行所述補(bǔ)丁函數(shù)。
5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述補(bǔ)丁鏡像文件和目標(biāo)進(jìn)程的連接關(guān)系,修改所述原有函數(shù)的入口指令,跳轉(zhuǎn)執(zhí)行所述補(bǔ)丁函數(shù)之前,所述方法還包括:
調(diào)用補(bǔ)丁初始化入口函數(shù),完成所述補(bǔ)丁鏡像文件的初始化。
6.一種補(bǔ)丁加載裝置,其特征在于,包括:
編譯模塊,用于編譯補(bǔ)丁代碼生成可重定位的動(dòng)態(tài)鏈接庫(kù),所述補(bǔ)丁代碼為以補(bǔ)丁函數(shù)為單位的指令;
加載模塊,用于解析包含所述補(bǔ)丁代碼的補(bǔ)丁鏡像文件,獲取所述補(bǔ)丁鏡像文件中的重定位函數(shù)信息,建立所述補(bǔ)丁鏡像文件和目標(biāo)進(jìn)程的連接關(guān)系,所述目標(biāo)進(jìn)程為加載所述補(bǔ)丁代碼后的應(yīng)用程序在運(yùn)行時(shí)所處的進(jìn)程;及,根據(jù)所述補(bǔ)丁鏡像文件和目標(biāo)進(jìn)程的連接關(guān)系,修改原有函數(shù)入口指令,跳轉(zhuǎn)執(zhí)行所述補(bǔ)丁函數(shù)。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述加載模塊還用于:
在所述解析包含所述補(bǔ)丁代碼的補(bǔ)丁鏡像文件,獲取所述補(bǔ)丁鏡像文件中的重定位函數(shù)信息,建立所述補(bǔ)丁鏡像文件和目標(biāo)進(jìn)程的連接關(guān)系之前,找出目標(biāo)進(jìn)程中加載的鏡像文件,采用可執(zhí)行的鏈接格式ELF解析所述鏡像文件,獲取所述鏡像文件中的原有函數(shù)和原有全局變量對(duì)應(yīng)的名稱(chēng)和絕對(duì)地址,得到所述目標(biāo)進(jìn)程的符號(hào)表,所述符號(hào)表包含所述原有函數(shù)和所述原有全局變量對(duì)應(yīng)的名稱(chēng)。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述加載模塊具體用于:
分析所述補(bǔ)丁鏡像文件,記錄所述補(bǔ)丁鏡像文件中的補(bǔ)丁函數(shù)和補(bǔ)丁全局變量的名稱(chēng)和相對(duì)地址;
分析所述補(bǔ)丁鏡像文件中的重定位段,獲取重定位函數(shù)和重定位全局變量的名稱(chēng)和相對(duì)地址;
根據(jù)所述重定位函數(shù)和重定位全局變量的名稱(chēng)和相對(duì)地址,建立所述補(bǔ)丁鏡像文件和目標(biāo)進(jìn)程的連接關(guān)系。
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于華為技術(shù)有限公司,未經(jīng)華為技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410033575.3/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 同類(lèi)專(zhuān)利
- 專(zhuān)利分類(lèi)
- 一種數(shù)據(jù)庫(kù)讀寫(xiě)分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線(xiàn)程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)
- 光源裝置、照明裝置、液晶裝置和電子裝置
- 預(yù)測(cè)裝置、編輯裝置、逆預(yù)測(cè)裝置、解碼裝置及運(yùn)算裝置
- 圖像形成裝置、定影裝置、遮光裝置以及保持裝置
- 打印裝置、讀取裝置、復(fù)合裝置以及打印裝置、讀取裝置、復(fù)合裝置的控制方法
- 電子裝置、光盤(pán)裝置、顯示裝置和攝像裝置
- 光源裝置、照明裝置、曝光裝置和裝置制造方法
- 用戶(hù)裝置、裝置對(duì)裝置用戶(hù)裝置、后端裝置及其定位方法
- 遙控裝置、通信裝置、可變裝置及照明裝置
- 透鏡裝置、攝像裝置、處理裝置和相機(jī)裝置
- 抖動(dòng)校正裝置、驅(qū)動(dòng)裝置、成像裝置、和電子裝置





