[發明專利]一種函數掛鉤實現方法、裝置和存儲介質有效
| 申請號: | 201810041219.4 | 申請日: | 2018-01-16 |
| 公開(公告)號: | CN110046497B | 公開(公告)日: | 2023-06-20 |
| 發明(設計)人: | 劉華星 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F21/54 | 分類號: | G06F21/54 |
| 代理公司: | 深圳翼盛智成知識產權事務所(普通合伙) 44300 | 代理人: | 黃威 |
| 地址: | 518057 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 函數 掛鉤 實現 方法 裝置 存儲 介質 | ||
本發明實施例公開了一種函數掛鉤實現方法、裝置和存儲介質;本發明實施例采用在ART系統中創建空的方法對象,并將被掛鉤函數的函數信息備份至方法對象中,函數信息包括被掛鉤函數的頭兩條指令;將被掛鉤函數中的頭兩條指令修改為跳轉指令,跳轉指令用于指示跳轉至執行自定義掛鉤函數;在方法對象中設置回調指令,回調指令位于頭兩條指令之后,用于指示跳轉執行被掛鉤函數中頭兩條指令的后續指令;當調用被掛鉤函數時,根據跳轉指令跳轉至執行自定義掛鉤函數;在自定義掛鉤函數執行完成時,跳轉至執行方法對象中的頭兩條指令,并根據回調指令跳轉至執行被掛鉤函數中的后續指令。該方案可以提高終端系統的安全性。
技術領域
本發明涉及計算機技術領域,具體涉及一種函數掛鉤實現方法、裝置和存儲介質。
背景技術
ART模式英文全稱為Android?runtime,是谷歌Android?4.4系統新增的一種應用運行模式。ART模式中,應用在第一次安裝的時候,字節碼就會預先編譯成機器碼,使其成為真正的本地應用。這個過程叫做預編譯(AOT,Ahead-Of-Time)。
目前,android(安卓)系統在ART模式下的函數替換操作方案即hook(掛鉤)方案主要包括以xpose為代表的方案。xpose方案雖然能夠比較好的hook以及回調到原函數,但是在實際操作中需要使用xpose提供的libart.so文件替換系統已有的libart.so文件,這樣就需要對終端進行root,使得用戶獲取系統的超級用戶權限。然而,對終端進行root,會降低終端系統的安全性。
發明內容
本發明實施例提供一種函數掛鉤實現方法、裝置和存儲介質,可以提高終端系統的安全性。
本發明實施例提供一種函數掛鉤實現方法,包括:
在ART系統中創建空的方法對象,并將被掛鉤函數的函數信息備份至所述方法對象中,所述函數信息包括所述被掛鉤函數的頭兩條指令;
將所述被掛鉤函數中的頭兩條指令修改為跳轉指令,所述跳轉指令用于指示跳轉至執行自定義掛鉤函數;
在所述方法對象中設置回調指令,所述回調指令位于所述頭兩條指令之后,用于指示跳轉執行所述被掛鉤函數中所述頭兩條指令的后續指令;
當調用所述被掛鉤函數時,根據所述跳轉指令跳轉至執行所述自定義掛鉤函數;
在所述自定義掛鉤函數執行完成時,跳轉至執行所述方法對象中的所述頭兩條指令,并根據所述回調指令跳轉至執行所述被掛鉤函數中的所述后續指令。
相應的,本發明實施例還提供了一種函數掛鉤實現裝置,包括:
備份單元,用于在ART系統中創建空的方法對象,并將被掛鉤函數的函數信息備份至所述方法對象中,所述函數信息包括所述被掛鉤函數的頭兩條指令;
修改單元,用于將所述被掛鉤函數中的頭兩條指令修改為跳轉指令,所述跳轉指令用于指示跳轉至執行自定義掛鉤函數;
回調設置單元,用于在所述方法對象中設置回調指令,所述回調指令位于所述頭兩條指令之后,用于指示跳轉執行所述被掛鉤函數中所述頭兩條指令的后續指令;
函數調用單元,用于當調用所述被掛鉤函數時,根據所述跳轉指令跳轉至執行所述自定義掛鉤函數;
函數回調單元,用于在所述自定義掛鉤函數執行完成時,跳轉至執行所述方法對象中的所述頭兩條指令,并根據所述回調指令跳轉至執行所述被掛鉤函數中的所述后續指令。
相應的,本發明實施例還提供一種存儲介質,所述存儲介質存儲有指令,所述指令被處理器執行時實現本發明實施例任一提供的函數掛鉤實現方法。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810041219.4/2.html,轉載請聲明來源鉆瓜專利網。





