當前位置:
首頁 >
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )
發布時間:2025/6/17
44
豆豆
生活随笔
收集整理的這篇文章主要介紹了
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 一、等待遠程進程 mmap 函數執行完畢
- 二、從寄存器中獲取進程返回值
- 三、博客資源
前言
前置博客 :
- 【Android 逆向】Android 進程注入工具開發 ( 注入代碼分析 | 遠程調用 目標進程中 libc.so 動態庫中的 mmap 函數 一 | mmap 函數簡介 )
- 【Android 逆向】Android 進程注入工具開發 ( 注入代碼分析 | 遠程調用 目標進程中 libc.so 動態庫中的 mmap 函數 二 | 準備參數 | 遠程調用 mmap 函數 )
本博客進行收尾 , 遠程調用 mmap 函數后 , 等待函數執行 , 獲取該函數執行的返回值 ;
一、等待遠程進程 mmap 函數執行完畢
調用
waitpid(pid, &stat, WUNTRACED)方法 , 阻塞等待 遠程進程 的 mmap 函數執行完畢 , 直到遠程進程狀態位 WUNTRACED 時 ;
完整代碼如下 :
/* 等待遠程調用執行完畢 */int stat = 0;waitpid(pid, &stat, WUNTRACED);while (stat != 0xb7f) {if (ptrace_continue(pid) == -1) {printf("error\n");return -1;}waitpid(pid, &stat, WUNTRACED);}二、從寄存器中獲取進程返回值
等待遠程進程 mmap 函數執行完畢返回后 ,
先調用 ptrace_getregs 方法 ,
ptrace_getregs(target_pid, regs)獲取遠程進程的 寄存器信息 ;
然后讀取該寄存器數據中的 EAX 寄存器值 , 用于獲取遠程執行 dlopen 函數的返回值 , 返回的是 libbridge.so 動態庫的首地址 ;
/* 讀取寄存器返回值 */ long ptrace_retval(struct pt_regs* regs) { #if defined(__arm__) return regs->ARM_r0; #elif defined(__i386__) return regs->eax; #else #error "Not supported" #endif }三、博客資源
完整源碼下載地址 :
總結
以上是生活随笔為你收集整理的【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】Android
- 下一篇: 【Android 逆向】Android