日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【Android 逆向】函数拦截实例 ( 函数拦截流程 | ① 定位动态库及函数位置 )

發布時間:2025/6/17 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 逆向】函数拦截实例 ( 函数拦截流程 | ① 定位动态库及函数位置 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、函數攔截流程
  • 二、定位動態庫及函數位置





一、函數攔截流程



函數攔截流程 :

  • 定位動態庫及函數位置 : 獲取該動態庫在內存中的位置 , 以便于 查找函數位置 ;
  • 插樁 : 在函數的入口處插樁 , 這個 " 樁 " 指的是 " 跳轉指令 " ;
  • 刷新 CPU 高速緩存 : 執行 cache_flush 系統調用函數 刷新 CPU 的高速緩存 ; 該步驟 只在 ARM 架構的 CPU 中執行 , x86 架構的 CPU 不需要刷新緩存 ;
  • 處理攔截函數 : 執行函數時 , 執行到插入的 " 樁 " , 即跳轉指令 , 跳轉到自定義的函數中 , 執行完畢后 , 又跳轉回原函數中繼續執行原函數 ;
  • 返回特定結果 : 將想要返回的結果返回 ;




二、定位動態庫及函數位置



攔截 222 個函數 ,

  • gettimeofday : 獲取時間 , 單位 秒 ; struct timeval*tv 參數保存獲取時間結果的結構體 ,struct timezone *tz 參數用于保存時區結果 ;
#include <sys/time.h> int gettimeofday(struct timeval*tv, struct timezone *tz);
  • clock_gettime : 獲取時間 , 單位 微秒 ; 計算 精度 和 納秒 ;
#include <time.h> int clock_gettime(clockid_t clk_id,struct timespec *tp);

Hook 環境描述 : 使用 tool 工具 向 被調試進程 注入 libbridge.so 動態庫 , 然后執行該動態庫的 load 方法 , 將libnative.so 動態庫注入到遠程進程中 , Hook 操作就是在 libnative.so 動態庫中執行的 ;

注意 : libnative.so 動態庫 是運行在遠程進程中 ;

執行 C/C++ 程序 Hook 時 , 先定位函數在內存中的地址 , 由于當前執行的 libnative.so 動態庫 代碼已經注入到了遠程進程中 , 因此 libnative.so 動態庫執行在遠程被調試的進程 , 可以直接通過 gettimeofday 和 clock_gettime 函數指針 , 拿到該函數的地址 ;

函數名 就是 函數指針 , 也就是 函數在內存中的地址 ;

總結

以上是生活随笔為你收集整理的【Android 逆向】函数拦截实例 ( 函数拦截流程 | ① 定位动态库及函数位置 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。