文章目录

  • 一、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 库 )相关推荐

  1. 查看tom猫进程linux,分享|在 Linux 命令行中观看彩虹猫来稍事休息

    你甚至可以在终端里欣赏彩虹猫. 今天是<Linux 命令行小玩具介绍>的第六天.在本系列文章中,我们将会探索一些娱乐用途(甚至有时完全没用)的 Linux 命令行小玩具.所有我们介绍的小玩 ...

  2. python中乘号可以省略吗_python *乘号在命令行中为什么报错

    环境 Mac Os X 10.9 python 2.7 实现功能 命令行传入公式,输出结果 出错原因 '*' 号把整个目录下的文件都当作参数传入了 问题 如何正确传入 * 号? 操作 输入公式 '2 ...

  3. 学以致用——命令行中使用Java模块化技术编译、打包、运行iKb知识库应用

    需求说明 Eclipse环境下,由于未知原因,运行的iKb知识库应用界面不稳定(有时全屏,有时会缩小很多,导致界面可读性很差),如下图所示: 这个问题随着本人所使用的的JDK版本和Eclipse版本的 ...

  4. Curl学习日记3 - 在Linux命令行中使用Curl

    在Linux命令行中使用Curl 目录 在Linux命令行中使用Curl 1. linux curl抓取网页: 2. Linux curl使用http代理: 3.使用socks代理抓取页面: 4. l ...

  5. linux下logcat命令,Android shell命令行中过滤adb logcat输出的几种方法

    我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb lo ...

  6. 在命令行中通过adb shell am broadcast发送广播通知以及Android的常用adb命令

    转载自:http://www.cnblogs.com/622698abc/archive/2013/06/11/3132306.html?utm_source=tuicool 通过命令行执行adb s ...

  7. 命令行中创建和打开模Android拟器

    扩展:在window是命名行中要进入带空格的目录,需要用引号将目录括起来,例如: cd  "program   files" 在windows命令行中要创建模拟器,首先要进入and ...

  8. 如何在 Linux 命令行中终止进程?

    如果你想在linux上停止某个进程,你会怎么操作? 如果命令/进程在前台运行,您可以使用 Ctrl+C 终端快捷方式,但是,如果进程不可见(在后台运行),您可以使用专用命令"杀死它" ...

  9. 修改cmd 命令行中的用户名|C:\Users\下的用户名

    修改cmd命令行中的用户名(文末有详细视频教程) 由于我现在换了一个喜欢的用户名,所以我想修改cmd命令行显示的用户名,即c盘用户文件夹下的文件名,但是一般用户文件夹下的名字是无法直接修改的,这里提供 ...

最新文章

  1. 自学入门不在困难,初学者挑战学习Python编程30天 (三)
  2. 京津冀计算机学科大学排名,2021京津冀地区大学排名!北师大第3,北航第7,人大不敌天大?...
  3. javap 查看class文件的字节码命令用法
  4. struts2+hibernate-jpa+Spring+maven 整合(1)
  5. 代码审查工具StyleCop
  6. 15.verilog可综合语句设计综述
  7. Python两个内置函数locals 和globals
  8. PyCharm和git安装教程
  9. 使用Navicat管理MySQL用户
  10. Java编写的统计字符代码
  11. mac os cmake安装
  12. python pathos_Python模块之os模块
  13. MessageBox函数
  14. python如何进行人口预测_如何使用matlab建立人口预测模型
  15. android 重力感应代码,Android编程实现的重力感应示例代码
  16. elementUI按需引入时报错 :Cannot find module ‘babel-preset-es2015‘
  17. Google 工程师亲授:菜鸟开发者一定要投资的十大目标
  18. x86架构和arm架构处理器分析
  19. win10在电脑已经连接WIFI的情况下查询到WiFi密码(不方便询问或没有办法获得密码的时候)
  20. IDEA文档注释(教程+模板)

热门文章

  1. 一个简单的运算表达式解释器例子
  2. 约瑟夫环 单向循环链表实现
  3. App项目内存优化计划
  4. 【uva11019-Matrix Matcher】AC自动机+优化+记录
  5. css阻止input select默认事件
  6. 自己挖的坑自己填--docker创建实例出现Waiting for SSH to be available…
  7. ASP.NET CORE 入门教程(附源码)
  8. composer 更新版本
  9. Windos消息驱动
  10. 《搬砖日记》Obi Rope插件的简单使用