【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )
文章目錄
- 一、Android 命令行中獲取要調試的應用進程的 PID
- 二、進程注入調試進程內存的 so 庫
一、Android 命令行中獲取要調試的應用進程的 PID
前置博客 【Android 逆向】修改運行中的 Android 進程的內存數據 ( 運行環境搭建 Android 模擬器安裝 | 拷貝 Android 平臺可執行文件和動態庫到 /data/system ) 先安裝 Android 模擬器 , 雷電模擬器 3.75 版本 ;
在模擬器中安裝要調試的應用后 , 直接運行 ;
執行
dumpsys activity top|grep pid命令 , 查看當前正在運行的應用的進程號 PID 為 2328 ;
二、進程注入調試進程內存的 so 庫
在 【Android 逆向】修改運行中的 Android 進程的內存數據 ( 運行環境搭建 Android 模擬器安裝 | 拷貝 Android 平臺可執行文件和動態庫到 /data/system ) 博客中 , 拷貝了 2 個文件到 /data/system/debug/ 目錄下 , 先為兩個文件賦予 777 權限 , 即所有的執行權限 ;
剛拷貝過來時 , 這兩個文件沒有執行權限 , 只有 rw 讀寫權限 ;
root@aosp:/data/system/debug # ls -l -rw-rw-rw- root root 5476 2021-10-31 18:37 libbridge.so -rw-rw-rw- root root 9684 2021-10-31 18:37 tool root@aosp:/data/system/debug #進入 /data/system/debug/ 目錄 ,
cd /data/system/debug/然后執行賦予權限的命令 :
chmod 777 tool chmod 777 libbridge.so/data/system/debug/tool 工具有了執行權限后 , 開始向 PID 為 2328 的進程注入調試動態庫 ;
在/data/system/debug/ 目錄下 , 執行
./tool 2328命令 , 即可完成 進程 注入操作 ;
如果命令行輸出的 hook_entry_addr = 0xa36044e0 不為空 , 是一個實際的地址 , 說明調試動態庫注入成功 ;
完整命令行輸出 :
root@aosp:/data/system/debug # root@aosp:/data/system/debug # ./tool 2328 sh: ./tool: can't execute: Permission denied 126|root@aosp:/data/system/debug # 126|root@aosp:/data/system/debug # chmod 777 tool root@aosp:/data/system/debug # chmod 777 libbridge.so root@aosp:/data/system/debug # root@aosp:/data/system/debug # ./tool 2328 __i386__ Oct 31 2021 18:37:50 [+] Injecting process: 2328 [/data/system/debug/libbridge.so] [load] [+] get_remote_addr[/system/lib/libc.so]: local[0xb7618000], remote[0xb7437000], ret_addr[0xb7462410], local_addr[0xb7643410] [+] Remote mmap address: 0xb7462410 [+] Calling mmap in target process. [+] Target process returned from mmap, return value=a3607000, pc=0 [+] get_remote_addr[/system/bin/linker]: local[0xb7722000], remote[0xb770f000], ret_addr[0xb7710450], local_addr[0xb7723450] [+] get_remote_addr[/system/bin/linker]: local[0xb7722000], remote[0xb770f000], ret_addr[0xb7710610], local_addr[0xb7723610] [+] get_remote_addr[/system/bin/linker]: local[0xb7722000], remote[0xb770f000], ret_addr[0xb7710390], local_addr[0xb7723390] [+] get_remote_addr[/system/bin/linker]: local[0xb7722000], remote[0xb770f000], ret_addr[0xb77101f0], local_addr[0xb77231f0] [+] Get imports: dlopen: 0xb7710450, dlsym: 0xb7710610, dlclose: 0xb7710390, dlerror: 0xb77101f0 library path = /data/system/debug/libbridge.so [+] Calling dlopen in target process. [+] Target process returned from dlopen, return value=b2c287b4, pc=0 [+] Calling dlsym in target process. [+] Target process returned from dlsym, return value=a36044e0, pc=0 hook_entry_addr = 0xa36044e0 [+] Calling load in target process. [+] Target process returned from load, return value=29, pc=0 [+] Calling dlclose in target process. [+] Target process returned from dlclose, return value=b2, pc=b772339d root@aosp:/data/system/debug # root@aosp:/data/system/debug #總結
以上是生活随笔為你收集整理的【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】修改运行中的 A
- 下一篇: 【Android 逆向】修改运行中的 A