【Android 逆向】函数拦截 ( GOT 表数据结构分析 | 函数根据 GOT 表进行跳转的流程 )
生活随笔
收集整理的這篇文章主要介紹了
【Android 逆向】函数拦截 ( GOT 表数据结构分析 | 函数根据 GOT 表进行跳转的流程 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、GOT 表數據結構分析
- 二、函數根據 GOT 表進行跳轉的流程
一、GOT 表數據結構分析
GOT 表分為 222 部分 ,
- 一部分在 調用者部分 ( 可執行文件 ) 中 ,
- 一部分在 被調用者部分 ( 靜態 / 動態 函數庫 ) 中 ;
在 函數庫 中的部分是真正的 GOT 表 , 在調用者的部分是 PLT 表 ;
PLT 表示一個 跳轉指令列表 , 執行該跳轉指令 , 可以直接跳轉到對應的 GOT 表中 , GOT 表記錄 函數真實的位置 , 此時可以 跳轉到 函數真實位置 ;
GOT 表在動態庫中是以數組形式存在的 , 其中的數據結構很負責 , 不只是有 函數地址 , 還有其它額外數據信息 ;
二、函數根據 GOT 表進行跳轉的流程
函數跳轉流程 :
PLT 表中 保存的是 jmp 指令 , 該指令跳轉的目的地址是 動態庫 中的 GOT 表 , GOT 表中記錄了真實的被調用函數的地址 , 之后直接跳轉到該 真實函數地址 中 ;
以訪問 scanf 函數為例 : 在 PLT 表中 , 保存的是 jmp GOT表地址 指令 , GOT 表地址 指向 GOT 表的一個數組元素 , 該數組元素存儲這 scanf 函數的實際地址 , 因此該 GOT 表地址 本質 是 保存 scanf 函數的地址 的 數據 的 地址 ; GOT 表 是 libc.so 中的 ;
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【Android 逆向】函数拦截 ( GOT 表数据结构分析 | 函数根据 GOT 表进行跳转的流程 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】函数拦截 ( C
- 下一篇: 【Android 逆向】函数拦截 ( G