[發明專利]一種函數調用時間的監控方法及裝置有效
| 申請號: | 201710651465.7 | 申請日: | 2017-08-02 |
| 公開(公告)號: | CN107480029B | 公開(公告)日: | 2019-02-15 |
| 發明(設計)人: | 孫吉平;尹永政 | 申請(專利權)人: | 北京深思數盾科技股份有限公司 |
| 主分類號: | G06F11/30 | 分類號: | G06F11/30;G06F11/34;G06F21/14;G06F21/54 |
| 代理公司: | 北京鼎佳達知識產權代理事務所(普通合伙) 11348 | 代理人: | 王偉鋒;劉鐵生 |
| 地址: | 100193 北京市海淀區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 函數 調用 時間 監控 方法 裝置 | ||
1.一種函數調用時間的監控方法,其特征在于,包括:
通過掛起的方式創建監控進程,所述監控進程中包含有預設容量的動態內存;
將用于監控函數調用時間的預設分析代碼載入所述動態內存中;
啟動所述監控進程,根據所述預設分析代碼加載需要注入至所述監控進程的動態鏈接庫;
根據所述動態鏈接庫中的監控函數塊監控所述調用函數被調用的起始時間和結束時間,得到調用函數的調用時間;
所述根據所述動態鏈接庫中的監控函數- 塊 監控所述調用函數被調用的起始時間和結束時間包括:
啟動所述動態鏈接庫中的函數hook被保護程序的函數塊作為監控函數塊;
根據所述函數hook被保護程序的函數塊監控所述調用函數被調用的起始時間和結束時間,得到所述調用函數的調用時間;
所述根據所述函數hook被保護程序的函數塊監控所述調用函數被調用的起始時間和結束時間,得到所述調用函數的調用時間包括:
當調用函數被調用時,通過所述函數hook被保護程序的函數塊獲取所述調用函數的起始地址;
從堆棧中讀取指定存儲空間中的地址取值,所述指定存儲空間是用于存儲函數返回地址的;
查找所述地址取值所指向指令的上一條指令所指向的地址;
判斷所述上一條指令所指向的地址是否與所述調用函數的起始地址相同,如果相同,則監控所述調用函數被調用的起始時間和結束時間,得到調用函數的調用時間。
2.根據權利要求1所述的方法,其特征在于,在所述啟動所述監控進程之前,所述方法還包括:
創建內存映射文件以及時間統計結果事件,所述內存映射文件中存儲有調用函數的函數信息;
傳遞所述監控進程的標識信息,根據所述標識信息加載所述內存映射文件以及時間統計結果事件;
根據所述內存映射文件將程序執行的起始地址添加至所述預設分析代碼中,當啟動所述監控進程時跳轉至程序執行的起始地址。
3.根據權利要求1所述的方法,其特征在于,在所述啟動所述動態鏈接庫中的函數hook被保護程序的函數塊作為監控函數塊之前,所述方法還包括:
根據所述調用函數的函數信息獲取所述調用函數的函數類型;
當所述調用函數的函數類型為可直接執行函數時,通過模塊句柄載入動態鏈接庫;
當所述調用函數的函數類型為不可直接執行函數時,通過加載模塊載入動態鏈接庫。
4.一種函數調用時間的監控裝置,其特征在于,包括:
第一創建單元,用于通過掛起的方式創建監控進程,所述監控進程中包含有預設容量的動態內存;
載入單元,用于將用于監控函數調用時間的預設分析代碼載入所述動態內存中;
啟動單元,用于啟動所述監控進程,根據所述預設分析代碼加載需要注入至所述監控進程的動態鏈接庫;
監控單元,用于根據所述動態鏈接庫中的監控函數塊監控所述調用函數被調用的起始時間和結束時間,得到調用函數的調用時間;
所述監控單元包括:
啟動模塊,用于啟動所述動態鏈接庫中的函數hook被保護程序的函數塊作為監控函數塊;
監控模塊,用于根據所述函數hook被保護程序的函數塊監控所述調用函數被調用的起始時間和結束時間,得到所述調用函數的調用時間;
所述監控模塊,還用于當調用函數被調用時,通過所述函數hook被保護程序的函數塊獲取所述調用函數的起始地址;從堆棧中讀取指定存儲空間中的地址取值,所述指定存儲空間是用于存儲函數返回地址的;查找所述地址取值所指向指令的上一條指令所指向的地址;判斷所述上一條指令所指向的地址是否與所述調用函數的起始地址相同,如果相同,則監控所述調用函數被調用的起始時間和結束時間,得到調用函數的調用時間。
5.根據權利要求4所述的裝置,其特征在于,所述裝置還包括:
第二創建單元,用于創建內存映射文件以及時間統計結果事件,所述內存映射文件中存儲有調用函數的函數信息;
加載單元,用于傳遞所述監控進程的標識信息,根據所述標識信息加載所述內存映射文件以及時間統計結果事件;
添加單元,用于根據所述內存映射文件將程序執行的起始地址添加至所述預設分析代碼中,當啟動所述監控進程時跳轉至程序執行的起始地址。
6.根據權利要求4所述的裝置,其特征在于,
所述啟動模塊,還用于在所述啟動所述動態鏈接庫中的函數hook被保護程序的函數塊作為監控函數塊之前,根據所述調用函數的函數信息獲取所述調用函數的函數類型;當所述調用函數的函數類型為可直接執行函數時,通過模塊句柄載入動態鏈接庫;當所述調用函數的函數類型為不可直接執行函數時,通過加載模塊載入動態鏈接庫。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京深思數盾科技股份有限公司,未經北京深思數盾科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710651465.7/1.html,轉載請聲明來源鉆瓜專利網。





