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

简介: 【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 ;


image.png






二、进程注入调试进程内存的 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 #

image.png

目录
相关文章
|
9天前
|
程序员 C语言
C语言库函数 — 内存函数(含模拟实现内存函数)
C语言库函数 — 内存函数(含模拟实现内存函数)
18 0
|
25天前
|
编解码 算法 Java
构建高效的Android应用:内存优化策略详解
随着智能手机在日常生活和工作中的普及,用户对移动应用的性能要求越来越高。特别是对于Android开发者来说,理解并实践内存优化是提升应用程序性能的关键步骤。本文将深入探讨针对Android平台的内存管理机制,并提供一系列实用的内存优化技巧,以帮助开发者减少内存消耗,避免常见的内存泄漏问题,并确保应用的流畅运行。
|
1天前
|
移动开发 Android开发 开发者
构建高效Android应用:采用Kotlin进行内存优化的策略
【4月更文挑战第18天】 在移动开发领域,性能优化一直是开发者关注的焦点。特别是对于Android应用而言,由于设备和版本的多样性,确保应用流畅运行且占用资源少是一大挑战。本文将探讨使用Kotlin语言开发Android应用时,如何通过内存优化来提升应用性能。我们将从减少不必要的对象创建、合理使用数据结构、避免内存泄漏等方面入手,提供实用的代码示例和最佳实践,帮助开发者构建更加高效的Android应用。
5 0
|
3天前
|
缓存 移动开发 Java
构建高效的Android应用:内存优化策略
【4月更文挑战第16天】 在移动开发领域,尤其是针对资源有限的Android设备,内存优化是提升应用性能和用户体验的关键因素。本文将深入探讨Android应用的内存管理机制,分析常见的内存泄漏问题,并提出一系列实用的内存优化技巧。通过这些策略的实施,开发者可以显著减少应用的内存占用,避免不必要的后台服务,以及提高垃圾回收效率,从而延长设备的电池寿命并确保应用的流畅运行。
|
10天前
|
存储 C语言
数据在内存中的存储2
数据在内存中的存储2
|
10天前
|
存储 编译器
数据在内存中的存储1
数据在内存中的存储
|
21天前
|
存储 编译器 程序员
【C语言】整形数据和浮点型数据在内存中的存储
【C语言】整形数据和浮点型数据在内存中的存储
12 0
|
26天前
|
缓存 移动开发 Java
构建高效Android应用:内存优化实战指南
在移动开发领域,性能优化是提升用户体验的关键因素之一。特别是对于Android应用而言,由于设备和版本的多样性,内存管理成为开发者面临的一大挑战。本文将深入探讨Android内存优化的策略和技术,包括内存泄漏的诊断与解决、合理的数据结构选择、以及有效的资源释放机制。通过实际案例分析,我们旨在为开发者提供一套实用的内存优化工具和方法,以构建更加流畅和高效的Android应用。
|
29天前
|
监控 Java Android开发
构建高效Android应用:从内存管理到性能优化
【2月更文挑战第30天】 在移动开发领域,打造一个流畅且响应迅速的Android应用是每个开发者追求的目标。本文将深入探讨如何通过有效的内存管理和细致的性能调优来提升应用效率。我们将从分析内存泄露的根本原因出发,讨论垃圾回收机制,并探索多种内存优化策略。接着,文中将介绍多线程编程的最佳实践和UI渲染的关键技巧。最后,我们将通过一系列实用的性能测试工具和方法,帮助开发者监控、定位并解决性能瓶颈。这些技术的综合运用,将指导读者构建出更快速、更稳定、用户体验更佳的Android应用。
|
1月前
|
缓存 监控 API
构建高效的Android应用:从内存优化到电池寿命
【2月更文挑战第27天】 在移动开发领域,构建一个既高效又省电的Android应用是每个开发者的梦想。本文深入探讨了Android应用性能优化的关键策略,包括内存管理和电池使用效率。我们将分析常见的内存泄漏问题,并提供解决方案,同时介绍最新的Android电池优化技术。通过实例和最佳实践,读者将学会如何打造一个更加流畅、响应迅速且电池友好的Android应用。

相关实验场景

更多