【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具的 main 函数分析 )
文章目錄
- 一、注入流程
- 二、注入工具的 main 函數(shù)分析
一、注入流程
開(kāi)始分析 【Android 逆向】Android 進(jìn)程注入工具開(kāi)發(fā) ( 編譯注入工具 | 編譯結(jié)果文件說(shuō)明 | 注入過(guò)程說(shuō)明 ) 博客中的 tool 工具代碼 ;
tool 工具使用前 , 先獲 取要注入的目標(biāo)進(jìn)程 進(jìn)程號(hào) , 使用
dumpsys activity top|grep pid命令獲取當(dāng)前前臺(tái)進(jìn)程的進(jìn)程號(hào) ;
在 /data/system/debug/ 目錄中 ( 之前將所有注入相關(guān)的文件都拷貝到該目錄中 , 并賦予 777 權(quán)限 ) , 執(zhí)行
./tool 2222命令 , 即可 向目標(biāo)進(jìn)程注入 SO 動(dòng)態(tài)庫(kù) ; 其中 2222 就是要注入 SO 動(dòng)態(tài)庫(kù)的 目標(biāo)進(jìn)程 進(jìn)程號(hào) ;
二、注入工具的 main 函數(shù)分析
該應(yīng)用涉及到 CPU 寄存器操作 , 因此需要確定應(yīng)用運(yùn)行在指定的 CPU 架構(gòu)中 , 使用
#if defined(__i386__)判定當(dāng)前的運(yùn)行環(huán)境的 CPU 架構(gòu) ;
判斷參數(shù)是否合法 , 正常情況下執(zhí)行 ./tool 2222 命令 , 有 2 個(gè)參數(shù) , 如果參數(shù)個(gè)數(shù)不是 2 個(gè) , 直接報(bào)錯(cuò) ;
/* 驗(yàn)證 參數(shù)個(gè)數(shù)是否合法 , 如果參數(shù)個(gè)數(shù)不是 2 個(gè) , 報(bào)錯(cuò) */if (argc != 2) {printf("Usage:%s pid\n", argv[0]);return 0;}調(diào)用 atoi 函數(shù) , 將參數(shù) 1 字符串?dāng)?shù)據(jù) , 轉(zhuǎn)為 pid_t 進(jìn)程號(hào)類型 ;
pid_t target_pid;/* 字符串轉(zhuǎn) int */target_pid = atoi(argv[1]);if (-1 == target_pid) {printf("Can't find the process\n");return -1;}獲取進(jìn)程號(hào)之后 , 開(kāi)始 執(zhí)行 SO 動(dòng)態(tài)庫(kù)注入 操作 :
// 注入 /data/system/debug/libbridge.so 路徑的動(dòng)態(tài)庫(kù)inject_remote_process(target_pid, "/data/system/debug/libbridge.so", "load", NULL, 0);main 函數(shù)完整代碼 :
int main(int argc, char** argv) { #if defined(__i386__) /* 正確情況下應(yīng)該進(jìn)入該分支 */LOGW("__i386__\n"); #else/* 該應(yīng)用是針對(duì) x86 開(kāi)發(fā)的 , 如果進(jìn)入到這個(gè)分支就出錯(cuò)了 */LOGW("__arm__\n"); #endifpid_t target_pid;/* 驗(yàn)證 參數(shù)個(gè)數(shù)是否合法 , 如果參數(shù)個(gè)數(shù)不是 2 個(gè) , 報(bào)錯(cuò) */if (argc != 2) {printf("Usage:%s pid\n", argv[0]);return 0;}/* 字符串轉(zhuǎn) 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 路徑的動(dòng)態(tài)庫(kù)inject_remote_process(target_pid, "/data/system/debug/libbridge.so", "load", NULL, 0);return 0; }總結(jié)
以上是生活随笔為你收集整理的【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具的 main 函数分析 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Android 逆向】Android
- 下一篇: 【Android 逆向】Android