[發明專利]一種hook虛擬機中的函數的方法及終端在審
| 申請號: | 201710803627.4 | 申請日: | 2017-09-08 |
| 公開(公告)號: | CN109471767A | 公開(公告)日: | 2019-03-15 |
| 發明(設計)人: | 劉德建;鞏振燁;周小白;林陶鈞;曾捷 | 申請(專利權)人: | 福建省天奕網絡科技有限公司 |
| 主分類號: | G06F11/30 | 分類號: | G06F11/30;G06F9/455 |
| 代理公司: | 福州市博深專利事務所(普通合伙) 35214 | 代理人: | 林志崢 |
| 地址: | 350212 福*** | 國省代碼: | 福建;35 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 虛擬機 靜態函數 存儲地址 終端 磁盤文件 動態編譯 動態獲取 動態修改 函數編譯 性能監控 | ||
本發明提供一種hook虛擬機中的函數的方法及終端,獲取要hook的函數在虛擬機中的存儲地址,根據所述存儲地址,將所述函數編譯為靜態函數,獲取所述靜態函數的地址,hook所述靜態函數的地址,從而實現對虛擬機中函數的hook,在內存中實現動態獲取動態編譯,實現對虛擬機中的函數的動態修改,不會更改磁盤文件內容,從而能夠正確hook虛擬機中的函數,實現對系統的性能監控。
技術領域
本發明涉及性能監控領域,尤其涉及一種hook虛擬機中的函數的方法及終端。
背景技術
Hook技術是一種用于改變API執行結果的技術,hook中文可譯為“掛鉤”或“鉤子”,通過hook技術可以將目標函數轉向自定義的函數中進行處理,實現對系統中目標函數的監控,從而實現對系統性能的分析。
由于虛擬機特有的優勢,現在的軟件開發很多都基于虛擬機,而如果要對開發出的系統進行性能監控,則需要對虛擬機中的函數進行hook。但是,現有技術中,對虛擬機中的函數進行hook的方式均為靜態修改虛擬機指令,即直接修改磁盤文件內容,在磁盤文件中插入自定義信息,這種方式并不能正確地hook虛擬機中的函數,因為修改文件內容之后會破壞原有文件的原數據結構,而主流軟件或游戲的運行都會使用校驗技術,原有文件的原數據結構的破壞會使得軟件或游戲校驗失敗,從而導致系統無法運行。因此,現有的靜態修改虛擬機指令的hook方式并不能正確地達到hook虛擬機中的函數的目的。
發明內容
本發明所要解決的技術問題是:提供一種hook虛擬機中的函數的方法及終端,能夠正確地hook虛擬機中的函數,實現對系統的性能監控。
為了解決上述技術問題,本發明采用的一種技術方案為:
一種hook虛擬機中的函數的方法,包括步驟:
S1、獲取要hook的函數在虛擬機中的存儲地址;
S2、根據所述存儲地址,將所述函數編譯為靜態函數,獲取所述靜態函數的地址;
S3、hook所述靜態函數的地址。
為了解決上述技術問題,本發明采用的另一種技術方案為:
一種hook虛擬機中的函數的終端,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述計算機程序時實現以下步驟:
S1、獲取要hook的函數在虛擬機中的存儲地址;
S2、根據所述存儲地址,將所述函數編譯為靜態函數,獲取所述靜態函數的地址;
S3、hook所述靜態函數的地址。
本發明的有益效果在于:根據要hook的函數在虛擬機中的地址,將所述函數編譯為靜態函數,并獲取所述靜態函數的地址,hook所述靜態函數的地址,從而實現對虛擬機中函數的hook,在內存中實現動態獲取動態編譯,不會更改磁盤文件內容,從而能夠正確hook虛擬機中的函數,實現對系統的性能監控。
附圖說明
圖1為本發明實施例的hook虛擬機中的函數的方法流程圖;
圖2為本發明實施例的hook虛擬機中的函數的終端的結構示意圖;
圖3位本發明實施例的hook Unity 3D引擎中的場景切換函數的結果示意圖;
標號說明:
1、hook虛擬機中的函數的終端;2、存儲器;3、處理器。
具體實施方式
為詳細說明本發明的技術內容、所實現目的及效果,以下結合實施方式并配合附圖予以說明。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于福建省天奕網絡科技有限公司,未經福建省天奕網絡科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710803627.4/2.html,轉載請聲明來源鉆瓜專利網。





