【Android 逆向】Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )
生活随笔
收集整理的這篇文章主要介紹了
【Android 逆向】Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、遠程調用總結
- 二、遠程調用注意事項
一、遠程調用總結
在之前的博客
- 【Android 逆向】Android 進程注入工具開發 ( 調試進程中寄存器的作用 | 通過 EIP 寄存器控制程序運行 | EIP 寄存器的存檔與恢復 )
- 【Android 逆向】Android 進程注入工具開發 ( EIP 寄存器指向 dlopen 函數 | ESP 寄存器指向棧內存 | 調試程序收回目標進程控制權 )
中簡要介紹了注入工具遠程調用的具體的過程 ;
遠程調用總結 :
- 計算函數地址 : 通過計算 , 獲取遠程調用函數的內存地址 ;
- 設置 EIP 寄存器 : 將 EIP 寄存器指向遠程調用函數 ;
- 申請棧內存地址 : 使用 mmap 申請內存 , 并將遠程調用函數參數設置到該內存中 ;
- 設置 ESP 棧內存地址 : 將 ESP 寄存器指向申請的內存中 ;
- 收回控制權 : 執行完畢后 , 返回到 0 地址 , 令目標進程崩潰 , 調試進程收回控制權 ;
二、遠程調用注意事項
上述修改運行時代碼時 , 有一些注意事項 :
- 執行的 遠程函數 必須是 立即返回 的 , 由于要在函數執行完畢后返回 0 地址 , 一旦訪問該地址程序崩潰 , 調試程序 就可以收回 目標程序的控制權 ; 如果 目標程序 一直執行不返回 , 或者沒有返回值 , 如果不返回到 0 地址崩潰 , 那么 調試程序 就一直無法收回控制權 ;
- 遠程函數 不能有崩潰 , 如果用戶傳入一個空指針參數 , 導致 目標進程 崩潰 , 調試程序 提前 收回了 目標程序 控制權 , 這樣就會導致 遠程函數 調用失敗 ;
- 寄存器恢復 , 寄存器使用前 , 一定要存檔 , 使用完畢后 , 恢復寄存器值 ; 要保護目標進程 原有的 寄存器 和 內存 , 否則在結束調試 , 恢復運行時 , 會產生異常 ; 寄存器 注意 EIP 和 ESP 寄存器的存檔與恢復 , 棧內存 需要 恢復到原來的地址 , 并釋放 mmap 申請的內存 ;
總結
以上是生活随笔為你收集整理的【Android 逆向】Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】Android
- 下一篇: 【Android 逆向】Android