安卓动调
安卓动态调试
¶0x00-IDA调试so文件
¶参考文章
https://bbs.pediy.com/thread-262524.htm
¶实操
注意:手机要先ROOT,调试的so文件根据系统版本来选择
我的是arm64,所以选择这个
¶打开手机的USB调试功能
首先打开开发者选项,然后进入开发者选项打开USB调试
¶adb连接手机
adb devices
¶adb进入手机
adb shell
¶查看手机ro.debuggable
ro.debuggable是rom级别的调试,如果ro.debuggable的值是1说明你的手机已经打开了调试功能,如果为0的话需要安装的安卓app已经打开了android:debuggable属性方可调试,通常正式发布出来的apk默认android:debuggable属性都是关闭的
值为0,所以需要去让安装的app开启android:debuggable属性
¶开启被调试APK的debuggable属性
使用APK Editor Studio查看android:debuggable属性,没有的话就需要自行添加
这里我已经修改好了
¶重新签名打包
因为修改之后签名需要更新
在APK Editor Studio中按下Ctrl+Alt+S重新打包
¶安装APK文件到手机中
此时手机中会弹出安装提示,确认即可安装
也可以使用adb安装
https://blog.csdn.net/qq_43203586/article/details/104881919
¶上传ida的远程工具
在ida的dbgsrv目录下,将android_server64传入手机目录中
使用命令:adb push android_server64 /data/local/tmp
使用chmod提升权限
此时在该目录下我们可以找到该文件
¶启动android_server64
在data/local/tmp目录下直接运行
¶启动adb端口转发
adb forward tcp:23946 tcp:23946
¶以调试模式启动APK
启动前我们先获取Mainactivity
adb shell am start -D -n 包名路径/.Activity
以调试模式启动APK
adb shell am start -D -n com.j.hiddendata/.MainActivity
此时真机已经进入Waiting For Debugger界面了
¶ida下断点
在我们要调试的地方设置断点
¶ida进行动态调试
attach上我们的程序
此时已经停下,F9一下,让其处于运行状态
¶启动monitor并使用jdb连接端口
端口号为8600,接下来使用jdb连接
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8600
此时真机的等待调试窗口关闭
ida中提示已经加载,会问你包中的so文件是否和你的一致,选择same即可,接下来就是等待时间
然后就可以调试了