文章目录
一、调试进程 ATTACH 附着目标进程
- 一、调试进程 ATTACH 附着目标进程
- 二、读取目标函数寄存器值并存档
- 1、主要操作流程
- 2、ptrace 函数 PTRACE_GETREGS 读取寄存器值
在 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具的 main 函数分析 ) 博客中 , 在 main 函数中获取了 进程号 PID , 下面开始将 SO 动态库注入该 PID 进程号对应的目标进程 ;
ptrace
函数调用的前提是 , 当前应用必须有 root 权限 , 否则调用会失败 ;
首先 , 调用
ptrace(PTRACE_ATTACH, pid, NULL, 0)
函数附着目标进程 , 获取目标进程的控制权 , 传入 PTRACE_ATTACH
参数 ;
具体的 ptrace 函数族的参数 , 参考 【Android 逆向】ptrace 函数 ( ptrace 函数族 | 进程附着 | 进程脱离 | 进程数据读写权限 | 进程对应的主线程寄存器读写 | 单步调试 |ptrace 函数族状态转换 ) 博客 ;
之后 , 需要 阻塞等待 被调试 的 目标进程返回 , 如果目标进程状态变为 WUNTRACED
被调试状态 , 就可以执行下一步的操作 ;
int status = 0;
/* 等待关联进程结果返回 , 目标进程状态变为 WUNTRACED */
waitpid(pid, &status, WUNTRACED);
附着目标进程完整代码 :
/* 附着目标进程 */
int ptrace_attach(pid_t pid)
{
/* attach 关联 要调试的 目标进程 */
if (ptrace(PTRACE_ATTACH, pid, NULL, 0)
关注
打赏
热门博文
- 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )
- 【Android Gradle 插件】Gradle 构建生命周期 ③ ( BuildListener 构建监听器 | TaskExecutionGraphListener 任务执行图监听器 )
- 【Android Gradle 插件】Gradle 构建生命周期 ② ( Gradle 类的添加构建生命周期监听器函数 | Gradle#addListener 函数 )
- 【Android Gradle 插件】Gradle 构建生命周期 ① ( 分析构建脚本 | 执行初始化配置 | 执行 Gradle 任务 | Project#beforeEvaluate 函数 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑨ ( 控制 Gradle 执行任务顺序 | Task#finalizedBy 函数 | 控制 Gradle 执行任务顺序示例分析 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑧ ( 控制 Gradle 执行任务顺序 | Task#shouldRunAfter 函数 | 三个函数使用场景对比 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑦ ( 控制 Gradle 执行任务顺序 | Task#dependsOn 函数 | Task#mustRunAfter 函数 )
- 【数学分析】集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )
- 【数学分析】学科简介 ( 初等数学缺陷 | 微分与积分 | 学习数学分析的目的 | 数学分析与高等数学对比 )
- 【Android Gradle 插件】自定义 Gradle 任务 ③ ( Gradle 自定义任务创建方法 Project#task 函数 | Task#doFirst 函数用法 )