【Android 逆向】Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )
2023-09-14 09:07:30 时间
一、编译注入工具
在 Visual Studio 2019 中打开了一个 " 生成文件项目 " , 该项目就是注入项目 ; 参考 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 ) 博客 ;
编译该项目 ,
生成结果如下 :
已启动生成…
1>------ 已启动生成: 项目: magic, 配置: Debug Win32 ------
1>[x86] Compile : bridge <= bridge.c
1>[x86] SharedLibrary : libbridge.so
1>[x86] Install : libbridge.so => ../Debug/x86/libbridge.so
1>[x86] Compile++ : cmd <= command.cpp
1>[x86] Compile++ : cmd <= json_reader.cpp
1>[x86] Compile++ : cmd <= json_value.cpp
1>[x86] Compile++ : cmd <= json_writer.cpp
1>[x86] Executable : cmd
1>[x86] Install : cmd => ../Debug/x86/cmd
1>[x86] Compile : tool <= main.c
1>[x86] Executable : tool
1>[x86] Install : tool => ../Debug/x86/tool
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
二、编译结果文件说明
编译完成后的编译结果有
- tool 可执行文件
- cmd 可执行文件
- libbridge.so 动态库
上述文件都是在 PC 电脑上的 x86 架构的 Android 模拟器上运行的相关文件 , 具体就是 雷电模拟器 3.75 版本 ;
使用上述工具调试 Android 进程参考如下博客 :
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system )
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 使用 IDA 分析要修改的内存特征 | 根据内存特征搜索修改点 | 修改进程内存 )
三、注入过程说明
将所有文件拷贝到 Android 模拟器的 /data/system/debug/
目录下 , 然后赋予 777 权限 ;
执行
tool 2222
命令 , 即可 attach 调试 进程号 PID 为 2222 的 进程 ;
根据 PID , 一定能在 /proc/2222/mmaps 文件中找到该进程 每个 so 动态库的运行地址 , 尤其是 libc.so 动态库的地址 ;
先远程注入 libbridge.so 动态库 , 然后远程调用 libbridge.so 中的 load 函数 , 将真正的 libnative.so 加载到目标进程中 ;
使用修改寄存器的方法 强行加载 libbridge.so 动态库 , 会影响目标进程的布局 , 因此这个动态库越小越好 , 并且 使用完毕后 , 马上关闭该动态库 , libbridge.so 动态库只起一个敲门的作用 , libnative.so 加载完成后 , 直接将 libbridge.so 动态库干掉 , 过河拆桥 ;
上述操作同时 , 恢复 寄存器 和 栈内存 的值 ;
相关文章
- 2019最新Android面试题「建议收藏」
- android 读取本地数据库db文件(Android sqlite)
- iphone4装android,iPhone4可安装Android实现双系统启动.pdf
- Android开发笔记(一百八十五)使用设备浏览器Device File Explorer导出存储卡的文件
- Android平台实现mp4文件实时推送RTMP|轻量级RTSP服务|GB28181平台
- Android so文件浅析「建议收藏」
- 【Android 应用开发】Android 上实现非root的 Traceroute -- 非Root权限下移植可执行二进制文件 脚本文件
- 【Android FFMPEG 开发】FFMPEG 音视频同步 ( 音视频同步方案 | 视频帧 FPS 控制 | H.264 编码 I / P / B 帧 | PTS | 音视频同步 )
- 【Android 性能优化】应用启动优化 ( 阶段总结 | Trace 文件分析及解决方案 | 源码分析梳理 | 设置主题的方案总结 ) ★
- 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 简介 | 权限申请处理细节 | 添加依赖 | 界面权限申请结果处理 | 权限申请结果回调接口 )
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | 加载 dex 文件 | 将系统的 dexElements 与 应用的 dexElements 合并 | 替换操作 )
- 【Android 文件管理】分区存储 ( 修改与删除图片文件 )
- 【Binder 机制】分析 Android 内核源码中的 Binder 驱动源码 binder.c ( googlesource 中的 Android 内核源码 | 内核源码下载 )
- 【Android 逆向】APK 文件处理脚本 ApkTool.py ( 脚本简介 | 用法 | 分析 APK 文件 )
- 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 反汇编二进制机器码 | 打印反汇编数据 )
- android ignore文件备份详解手机开发
- Android 图片加载[常见开源项目汇总]详解编程语言
- 金山词霸下载 金山词霸v8.2.1 Android去广告版下载
- Android调用google地图生成路线图实现代码
- Android开发:TextView加入滚动条示例
- android获取照片的快照思路及实现方法
- android实现蓝牙文件发送的实例代码,支持多种机型
- Android中刷新界面的二种方法
- android定位的4种方式介绍