【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★
文章目錄
- 一、Android 進程注入工具開發系列博客
- 二、Android 進程注入工具 源碼下載編譯
- 三、逆向環境搭建
- 四、使用注入工具進行逆向操作
- 1、獲取遠程進程號
- 2、注入工具準備
- 3、注入動態庫
- 4、查詢內存
- 5、修改內存
一、Android 進程注入工具開發系列博客
Android 進程注入工具開發系列博客 :
- 【Android 逆向】Android 進程代碼注入原理 ( 進程注入原理 | 遠程調用流程 | 獲取函數地址 | 設置 IP 寄存器 | mmap 申請內存 | 設置 SP 寄存器 )
- 【Android 逆向】Android 進程代碼注入原理 ( 注入本質 | 靜態注入和動態注入 | 靜態注入兩種方式 | 修改動態庫重打包 | 修改 /data/app/xx/libs 動態庫 )
- 【Android 逆向】Android 進程注入工具開發 ( Visual Studio 開發 Android NDK 應用 | VS 自帶的 Android 平臺應用創建與配置 )
- 【Android 逆向】Android 進程注入工具開發 ( Visual Studio 開發 Android NDK 應用 | 使用 Makefile 構建 Android 平臺 NDK 應用 )
- 【Android 逆向】Android 進程注入工具開發 ( 調試進程中寄存器的作用 | 通過 EIP 寄存器控制程序運行 | EIP 寄存器的存檔與恢復 )
- 【Android 逆向】Android 進程注入工具開發 ( EIP 寄存器指向 dlopen 函數 | ESP 寄存器指向棧內存 | 調試程序收回目標進程控制權 )
- 【Android 逆向】Android 進程注入工具開發 ( 遠程調用總結 | 遠程調用注意事項 )
- 【Android 逆向】Android 進程注入工具開發 ( 系統調用 | Android NDK 中的系統調用示例 )
- 【Android 逆向】Android 進程注入工具開發 ( Visual Studio 開發 Android NDK 應用 | Visual Studio 中 SDK 和 NDK 安裝位置 )
- 【Android 逆向】Android 進程注入工具開發 ( SO 進程注入環境及 root 權限獲取 | 進程注入時序分析 )
- 【Android 逆向】Android 進程注入工具開發 ( 編譯注入工具 | 編譯結果文件說明 | 注入過程說明 )
- 【Android 逆向】Android 進程注入工具開發 ( 注入代碼分析 | 注入工具的 main 函數分析 )
- 【Android 逆向】Android 進程注入工具開發 ( 注入代碼分析 | 調試進程 ATTACH 附著目標進程 | 讀取目標函數寄存器值并存檔 )
- 【Android 逆向】Android 進程注入工具開發 ( 注入代碼分析 | 獲取 遠程 目標進程 中的 /system/lib/libc.so 動態庫中的 mmap 函數地址 )
- 【Android 逆向】Android 進程注入工具開發 ( 注入代碼分析 | 遠程調用 目標進程中 libc.so 動態庫中的 mmap 函數 一 | mmap 函數簡介 )
- 【Android 逆向】Android 進程注入工具開發 ( 注入代碼分析 | 遠程調用 目標進程中 libc.so 動態庫中的 mmap 函數 二 | 準備參數 | 遠程調用 mmap 函數 )
- 【Android 逆向】Android 進程注入工具開發 ( 注入代碼分析 | 遠程調用 目標進程中 libc.so 動態庫中的 mmap 函數 三 | 等待遠程函數執行完畢 | 寄存器獲取返回值 )
- 【Android 逆向】Android 進程注入工具開發 ( 注入代碼分析 | 獲取 linker 中的 dlopen 函數地址 并 通過 遠程調用 執行該函數 )
- 【Android 逆向】Android 進程注入工具開發 ( 注入代碼分析 | 獲取注入的 libbridge.so 動態庫中的 load 函數地址 并 通過 遠程調用 執行該函數 )
- 【Android 逆向】Android 進程注入工具開發 ( 注入代碼分析 | 注入工具收尾操作 | 關閉注入的動態庫 | 恢復寄存器 | 脫離遠程調試附著 )
- 【Android 逆向】Android 進程注入工具開發 ( 遠程調用 | x86 架構的返回值獲取 | arm 架構遠程調用 )
- 【Android 逆向】Android 進程注入工具開發 ( 遠程進程 注入動態庫 文件操作 | Android 進程讀取文件所需的權限 | fopen 打開文件標志位 | 驗證文件權限 )
- 【Android 逆向】Android 進程注入工具開發 ( 遠程進程注入動態庫文件操作 | 注入動態庫 加載 業務動態庫 | 業務動態庫啟動 | pthread_create 線程開發 )
二、Android 進程注入工具 源碼下載編譯
源碼下載地址 : https://download.csdn.net/download/han1202012/37385877
使用 Visual Studio 2019 編譯上述源碼 ;
選擇 " 打開項目或解決方案 " ,
打開 magic 目錄下的 magic.vcxproj 項目文件 ,
打開項目 ,
右鍵點擊 " 解決方案資源管理器 " 中的解決方案 , 在彈出的菜單中 , 選擇最后一個 " 屬性 " 設置選項 ,
需要手動配置這 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 " 選項 ,
命令行輸出如下內容 , 說明編譯完成 ;
在 Y:\002_WorkSpace\002_VS\magic\libs\x86 目錄下 , 生成如下可執行文件和動態庫 , 這是逆向的工具 和 要注入的動態庫 ;
三、逆向環境搭建
參考 【Android 逆向】修改運行中的 Android 進程的內存數據 ( 運行環境搭建 Android 模擬器安裝 | 拷貝 Android 平臺可執行文件和動態庫到 /data/system ) 博客 , 搭建逆向環境 ;
使用 雷電模擬器 3.75 版本 , 作為運行環境 ;
拷貝在 Visual Studio 中編譯的 Android 平臺的 444 可執行文件和動態庫到 /data/system/debug 目錄下 , 賦予 777 權限 ;
四、使用注入工具進行逆向操作
參考
- 【Android 逆向】修改運行中的 Android 進程的內存數據 ( Android 命令行中獲取要調試的應用進程的 PID | 進程注入調試進程內存的 so 庫 )
- 【Android 逆向】修改運行中的 Android 進程的內存數據 ( 使用 IDA 分析要修改的內存特征 | 根據內存特征搜索修改點 | 修改進程內存 )
博客 , 進行逆向 ;
1、獲取遠程進程號
執行
dumpsys activity top|grep pid命令 , 查看當前運行進程的進程號 ;
2、注入工具準備
進入 /data/system/debug/ 目錄 ,
cd /data/system/debug/為 /data/system/debug/ 目錄下的四個文件 , 賦予 777 權限 ;
chmod 777 ./*3、注入動態庫
執行
./tool 2328命令 , 注入動態庫到 2328 進程中 , 該進程號是上面 dumpsys 命令獲取的 ;
4、查詢內存
執行
./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 個字節的內存特征 , 獲取到一個內存地址 ;
5、修改內存
執行
./cmd 2328 modify 96A2C355 0x58 0x28 0xB3 0x07 4修改內存地址 , 一次只能修改 4 字節 ;
總結
以上是生活随笔為你收集整理的【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】Android
- 下一篇: 【Android 逆向】Android