前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )

【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )

作者头像
韩曙亮
发布2023-03-29 20:23:40
6630
发布2023-03-29 20:23:40
举报

文章目录

一、Android 命令行中获取要调试的应用进程的 PID


前置博客 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system ) 先安装 Android 模拟器 , 雷电模拟器 3.75 版本 ;

在模拟器中安装要调试的应用后 , 直接运行 ;

执行

代码语言:javascript
复制
dumpsys activity top|grep pid

命令 , 查看当前正在运行的应用的进程号 PID 为 2328 ;

二、进程注入调试进程内存的 so 库


【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system ) 博客中 , 拷贝了 2 个文件到 /data/system/debug/ 目录下 , 先为两个文件赋予 777 权限 , 即所有的执行权限 ;

刚拷贝过来时 , 这两个文件没有执行权限 , 只有 rw 读写权限 ;

代码语言:javascript
复制
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/ 目录 ,

代码语言:javascript
复制
cd /data/system/debug/

然后执行赋予权限的命令 :

代码语言:javascript
复制
chmod 777 tool
chmod 777 libbridge.so

/data/system/debug/tool 工具有了执行权限后 , 开始向 PID 为 2328 的进程注入调试动态库 ;

/data/system/debug/ 目录下 , 执行

代码语言:javascript
复制
./tool 2328

命令 , 即可完成 进程 注入操作 ;

如果命令行输出的 hook_entry_addr = 0xa36044e0 不为空 , 是一个实际的地址 , 说明调试动态库注入成功 ;

完整命令行输出 :

代码语言:javascript
复制
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 #
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、Android 命令行中获取要调试的应用进程的 PID
  • 二、进程注入调试进程内存的 so 库
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档