Linux 動態庫hook注入

由於工作上的需要,之前只是對大概的原理了解,現對此進行詳細的分析。

涉及到的關鍵API以及數據結構:

1. ptrace

PTRACE_ATTACH:掛載到指定的pid進程上
PTRACE_GETREGSET:讀取目標進程的寄存器
PTRACE_POKETEXT:複製一個word的數據
PTRACE_PEEKTEXT:複製一個word的數據
PTRACE_SETREGSET:設置寄存器
PTRACE_CONT:指定pid進程繼續執行

2. waitpid

WUNTRACED:當指定pid進程暫停後,返回

3. struct iovec

向量元素,主要提供給readv和writev系統調用進行使用

4. mmap

5. __libc_dlopen_mode

6. __libc_dlsym

獲取指定符號的地址

7. __libc_dlclose

8. /proc/pid/maps

查看每一個so的內存加載地址

9. 設置關鍵寄存器

sp:堆棧寄存器
pc:程序執行寄存器
cpsr:
lr:函數返回地址
r0:存儲函數返回值寄存器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章