[發明專利]補丁程序編譯方法、程序修補方法及相關設備在審
| 申請號: | 202110794690.2 | 申請日: | 2021-07-14 |
| 公開(公告)號: | CN113504934A | 公開(公告)日: | 2021-10-15 |
| 發明(設計)人: | 劉長琦 | 申請(專利權)人: | 安徽聆思智能科技有限公司;上海聆芯科技有限公司 |
| 主分類號: | G06F8/658 | 分類號: | G06F8/658;G06F8/41 |
| 代理公司: | 北京集佳知識產權代理有限公司 11227 | 代理人: | 張影 |
| 地址: | 230601 安徽省合肥市經濟技術開*** | 國省代碼: | 安徽;34 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 補丁 程序 編譯 方法 修補 相關 設備 | ||
1.一種補丁程序編譯方法,其特征在于,包括:
獲取目標符號信息,所述目標符號信息中包含目標程序中的函數的名稱信息和地址信息,和/或包含目標程序中的變量的名稱信息和地址信息;
對補丁程序進行編譯處理,所述補丁程序中包含調用所述目標程序中的函數的程序代碼,和/或包含引用所述目標程序中的變量的程序代碼;
根據所述目標符號信息,對編譯后的所述補丁程序進行鏈接處理,使所述補丁程序鏈接至所述目標程序中的函數和/或變量。
2.根據權利要求1所述的方法,其特征在于,所述補丁程序中包括程序初始化函數,用于對所述補丁程序進行初始化,以及將所述補丁程序中的函數地址與所述目標程序中的待修補函數的函數指針變量綁定。
3.根據權利要求1所述的方法,其特征在于,所述獲取目標符號信息,包括:
從目標程序的編譯結果中獲取目標程序的符號文件,所述符號文件中至少包括所述目標程序中的各個函數和/或變量的名稱,以及各個函數和/或變量的地址;
根據所述符號文件,生成目標符號信息。
4.根據權利要求1所述的方法,其特征在于,根據所述目標符號信息,對編譯后的所述補丁程序進行鏈接處理,包括:
利用所述目標符號信息,對所述補丁程序的鏈接腳本文件進行更新;
利用更新后的鏈接腳本文件,對編譯后的所述補丁程序進行鏈接處理。
5.一種程序修補方法,其特征在于,包括:
當目標程序啟動運行時,判斷設定存儲地址是否存儲有效的目標補丁程序;
其中,所述目標補丁程序中包含調用所述目標程序中的函數的程序代碼,和/或包含引用所述目標程序中的變量的程序代碼,并且,所述目標補丁程序根據目標符號信息進行鏈接處理得到,所述目標符號信息中包含所述目標程序中的函數的名稱信息和地址信息,和/或包含所述目標程序中的變量的名稱信息和地址信息;
如果所述設定存儲地址存儲有效的目標補丁程序,則利用該目標補丁程序對所述目標程序進行修補。
6.根據權利要求5所述的方法,其特征在于,所述目標補丁程序包括程序初始化函數,用于對所述目標補丁程序進行初始化,以及將所述目標補丁程序中的函數地址與所述目標程序中的待修補函數的函數指針變量綁定;
其中,有效的目標補丁程序中的所述程序初始化函數的入口地址為所述設定存儲地址。
7.根據權利要求6所述的方法,其特征在于,所述判斷設定存儲地址是否存儲有效的目標補丁程序,包括:
檢測在設定存儲地址處,是否有目標補丁程序的程序初始化函數的入口地址為所述設定存儲地址;
如果有目標補丁程序的程序初始化函數的入口地址為所述設定存儲地址,則確定所述設定存儲地址存儲有效的目標補丁程序。
8.根據權利要求6所述的方法,其特征在于,所述目標程序中的待修補函數入口預先設置有函數指針變量;
所述利用該目標補丁程序對所述目標程序進行修補,包括:
設置所述目標程序中的待修補函數入口處的函數指針變量,指向該目標補丁程序中的函數地址。
9.根據權利要求8所述的方法,其特征在于,所述設置所述目標程序中的待修補函數入口處的函數指針變量,指向所述目標補丁程序中的函數地址,包括:
通過調用所述目標補丁程序中的程序初始化函數,確定所述目標補丁程序中的函數地址與所述目標程序中的待修補函數的函數指針變量的綁定關系;
根據所述目標補丁程序中的函數地址與所述目標程序中的待修補函數的函數指針變量的綁定關系,調整所述目標程序中的待修補函數入口處的函數指針變量,指向與其綁定的所述目標補丁程序中的函數地址。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于安徽聆思智能科技有限公司;上海聆芯科技有限公司,未經安徽聆思智能科技有限公司;上海聆芯科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110794690.2/1.html,轉載請聲明來源鉆瓜專利網。





