日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★

發(fā)布時間:2025/6/17 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★ 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、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)容 , 說明編譯完成 ;

1>------ 已啟動生成: 項目: magic, 配置: Debug Win32 ------ 1>[x86] Compile : bridge <= bridge.c 1>[x86] SharedLibrary : libbridge.so 1>[x86] Install : libbridge.so => libs/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 => libs/x86/cmd 1>[x86] Compile++ : native <= native.cpp 1>./native/native.cpp(428,14): warning G0C39A92D: 'SearchCode' has C-linkage specified, but returns user-defined type 'std::string' (aka 'basic_string<char>') which is incompatible with C [-Wreturn-type-c-linkage] 1> std::string SearchCode(unsigned char* data,unsigned size){ 1> ^ 1>1 warning generated. 1>[x86] Compile : native <= asm.s 1>[x86] Compile++ : native <= json_reader.cpp 1>[x86] Compile++ : native <= json_value.cpp 1>[x86] Compile++ : native <= json_writer.cpp 1>[x86] SharedLibrary : libnative.so 1>[x86] Install : libnative.so => libs/x86/libnative.so 1>[x86] Compile : tool <= main.c 1>[x86] Executable : tool 1>[x86] Install : tool => libs/x86/tool 1>已完成生成項目“magic.vcxproj”的操作。 ========== 生成: 成功 1 個,失敗 0 個,最新 0 個,跳過 0==========

在 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。