【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★
文章目錄
- 一、Android 進程注入工具開發(fā)系列博客
- 二、Android 進程注入工具 源碼下載編譯
- 三、逆向環(huán)境搭建
- 四、使用注入工具進行逆向操作
- 1、獲取遠程進程號
- 2、注入工具準備
- 3、注入動態(tài)庫
- 4、查詢內(nèi)存
- 5、修改內(nèi)存
一、Android 進程注入工具開發(fā)系列博客
Android 進程注入工具開發(fā)系列博客 :
- 【Android 逆向】Android 進程代碼注入原理 ( 進程注入原理 | 遠程調(diào)用流程 | 獲取函數(shù)地址 | 設(shè)置 IP 寄存器 | mmap 申請內(nèi)存 | 設(shè)置 SP 寄存器 )
- 【Android 逆向】Android 進程代碼注入原理 ( 注入本質(zhì) | 靜態(tài)注入和動態(tài)注入 | 靜態(tài)注入兩種方式 | 修改動態(tài)庫重打包 | 修改 /data/app/xx/libs 動態(tài)庫 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( Visual Studio 開發(fā) Android NDK 應(yīng)用 | VS 自帶的 Android 平臺應(yīng)用創(chuàng)建與配置 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( Visual Studio 開發(fā) Android NDK 應(yīng)用 | 使用 Makefile 構(gòu)建 Android 平臺 NDK 應(yīng)用 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 調(diào)試進程中寄存器的作用 | 通過 EIP 寄存器控制程序運行 | EIP 寄存器的存檔與恢復(fù) )
- 【Android 逆向】Android 進程注入工具開發(fā) ( EIP 寄存器指向 dlopen 函數(shù) | ESP 寄存器指向棧內(nèi)存 | 調(diào)試程序收回目標進程控制權(quán) )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 遠程調(diào)用總結(jié) | 遠程調(diào)用注意事項 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 系統(tǒng)調(diào)用 | Android NDK 中的系統(tǒng)調(diào)用示例 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( Visual Studio 開發(fā) Android NDK 應(yīng)用 | Visual Studio 中 SDK 和 NDK 安裝位置 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( SO 進程注入環(huán)境及 root 權(quán)限獲取 | 進程注入時序分析 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 編譯注入工具 | 編譯結(jié)果文件說明 | 注入過程說明 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 注入代碼分析 | 注入工具的 main 函數(shù)分析 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 注入代碼分析 | 調(diào)試進程 ATTACH 附著目標進程 | 讀取目標函數(shù)寄存器值并存檔 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 注入代碼分析 | 獲取 遠程 目標進程 中的 /system/lib/libc.so 動態(tài)庫中的 mmap 函數(shù)地址 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 注入代碼分析 | 遠程調(diào)用 目標進程中 libc.so 動態(tài)庫中的 mmap 函數(shù) 一 | mmap 函數(shù)簡介 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 注入代碼分析 | 遠程調(diào)用 目標進程中 libc.so 動態(tài)庫中的 mmap 函數(shù) 二 | 準備參數(shù) | 遠程調(diào)用 mmap 函數(shù) )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 注入代碼分析 | 遠程調(diào)用 目標進程中 libc.so 動態(tài)庫中的 mmap 函數(shù) 三 | 等待遠程函數(shù)執(zhí)行完畢 | 寄存器獲取返回值 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 注入代碼分析 | 獲取 linker 中的 dlopen 函數(shù)地址 并 通過 遠程調(diào)用 執(zhí)行該函數(shù) )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 注入代碼分析 | 獲取注入的 libbridge.so 動態(tài)庫中的 load 函數(shù)地址 并 通過 遠程調(diào)用 執(zhí)行該函數(shù) )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 注入代碼分析 | 注入工具收尾操作 | 關(guān)閉注入的動態(tài)庫 | 恢復(fù)寄存器 | 脫離遠程調(diào)試附著 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 遠程調(diào)用 | x86 架構(gòu)的返回值獲取 | arm 架構(gòu)遠程調(diào)用 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 遠程進程 注入動態(tài)庫 文件操作 | Android 進程讀取文件所需的權(quán)限 | fopen 打開文件標志位 | 驗證文件權(quán)限 )
- 【Android 逆向】Android 進程注入工具開發(fā) ( 遠程進程注入動態(tài)庫文件操作 | 注入動態(tài)庫 加載 業(yè)務(wù)動態(tài)庫 | 業(yè)務(wù)動態(tài)庫啟動 | pthread_create 線程開發(fā) )
二、Android 進程注入工具 源碼下載編譯
源碼下載地址 : https://download.csdn.net/download/han1202012/37385877
使用 Visual Studio 2019 編譯上述源碼 ;
選擇 " 打開項目或解決方案 " ,
打開 magic 目錄下的 magic.vcxproj 項目文件 ,
打開項目 ,
右鍵點擊 " 解決方案資源管理器 " 中的解決方案 , 在彈出的菜單中 , 選擇最后一個 " 屬性 " 設(shè)置選項 ,
需要手動配置這 444 個選項 , 必須是相同的版本才可以 , 沒有的話 , 自行去下載 ;
包含搜索路徑 : Y:\001_DevelopTools\002_Android_SDK\ndk\android-ndk-r10d\platforms\android-19\arch-x86\usr\include;$(NMakeIncludeSearchPath)
生成命令行 : "Y:\001_DevelopTools\002_Android_SDK\ndk\android-ndk-r14b-windows-x86_64\android-ndk-r14b\build\ndk-build.cmd" NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk NDK_APPLICATION_MK=Application.mk
"全部重新生成" 命令行 : "Y:\001_DevelopTools\002_Android_SDK\ndk\android-ndk-r14b-windows-x86_64\android-ndk-r14b\build\ndk-build.cmd" NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk NDK_APPLICATION_MK=Application.mk -B
"清除" 命令行 : "Y:\001_DevelopTools\002_Android_SDK\ndk\android-ndk-r14b-windows-x86_64\android-ndk-r14b\build\ndk-build.cmd" NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk NDK_APPLICATION_MK=Application.mk clean
電腦中必須有 android-ndk-r10d 和 android-ndk-r14b 這兩個版本的 NDK , 其它版本 , 大概率會編譯失敗 ;
配置完成后 , 右鍵點擊 解決方案 , 選擇 " 僅用于項目 / 僅生成 magic " 選項 ,
命令行輸出如下內(nèi)容 , 說明編譯完成 ;
在 Y:\002_WorkSpace\002_VS\magic\libs\x86 目錄下 , 生成如下可執(zhí)行文件和動態(tài)庫 , 這是逆向的工具 和 要注入的動態(tài)庫 ;
三、逆向環(huán)境搭建
參考 【Android 逆向】修改運行中的 Android 進程的內(nèi)存數(shù)據(jù) ( 運行環(huán)境搭建 Android 模擬器安裝 | 拷貝 Android 平臺可執(zhí)行文件和動態(tài)庫到 /data/system ) 博客 , 搭建逆向環(huán)境 ;
使用 雷電模擬器 3.75 版本 , 作為運行環(huán)境 ;
拷貝在 Visual Studio 中編譯的 Android 平臺的 444 可執(zhí)行文件和動態(tài)庫到 /data/system/debug 目錄下 , 賦予 777 權(quán)限 ;
四、使用注入工具進行逆向操作
參考
- 【Android 逆向】修改運行中的 Android 進程的內(nèi)存數(shù)據(jù) ( Android 命令行中獲取要調(diào)試的應(yīng)用進程的 PID | 進程注入調(diào)試進程內(nèi)存的 so 庫 )
- 【Android 逆向】修改運行中的 Android 進程的內(nèi)存數(shù)據(jù) ( 使用 IDA 分析要修改的內(nèi)存特征 | 根據(jù)內(nèi)存特征搜索修改點 | 修改進程內(nèi)存 )
博客 , 進行逆向 ;
1、獲取遠程進程號
執(zhí)行
dumpsys activity top|grep pid命令 , 查看當(dāng)前運行進程的進程號 ;
2、注入工具準備
進入 /data/system/debug/ 目錄 ,
cd /data/system/debug/為 /data/system/debug/ 目錄下的四個文件 , 賦予 777 權(quán)限 ;
chmod 777 ./*3、注入動態(tài)庫
執(zhí)行
./tool 2328命令 , 注入動態(tài)庫到 2328 進程中 , 該進程號是上面 dumpsys 命令獲取的 ;
4、查詢內(nèi)存
執(zhí)行
./cmd 2328 searchcode 0x59 0x28 0xB3 0x07 0x00 0x06 0x02 0x7B 0x41 0x08 10查詢 0x59 0x28 0xB3 0x07 0x00 0x06 0x02 0x7B 0x41 0x08 10 個字節(jié)的內(nèi)存特征 , 獲取到一個內(nèi)存地址 ;
5、修改內(nèi)存
執(zhí)行
./cmd 2328 modify 96A2C355 0x58 0x28 0xB3 0x07 4修改內(nèi)存地址 , 一次只能修改 4 字節(jié) ;
總結(jié)
以上是生活随笔為你收集整理的【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】Android
- 下一篇: 【Android 逆向】Android