引言
众所周知,IDA在我们调试Android程序的时候是一个很棒的利器,在做调试前我们需要的就是一部root过的移动设备,当然这是很理想的情况,但是现实总是事与愿违的,对于我们大部分人来说可能会碰到各种各样的问题(技术大牛除外),比如说我是开发人员,我不会root、后者是手机不支持root,没有官方和第三方的root包、还有就是刷root的本身就是一件有风险的事情,如果点背的话刷成板砖了等等;即时最后root成功了,可能你在上面花费的时间远远大于你调试软件的时间。针对root手机的不方便性、我来介绍一种不需要root手机直接调试的方法。
前期准备
配置好JDK, SDK环境变量,并且在开发者模式下开启调试状态
一台未root的手机(我用的是vivo X23)
Android Studio
IDA (我用的汉化的7.0版本)
android:debuggable=“true”
直接上干货
从图片看出我的设备是未root的,没有su权限;接下来我们使用run-as命令操作:
到达这步我们就有权限操作被调试进程了,下面我们把IDA的远程调试服务拷贝到当前进程目录下,然后对我需要的服务进行提权操作,然后就可以正常运行服务了,具体如下图:
从图中看到,已经成功连接IDA的服务了,可以从图中看见我导入了两个服务android_server
和android_server64
,由于我们没有root权限,正常的"adb push"和“cp“指令都是无法使用的,你会得到如下图的结果:
可以看到我们是没有权限操作的,所以这一就要用到 “Android Studio”了,接下来打开“Android Studio”,打开后你会在右下角看见Device File Explorer
,在IDE页面的右下角的位置你会看见他具体如图:
双击打开,你就会发现文件列表,然后找到我们程序的包名,我是在data\data\com.lsg.testnative
路径下,然后右击文件夹,选择Upload选项,然后就可以从本地把IDA的服务导入该文件目录下了,具体操作如下图:
接下来就可以附加所要调试的进程了,由于只有当前进程的权限,所以IDA的进程列表里面只有你自己的用户进程,IDA的具体效果如下图:
这样就完成了附加调试工作,我们可以尽情的调试我们想要的功能了,需要注意的一点即时程序一定要“android:debuggable = true”,只有这样我们才能用run-as
命令,才可以使用Android Studio
导入IDA的远程服务文件,这是必要的前提,否则快看见如下的提示:
总结
可以看出这种方法本质上还是那套附加调试的思路,只是想办法解决了权限的问题,虽然还是会受到一定的限制,比如我们可能需要二次打包apk,可能还需要过掉签名校验、文件校验之类的检测,但不能否定的是这也是一种可行的解决方案,我也相信肯定会在有些特定的场景会用的到,在这里本着学习精神和大家一起分享下,愿我的分享对你有所帮助。
声明:本文是作者原创,如有转载请附上原文链接,盗版必究!
来源:CSDN
作者:lsg305
链接:https://blog.csdn.net/lsg305/article/details/103638118