调试学习
arm文件
- 安装qemu-arm虚拟机以及依赖
1 | apt install re2c |
qemu-arm –version #用于检查安装是否成功
1 | qemu-arm -g 23946 文件 |
启动程序。
23946是ida默认端口,也可以自己换。
ifconfig #查看ip地址
在ida上选择remote GDB debugger调试输入地址就行即可。
apk文件
用jeb进行调试,需要app或模拟器开启debug调试
adb启用应用调试
1 | adb shell am start -D -n 包名/类名 |
例如: adb shell am start -D -n com.zhuotong.easyctf2/.MainActivity
记得加点在mainactivity前
下断点快捷键:ctrl+B,只能在汇编页面下断点
然后在jeb里面连接,在右侧就可以看到变量的值
注意,有些值可能不在这个外层方法使用,这个时候我们要先单步进入到方法里面才可以拿到值
安卓so文件
先把ida的调试文件用adb push到机器里面,然后赋予执行权限,启动合适的服务。
1 | adb root |
接下来打开安卓sdk中自带的ddms,输入下面命令启动程序
1 | adb shell am start -D -n 包名/.类名 #启动应用调试 |
在ddms中记住调试进程的端口。现在来到ida中配置,选择debugger,process options,在hostname中填入127.0.0.1,port默认23946,然后再到debugger中选择attath to process,选择要调试的安卓进程。记得打上一个断点,进入后会卡住,这时候我们输入,其中port后面的数字就是我们记住的端口。
1 | jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700 |
如果ddms里面不显示进程可以尝试打开全局调试,下面是在magsk下的方案
在adb shell su下输入以下命令
1 | magisk resetprop ro.secure 0 |
重启手机。
IOT
根据架构qemu运行,命令后面加上 -s -S
gdb远程调试附加(默认端口1234)
1 | target remote 127.0.0.1:1234 |
直接用ida的远程gdb调试也行。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 huanghunr's Blog!