赞
踩
SO 注入的前提必须有 root 权限 , 有了 root 权限后 , 才能调用 ptrace 相关函数 ;
SO 注入环境有两种情况 , Android 模拟器 或 真实手机 ;
这里特别推荐使用 雷电模拟器 进行逆向操作 , 在真机上会出现各种问题 ;
使用 Android 模拟器 , 如 雷电模拟器 , 使用 ld 工具查看日志 , 查看日志命令为 :
ld.exe logcat
上述命令需要进入雷电模拟器安装目录执行 , ld.exe 在雷电模拟器安装目录的根目录中 ;
如果使用 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 ;
最后恢复 目标进程 执行 ;
远程调用流程 :
参考之前涉及到 SO 注入的流程 :
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。