【Android 逆向】Android 进程注入工具开发 ( SO 进程注入环境及 root 权限获取 | 进程注入时序分析 )

简介: 【Android 逆向】Android 进程注入工具开发 ( SO 进程注入环境及 root 权限获取 | 进程注入时序分析 )

文章目录

一、SO 进程注入环境及 root 权限获取

二、进程注入时序分析





一、SO 进程注入环境及 root 权限获取


SO 注入的前提必须有 root 权限 , 有了 root 权限后 , 才能调用 ptrace 相关函数 ;



SO 注入环境有两种情况 , Android 模拟器 或 真实手机 ;


这里特别推荐使用 雷电模拟器 进行逆向操作 , 在真机上会出现各种问题 ;



使用 Android 模拟器 , 如 雷电模拟器 , 使用 ld 工具查看日志 , 查看日志命令为 :


ld.exe logcat


上述命令需要进入雷电模拟器安装目录执行 , ld.exe 在雷电模拟器安装目录的根目录中 ;


image.png


如果使用 Android 真机 , 则直接使用 adb logcat 命令查看日志即可 ;






二、进程注入时序分析


调试程序 调试 目标进程 ;


在有 root 权限的前提下 , 调试程序 首先 调用 ptrace 函数 attach 目标进程 , ptrace 函数调用必须有 root 权限 , 否则会崩溃 ;


调试程序 读取 目标进程 寄存器信息 , 将寄存器值保存下来 ;


远程调用 , 加载 libbridge.so , 在 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 ) 博客中 , 编译过该动态库 , 调试目标进程时 , 需要将该动态库注入 目标进程 ;


然后调用 libbridge.so 动态库中的 load 方法加载真正的工作 so 动态库 libnative.so ;


调用 libnative.so 的 invoke 方法 , 将返回值返回给 libbridge.so , 然后通过 libbridge.so 返回给 调试程序 ;


libbridge.so 的作用仅用于 调试程序 和 目标进程 之间的通信 ;


调试完毕后 , 远程调用卸载 libbridge.so ;


最后恢复 目标进程 执行 ;

image.png




远程调用流程 :


计算函数地址 : 通过计算 , 获取远程调用函数的内存地址 ;

设置 EIP 寄存器 : 将 EIP 寄存器指向远程调用函数 ;

申请栈内存地址 : 使用 mmap 申请内存 , 并将远程调用函数参数设置到该内存中 ;

设置 ESP 栈内存地址 : 将 ESP 寄存器指向申请的内存中 ;

收回控制权 : 执行完毕后 , 返回到 0 地址 , 令目标进程崩溃 , 调试进程收回控制权 ;


参考之前涉及到 SO 注入的流程 :


【Android 逆向】Android 进程代码注入原理 ( 进程注入原理 | 远程调用流程 | 获取函数地址 | 设置 IP 寄存器 | mmap 申请内存 | 设置 SP 寄存器 )

【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )

【Android 逆向】Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )


目录
相关文章
|
开发工具 Android开发 iOS开发
如何在Android Studio中配置Flutter环境?
如何在Android Studio中配置Flutter环境?
3011 160
|
存储 Android开发
如何查看Flutter应用在Android设备上已被撤销的权限?
如何查看Flutter应用在Android设备上已被撤销的权限?
735 64
|
11月前
|
Android开发
安卓虚拟摄像头替换摄像头, 微信虚拟相机替换拍照,安卓免root虚拟摄像头
虚拟摄像头系统包含多个组件:主摄像头类、预览面板、驱动接口、DirectShow实现和管理类
|
存储 Android开发 数据安全/隐私保护
如何在Android设备上撤销Flutter应用程序的所有权限?
如何在Android设备上撤销Flutter应用程序的所有权限?
948 64
|
IDE Android开发 iOS开发
深入解析Android与iOS的系统架构及开发环境差异
本文旨在探讨Android和iOS两大主流移动操作系统在系统架构、开发环境和用户体验方面的显著差异。通过对比分析,我们将揭示这两种系统在设计理念、技术实现以及市场策略上的不同路径,帮助开发者更好地理解其特点,从而做出更合适的开发决策。
2259 2
|
11月前
|
Java Android开发
安卓虚拟摄像头过人脸,免root虚拟hook相机,虚拟相机hook版【jar】
两种Hook Android相机的方法:Xposed模块和Frida脚本。Xposed模块需要安装在已root的设备
|
12月前
|
安全 Shell 测试技术
安卓硬改一键新机,一键新机改串软件,免ROOT网卡串号Imei/sn码
本内容提供移动安全研究相关资料与方法,包括通过Android Studio官方工具和模拟器进行设备测试、ADB调试命令学习
|
11月前
|
网络协议 Android开发 数据安全/隐私保护
三色过人脸虚拟摄像头,安卓免root虚拟摄像头, 安卓虚拟摄像头过人脸
这个实现包含三个主要部分:虚拟摄像头核心服务、安卓环境配置脚本和客户端测试程序
|
存储 安全 Android开发
"解锁Android权限迷宫:一场惊心动魄的动态权限请求之旅,让你的应用从平凡跃升至用户心尖的宠儿!"
【8月更文挑战第13天】随着Android系统的更新,权限管理变得至关重要。尤其从Android 6.0起,引入了动态权限请求,增强了用户隐私保护并要求开发者实现更精细的权限控制。本文采用问答形式,深入探讨动态权限请求机制与最佳实践,并提供示例代码。首先解释了动态权限的概念及其重要性;接着详述实现步骤:定义、检查、请求权限及处理结果;最后总结了六大最佳实践,包括适时请求、解释原因、提供替代方案、妥善处理拒绝情况、适应权限变更及兼容旧版系统,帮助开发者打造安全易用的应用。
371 0
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
2123 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了