【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 库 )相关推荐
- 查看tom猫进程linux,分享|在 Linux 命令行中观看彩虹猫来稍事休息
你甚至可以在终端里欣赏彩虹猫. 今天是<Linux 命令行小玩具介绍>的第六天.在本系列文章中,我们将会探索一些娱乐用途(甚至有时完全没用)的 Linux 命令行小玩具.所有我们介绍的小玩 ...
- python中乘号可以省略吗_python *乘号在命令行中为什么报错
环境 Mac Os X 10.9 python 2.7 实现功能 命令行传入公式,输出结果 出错原因 '*' 号把整个目录下的文件都当作参数传入了 问题 如何正确传入 * 号? 操作 输入公式 '2 ...
- 学以致用——命令行中使用Java模块化技术编译、打包、运行iKb知识库应用
需求说明 Eclipse环境下,由于未知原因,运行的iKb知识库应用界面不稳定(有时全屏,有时会缩小很多,导致界面可读性很差),如下图所示: 这个问题随着本人所使用的的JDK版本和Eclipse版本的 ...
- Curl学习日记3 - 在Linux命令行中使用Curl
在Linux命令行中使用Curl 目录 在Linux命令行中使用Curl 1. linux curl抓取网页: 2. Linux curl使用http代理: 3.使用socks代理抓取页面: 4. l ...
- linux下logcat命令,Android shell命令行中过滤adb logcat输出的几种方法
我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb lo ...
- 在命令行中通过adb shell am broadcast发送广播通知以及Android的常用adb命令
转载自:http://www.cnblogs.com/622698abc/archive/2013/06/11/3132306.html?utm_source=tuicool 通过命令行执行adb s ...
- 命令行中创建和打开模Android拟器
扩展:在window是命名行中要进入带空格的目录,需要用引号将目录括起来,例如: cd "program files" 在windows命令行中要创建模拟器,首先要进入and ...
- 如何在 Linux 命令行中终止进程?
如果你想在linux上停止某个进程,你会怎么操作? 如果命令/进程在前台运行,您可以使用 Ctrl+C 终端快捷方式,但是,如果进程不可见(在后台运行),您可以使用专用命令"杀死它" ...
- 修改cmd 命令行中的用户名|C:\Users\下的用户名
修改cmd命令行中的用户名(文末有详细视频教程) 由于我现在换了一个喜欢的用户名,所以我想修改cmd命令行显示的用户名,即c盘用户文件夹下的文件名,但是一般用户文件夹下的名字是无法直接修改的,这里提供 ...
最新文章
- 自学入门不在困难,初学者挑战学习Python编程30天 (三)
- 京津冀计算机学科大学排名,2021京津冀地区大学排名!北师大第3,北航第7,人大不敌天大?...
- javap 查看class文件的字节码命令用法
- struts2+hibernate-jpa+Spring+maven 整合(1)
- 代码审查工具StyleCop
- 15.verilog可综合语句设计综述
- Python两个内置函数locals 和globals
- PyCharm和git安装教程
- 使用Navicat管理MySQL用户
- Java编写的统计字符代码
- mac os cmake安装
- python pathos_Python模块之os模块
- MessageBox函数
- python如何进行人口预测_如何使用matlab建立人口预测模型
- android 重力感应代码,Android编程实现的重力感应示例代码
- elementUI按需引入时报错 :Cannot find module ‘babel-preset-es2015‘
- Google 工程师亲授:菜鸟开发者一定要投资的十大目标
- x86架构和arm架构处理器分析
- win10在电脑已经连接WIFI的情况下查询到WiFi密码(不方便询问或没有办法获得密码的时候)
- IDEA文档注释(教程+模板)