安卓动调

安卓动态调试

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即可,接下来就是等待时间

然后就可以调试了

0x01-JEB调试