[發明專利]一種動態鏈接庫函數的鉤掛方法、裝置和存儲介質有效
| 申請號: | 201810167443.8 | 申請日: | 2018-02-28 |
| 公開(公告)號: | CN108415739B | 公開(公告)日: | 2020-04-14 |
| 發明(設計)人: | 房偉 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445;G06F8/30 |
| 代理公司: | 北京同達信恒知識產權代理有限公司 11291 | 代理人: | 郭潤湘 |
| 地址: | 518044 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 動態 鏈接 庫函數 方法 裝置 存儲 介質 | ||
1.一種動態鏈接庫函數的鉤掛方法,其特征在于,包括:
在檢測到系統調用目標函數時,根據所述目標函數在內存中存儲的段基址和所述目標函數在可執行與可連接格式文件中的地址偏移信息確定跳轉地址,其中,所述地址偏移信息為根據自定義函數的存儲地址和所述段基址確定出的;
根據跳轉地址執行所述自定義函數得到自定義函數的執行結果;并
在所述自定義函數中調用所述目標函數,返回所述目標函數的執行結果;
按照以下流程確定所述目標函數在可執行與可連接格式文件中的地址偏移信息:
從段類型為動態鏈接類型的段中獲取所有動態結構體信息;
從所述動態結構體信息中,查找動態類型為字符串表地址的動態結構體信息存儲于函數表的基地址中,所述字符串表地址中包含有所有函數名稱的基址;以及
從動態類型為符號哈希表地址的函數結構體信息中讀取函數索引表和函數索引鏈表的哈希值;
根據所述哈希值確定所述目標函數的地址偏移信息。
2.如權利要求1所述的方法,其特征在于,按照以下流程確定所述目標函數在內存中存儲的段基址:
在包含有所述目標函數的可執行與可連接格式文件加載至內存中之后,從本地文件中讀取當前本地運行進程內所有動態鏈接庫函數的內存空間地址范圍,并根據所述目標函數的函數名稱在所述本地文件中查找所述動態鏈接庫函數在內存映射的內存基址;
根據可執行與可連接格式文件結構體,在所述可執行與可連接格式文件中查找包含所述目標函數的段在內存中的大?。?/p>
根據所述內存基址和所述查找到的段大小確定所述段基址。
3.如權利要求2所述的方法,其特征在于,根據可執行與可連接格式文件結構體,在所述可執行與可連接格式文件中查找包含所述目標函數的段在內存中的大小,具體包括:
根據可執行與可連接格式文件結構體中包含的段數量,確定所述可執行與可連接格式文件占據的字節長度;
根據所述字節長度,從所述內存基址開始讀取相應長度的第一數據;
遍歷所述第一數據,獲取段結構體,所述段結構體中包含有段類型和段在內存中的大小;
確定段類型為可加載的,段在內存中的大小為包含所述目標函數的段在內存中的大小。
4.如權利要求1所述的方法,其特征在于,從段類型為動態鏈接類型的段中獲取所有動態結構體信息,具體包括:
確定動態連接類型段的段首地址和段長度,所述段首地址為根據所述段基址和所述段結構體中包含的段起始地址確定出的;
從所述段首地址開始,遍歷所述段長度的第二數據獲得所有動態結構體信息。
5.如權利要求1所述的方法,其特征在于,根據所述哈希值確定所述目標函數的地址偏移信息,具體包括:
針對每一函數,根據該函數對應的哈希值和函數索引表的長度確定該函數在函數表中的偏移量;并
根據所述偏移量從函數表基地址中讀取函數結構體,如果根據所述函數結構體中包含的函數名稱確定為所述目標函數,則確定所述函數結構體中包含的地址偏移信息為所述目標函數的地址偏移信息。
6.一種動態鏈接庫的鉤掛裝置,其特征在于,包括:
第一確定單元,用于在檢測到系統調用目標函數時,根據所述目標函數在內存中存儲的段基址和所述目標函數在可執行與可連接格式文件中的地址偏移信息確定跳轉地址,其中,所述地址偏移信息為根據自定義函數的存儲地址和所述段基址確定出的;
執行單元,用于根據跳轉地址執行所述自定義函數得到自定義函數的執行結果;
返回單元,用于在所述自定義函數中調用所述目標函數,返回所述目標函數的執行結果;
所述裝置還包括:
獲取單元,用于從段類型為動態鏈接類型的段中獲取所有動態結構體信息;
第三查找單元,用于從所述動態結構體信息中,查找動態類型為字符串表地址的動態結構體信息存儲于函數表的基地址中,所述字符串表地址中包含有所有函數名稱的基址;
第二讀取單元,用于從動態類型為符號哈希表地址的函數結構體信息中讀取函數索引表和函數索引鏈表的哈希值;
第三確定單元,用于根據所述哈希值確定所述目標函數的地址偏移信息。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810167443.8/1.html,轉載請聲明來源鉆瓜專利網。





