【Android 逆向】Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )
文章目錄
- 一、編譯注入工具
- 二、編譯結果文件說明
- 三、注入過程說明
一、編譯注入工具
在 Visual Studio 2019 中打開了一個 " 生成文件項目 " , 該項目就是注入項目 ; 參考 【Android 逆向】修改運行中的 Android 進程的內存數據 ( Android 系統(tǒng)中調試器進程內存流程 | 編譯內存調試動態(tài)庫以及調試程序 ) 博客 ;
編譯該項目 ,
生成結果如下 :
已啟動生成… 1>------ 已啟動生成: 項目: magic, 配置: Debug Win32 ------ 1>[x86] Compile : bridge <= bridge.c 1>[x86] SharedLibrary : libbridge.so 1>[x86] Install : libbridge.so => ../Debug/x86/libbridge.so 1>[x86] Compile++ : cmd <= command.cpp 1>[x86] Compile++ : cmd <= json_reader.cpp 1>[x86] Compile++ : cmd <= json_value.cpp 1>[x86] Compile++ : cmd <= json_writer.cpp 1>[x86] Executable : cmd 1>[x86] Install : cmd => ../Debug/x86/cmd 1>[x86] Compile : tool <= main.c 1>[x86] Executable : tool 1>[x86] Install : tool => ../Debug/x86/tool ========== 生成: 成功 1 個,失敗 0 個,最新 0 個,跳過 0 個 ==========
二、編譯結果文件說明
編譯完成后的編譯結果有
- tool 可執(zhí)行文件
- cmd 可執(zhí)行文件
- libbridge.so 動態(tài)庫
上述文件都是在 PC 電腦上的 x86 架構的 Android 模擬器上運行的相關文件 , 具體就是 雷電模擬器 3.75 版本 ;
使用上述工具調試 Android 進程參考如下博客 :
- 【Android 逆向】修改運行中的 Android 進程的內存數據 ( 運行環(huán)境搭建 Android 模擬器安裝 | 拷貝 Android 平臺可執(zhí)行文件和動態(tài)庫到 /data/system )
- 【Android 逆向】修改運行中的 Android 進程的內存數據 ( Android 命令行中獲取要調試的應用進程的 PID | 進程注入調試進程內存的 so 庫 )
- 【Android 逆向】修改運行中的 Android 進程的內存數據 ( 使用 IDA 分析要修改的內存特征 | 根據內存特征搜索修改點 | 修改進程內存 )
三、注入過程說明
將所有文件拷貝到 Android 模擬器的 /data/system/debug/ 目錄下 , 然后賦予 777 權限 ;
執(zhí)行
tool 2222命令 , 即可 attach 調試 進程號 PID 為 2222 的 進程 ;
根據 PID , 一定能在 /proc/2222/mmaps 文件中找到該進程 每個 so 動態(tài)庫的運行地址 , 尤其是 libc.so 動態(tài)庫的地址 ;
先遠程注入 libbridge.so 動態(tài)庫 , 然后遠程調用 libbridge.so 中的 load 函數 , 將真正的 libnative.so 加載到目標進程中 ;
使用修改寄存器的方法 強行加載 libbridge.so 動態(tài)庫 , 會影響目標進程的布局 , 因此這個動態(tài)庫越小越好 , 并且 使用完畢后 , 馬上關閉該動態(tài)庫 , libbridge.so 動態(tài)庫只起一個敲門的作用 , libnative.so 加載完成后 , 直接將 libbridge.so 動態(tài)庫干掉 , 過河拆橋 ;
上述操作同時 , 恢復 寄存器 和 棧內存 的值 ;
總結
以上是生活随笔為你收集整理的【Android 逆向】Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【错误记录】Visual Studio
- 下一篇: 【Android 逆向】Android