【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具的 main 函数分析 )
生活随笔
收集整理的這篇文章主要介紹了
【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具的 main 函数分析 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、注入流程
- 二、注入工具的 main 函數分析
一、注入流程
開始分析 【Android 逆向】Android 進程注入工具開發 ( 編譯注入工具 | 編譯結果文件說明 | 注入過程說明 ) 博客中的 tool 工具代碼 ;
tool 工具使用前 , 先獲 取要注入的目標進程 進程號 , 使用
dumpsys activity top|grep pid命令獲取當前前臺進程的進程號 ;
在 /data/system/debug/ 目錄中 ( 之前將所有注入相關的文件都拷貝到該目錄中 , 并賦予 777 權限 ) , 執行
./tool 2222命令 , 即可 向目標進程注入 SO 動態庫 ; 其中 2222 就是要注入 SO 動態庫的 目標進程 進程號 ;
二、注入工具的 main 函數分析
該應用涉及到 CPU 寄存器操作 , 因此需要確定應用運行在指定的 CPU 架構中 , 使用
#if defined(__i386__)判定當前的運行環境的 CPU 架構 ;
判斷參數是否合法 , 正常情況下執行 ./tool 2222 命令 , 有 2 個參數 , 如果參數個數不是 2 個 , 直接報錯 ;
/* 驗證 參數個數是否合法 , 如果參數個數不是 2 個 , 報錯 */if (argc != 2) {printf("Usage:%s pid\n", argv[0]);return 0;}調用 atoi 函數 , 將參數 1 字符串數據 , 轉為 pid_t 進程號類型 ;
pid_t target_pid;/* 字符串轉 int */target_pid = atoi(argv[1]);if (-1 == target_pid) {printf("Can't find the process\n");return -1;}獲取進程號之后 , 開始 執行 SO 動態庫注入 操作 :
// 注入 /data/system/debug/libbridge.so 路徑的動態庫inject_remote_process(target_pid, "/data/system/debug/libbridge.so", "load", NULL, 0);main 函數完整代碼 :
int main(int argc, char** argv) { #if defined(__i386__) /* 正確情況下應該進入該分支 */LOGW("__i386__\n"); #else/* 該應用是針對 x86 開發的 , 如果進入到這個分支就出錯了 */LOGW("__arm__\n"); #endifpid_t target_pid;/* 驗證 參數個數是否合法 , 如果參數個數不是 2 個 , 報錯 */if (argc != 2) {printf("Usage:%s pid\n", argv[0]);return 0;}/* 字符串轉 int */target_pid = atoi(argv[1]);if (-1 == target_pid) {printf("Can't find the process\n");return -1;}printf("%s %s\n", __DATE__, __TIME__);// 注入 /data/system/debug/libbridge.so 路徑的動態庫inject_remote_process(target_pid, "/data/system/debug/libbridge.so", "load", NULL, 0);return 0; }總結
以上是生活随笔為你收集整理的【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具的 main 函数分析 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】Android
- 下一篇: 【Android 逆向】Android