[發明專利]終端應用的掛鉤方法及裝置有效
| 申請號: | 201711022177.1 | 申請日: | 2017-10-26 |
| 公開(公告)號: | CN107908444B | 公開(公告)日: | 2021-07-13 |
| 發明(設計)人: | 易新;任太勝;劉洪凱 | 申請(專利權)人: | 北京奇虎科技有限公司 |
| 主分類號: | G06F9/448 | 分類號: | G06F9/448 |
| 代理公司: | 北京律誠同業知識產權代理有限公司 11006 | 代理人: | 王玉雙 |
| 地址: | 100088 北京市西城區新*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 終端 應用 掛鉤 方法 裝置 | ||
1.一種終端應用的掛鉤方法,其特征在于,包括:
在移動終端的應用基于64位的操作系統調用目標函數時,識別從所述目標函數跳轉到新函數的長跳轉指令,所述新函數為待所述目標函數掛鉤的函數;所述長跳轉指令為從所述目標函數的內存地址跳轉到所述新函數的內存地址的跳轉指令;
將所述目標函數的偽指令替換為所述長跳轉指令,以跳轉到根據所述長跳轉指令申請的內存地址,并執行所述新函數;
在執行完所述新函數后,若確定需要繼續調用所述目標函數,則翻譯并執行所述偽指令;
在執行完偽指令后,寫入所述長跳轉指令,以實現跳回所述目標函數;
所述目標函數的函數長度大于或者等于16個字節,且機器碼指令為所述目標函數的前16個字節指令,所述將所述目標函數的偽指令替換為所述長跳轉指令之前,所述方法還包括:
檢測所述前16個字節指令是否同時使用X16寄存器和X17寄存器;
所述將所述目標函數的偽指令替換為所述長跳轉指令,具體包括:
若否,將所述前16個字節指令替換為長跳轉指令,所述長跳轉指令為使用X16寄存器或者X17寄存器的長跳轉指令。
2.根據權利要求1所述的方法,其特征在于,所述翻譯所述偽指令,具體包括:
檢測前16個字節指令是否僅使用X16寄存器或者僅使用X17寄存器;
若是,則使用第一寄存器翻譯所述偽指令;
所述寫入所述長跳轉,以實現跳回所述目標函數,具體包括:
使用第二寄存器寫入所述長跳轉指令,以實現跳回所述目標函數,其中,所述第一寄存器為X16寄存器或者X17寄存器,所述第二寄存器與所述第一寄存器不同。
3.根據權利要求1所述的方法,其特征在于,所述識別從所述目標函數跳轉到新函數的長跳轉指令,具體包括:
若識別所述目標函數中存在Ldr指令或者Br指令,則將所述Ldr指令或者所述Br指令確定為從所述目標函數跳轉到掛鉤函數的長跳轉指令。
4.根據權利要求1-3任一項所述的方法,其特征在于,所述寫入所述長跳轉,以實現跳回所述目標函數之前,所述方法還包括:
判斷所述目標函數所對應的原地址是否對齊;
若不對齊,則通過對齊nop指令將所述原地址對齊;
所述寫入所述長跳轉,以實現跳回所述目標函數,具體包括:
在對齊所述原地址后,寫入所述長跳轉,以實現跳回所述目標函數。
5.根據權利要求1所述的方法,其特征在于,所述檢測所述前16個字節指令是否同時使用16位寄存器或者17位寄存器之后,所述方法還包括:
若是,則停止掛鉤所述新函數。
6.根據權利要求1-3任一項所述的方法,其特征在于,所述將所述目標函數的偽指令替換為所述長跳轉指令之前,所述方法還包括:
通過調用修改保護mprotect函數,將內存屬性修改為可讀、可寫、可執行的屬性。
7.根據權利要求1-3任一項所述的方法,其特征在于,所述將所述目標函數的偽指令替換為所述長跳轉指令之后,所述方法還包括:
通過調用緩存刷新cacheflush函數刷新緩沖區。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京奇虎科技有限公司,未經北京奇虎科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711022177.1/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:處置器具
- 下一篇:一種學習信息的獲取方法及電子設備





