首先需要终端安装adb等工具,在mac下可以直接使用brew(或者下载编译好的文件,再添加PATH即可)
brew install android-platform-tools
windows系统的话可以直接下载二进制文件再添加环境变量即可
然后安装模拟器,我这里使用的是MuMu模拟器,打开模拟器之后进入设置
启用开发者选项
启用USB调试
然后我们就可以使用adb连接了,windows端口号是7555,macOS下端口号是22471
使用adb connect IP:PORT即可连接
adb devices可以查看连接设备
安装apk. adb install ./xx.apk
卸载apk. adb uninstall ./xx.apk
从电脑上传文件至模拟器 adb push ./xxx /tmp
从模拟器复制文件至电脑 adb pull /tmp/xxx ./
首先这里有个坑是emulator-5554这个设备,导致adb认为是个模拟器,导致插入安卓设备的时候,执行命令经常遇到 more than one devices错误,这个时候使用netstat -an|grep 5555 (linux或者macos) 然后输入lsof -i tcp:port,port即为端口号,找到应用,windows使用netstat -ano|findstr "5555"对应程序然后kill掉(类unix系统直接kill -9 xx即可,windows直接用任务管理器方便(task list --> kill ))
这时候就正常了
然后这里又遇到问题,设备离线
这时候重启大法吧
adb kill-server adb start-server adb remount
然后就可以连接上了(adb -s 设备 shell)
因为有点坑我这模拟器是x86架构的,不是arm,所以会导致一些程序出现兼容性问题,建议使用qemu去模拟(或者买个二手root过的手机,调试方便,因为要用到root权限去attach进程)
好的接下来就是pull一个dbgsrv和安装apk文件了,首先打开ida根目录下的dbgsrv文件夹,里面包含不同构架和平台的server文件
这里因为我是x86_64所以上传的android_x64_server
/data/local/tmp是可读可写权限的
然后启动程序
这时候模拟器监听在了23946端口上,为了不每次都去查看模拟器的端口,我们可以开启端口转发,这样我们每次只需要连接127.0.0.1的端口上就行了
然后安装apk文件,我找x86的软件找了好久,真的少,作为测试这里使用
然后使用adb install xxx.apk安装(其实我双击想解压的时候自己安装上了),然后本地解压apk
然后随便找个二进制文件,我这里找了个动态连接库
放入ida64。随便找个函数下个断点
找到debugger
然后设置一下ip和端口
然后选择attach
就会出现进程列表了
然后我们找到相应程序名字即可动态调试了
原文始发于微信公众号(由由学习吧):安卓软件动态调试
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论