文章目录
一、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 #