Android 逆向Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 逆向Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )相关的知识,希望对你有一定的参考价值。
文章目录
一、远程调用总结
在之前的博客
- 【Android 逆向】Android 进程注入工具开发 ( 调试进程中寄存器的作用 | 通过 EIP 寄存器控制程序运行 | EIP 寄存器的存档与恢复 )
- 【Android 逆向】Android 进程注入工具开发 ( EIP 寄存器指向 dlopen 函数 | ESP 寄存器指向栈内存 | 调试程序收回目标进程控制权 )
中简要介绍了注入工具远程调用的具体的过程 ;
远程调用总结 :
- 计算函数地址 : 通过计算 , 获取远程调用函数的内存地址 ;
- 设置 EIP 寄存器 : 将 EIP 寄存器指向远程调用函数 ;
- 申请栈内存地址 : 使用 mmap 申请内存 , 并将远程调用函数参数设置到该内存中 ;
- 设置 ESP 栈内存地址 : 将 ESP 寄存器指向申请的内存中 ;
- 收回控制权 : 执行完毕后 , 返回到 0 地址 , 令目标进程崩溃 , 调试进程收回控制权 ;
二、远程调用注意事项
上述修改运行时代码时 , 有一些注意事项 :
- 执行的 远程函数 必须是 立即返回 的 , 由于要在函数执行完毕后返回 0 地址 , 一旦访问该地址程序崩溃 , 调试程序 就可以收回 目标程序的控制权 ; 如果 目标程序 一直执行不返回 , 或者没有返回值 , 如果不返回到 0 地址崩溃 , 那么 调试程序 就一直无法收回控制权 ;
- 远程函数 不能有崩溃 , 如果用户传入一个空指针参数 , 导致 目标进程 崩溃 , 调试程序 提前 收回了 目标程序 控制权 , 这样就会导致 远程函数 调用失败 ;
- 寄存器恢复 , 寄存器使用前 , 一定要存档 , 使用完毕后 , 恢复寄存器值 ; 要保护目标进程 原有的 寄存器 和 内存 , 否则在结束调试 , 恢复运行时 , 会产生异常 ; 寄存器 注意 EIP 和 ESP 寄存器的存档与恢复 , 栈内存 需要 恢复到原来的地址 , 并释放 mmap 申请的内存 ;
以上是关于Android 逆向Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )
Android 逆向Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )
Android 逆向Android 进程注入工具开发 ( SO 进程注入环境及 root 权限获取 | 进程注入时序分析 )
Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 调试进程 ATTACH 附着目标进程 | 读取目标函数寄存器值并存档 )
Android 逆向Android 进程注入工具开发 ( 远程调用 | x86 架构的返回值获取 | arm 架构远程调用 )
Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )(代