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

歡迎訪問 生活随笔!

生活随笔

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

Android

【Android 逆向】函数拦截原理 ( 可执行程序基本结构 | GOT 全局偏移表 | 可执行程序函数调用步骤 )

發布時間:2025/6/17 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 逆向】函数拦截原理 ( 可执行程序基本结构 | GOT 全局偏移表 | 可执行程序函数调用步骤 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、可執行程序基本結構
  • 二、GOT 全局偏移表
  • 三、可執行程序函數調用步驟





一、可執行程序基本結構



程序加載到內存中之后 , 會分為以下 333 個部分 :

  • 可執行程序
  • 自定義函數庫 : Linux / Android 系統中 .so 動態庫 / .a 靜態庫 , Windows 系統中 .dll 動態庫 / .lib 靜態庫 ;
  • 系統函數庫


Java 加載到內存之后 , 是 JAR 文件或 DEX 文件 ; Python 加載到內存之后 , 是 Python 腳本 ; 但是二者最終想要在 CPU 上執行 , 還是要轉為以上 333 部分才能執行 ;





二、GOT 全局偏移表



上述 可執行程序 , 自定義庫 , 系統庫 , 按照 333 者發生作用的機制 , 又可以進一步進行如下劃分 :

可執行程序 可以 調用函數 , 這個被調用的函數 可以是 自定義庫 中的函數 , 也可以是 系統庫 中的函數 ;

此時就會存在一個 GOT 全局偏移表 , 當 可執行程序編譯 時 , 并 不知道每個函數的具體位置 ;

函數相對于其所在的函數庫的相對偏移是確定的 , 但是在不同平臺加載時 , 該偏移值是不同的 ;


GOT 表的作用 : 記錄每個函數的位置 , 其分為 222 部分 ;

  • 跳轉信息 : 一部分在 可執行程序 中是 跳轉信息 , 會 跳轉到函數對應的 系統庫 或 自定義庫中 ;
  • 位置信息 : 另一部分是 函數在函數庫的 位置信息 , 跳轉到對應的函數庫中之后 , 然后再跳轉到 函數庫 中的函數位置 ;

GOT 表 是在加載動態庫 時生成數據的 , 根據加載函數庫時的參數 , 可以設置 加載時填充位置信息 , 還是 調用時填充位置信息 ;

GOT 表是從全局加載的符號表 , 符號表中可能有值 , 也可能沒有值 , 這是由動態庫加載的參數決定的 , 函數調用時 , 該函數的地址值肯定是存在的 ;





三、可執行程序函數調用步驟



可執行程序函數調用步驟 :

① 函數調用 : 可執行程序 執行時 , 先調用函數 , 此時不知道 被調用的函數 地址 ;

② 根據 GOT 表跳轉函數庫 : 跳轉到 GOT 表 , GOT 表會橫跨 可執行程序 , 自定義庫 , 系統庫 333 部分 , 在 可執行程序 內部的部分 是 函數庫跳轉信息 , 先跳轉到對應的函數庫 ;

③ 在函數庫中根據 GOT 表跳轉到函數位置 : 然后查找 GOT 表在函數庫部分的內容 , 是函數的地址 , 根據該函數地址跳轉到函數位置 ;


總結

以上是生活随笔為你收集整理的【Android 逆向】函数拦截原理 ( 可执行程序基本结构 | GOT 全局偏移表 | 可执行程序函数调用步骤 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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