日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 逆向】函数拦截 ( CPU 高速缓存机制 | CPU 高速缓存机制 导致 函数拦截失败 )

發布時間:2025/6/17 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 逆向】函数拦截 ( CPU 高速缓存机制 | CPU 高速缓存机制 导致 函数拦截失败 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、CPU 高速緩存機制
  • 二、CPU 高速緩存機制 導致 函數攔截失敗





一、CPU 高速緩存機制



CPU 架構模型中 , 指令 在開始時 , 存放在內存中 , 如 : /proc/pid/maps 中的每個 .so 動態庫都在內存中有一個地址 , 動態庫中存放的就是指令 ;

CPU 與 內存之間的訪問速率比較低 , 這里的低是與 CPU 訪問寄存器比較的 , CPU 訪問寄存器的速度 > CPU 訪問內存的速度 > CPU 訪問磁盤的速度 ;

為了提升 CPU 訪問 內存 的速度 , 在 CPU 內部準備了一塊 高速緩存 , 內存中的指令不是直接放入 CPU , 而是先放到高速緩存中 , 然后從高速緩存讀取到寄存器中進行指令操作 ;

如果 CPU 要訪問的指令正好在高速緩存中 , 那么就可以高速執行 代碼指令 , 執行的同時 , 又將后續指令源源不斷的加載到高速緩存中 , 這樣就可以保證 CPU 高效執行指令 ;





二、CPU 高速緩存機制 導致 函數攔截失敗



在上一篇博客 【Android 逆向】函數攔截原理 ( 通過修改 GOT 全局偏移表攔截函數 | 通過在實際被調用的函數中添加跳轉代碼實現函數攔截 ) 中的可靠函數攔截方案中 , 推薦使用 " 在實際被調用的函數中添加跳轉代碼實現函數攔截 " 方案實現函數攔截 ;

上述方案需要在 實際被調用的函數 中 , 寫入一條跳轉指令 , 該寫入指令的函數是存放在內存中的 , 也只能是在內存中寫入 , CPU 的高速緩存完全由 CPU 內部硬件調用 , 外部代碼無法訪問高速緩存 ;

這里就涉及到一個問題 , 在 被攔截的函數中插入跳轉代碼 , 如果該函數已經被加載到 CPU 的高速緩存中 , 那么 修改內存 , 也無法讓 CPU 執行該修改后的代碼指令 ;

CPU 中的 高速緩存是 按照命令率進行排序 , 使用越頻繁的函數 , 其優先級越高 , 越不容易被移除 ;

如果要攔截的函數 , 調用頻率很高 , 可能改函數會一直駐留在 CPU 高速緩存中 , 就 一直無法攔截該函數 ;

這就導致了 函數攔截 , 無法 100% 成功 ;

總結

以上是生活随笔為你收集整理的【Android 逆向】函数拦截 ( CPU 高速缓存机制 | CPU 高速缓存机制 导致 函数拦截失败 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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