Mac环境IDA动态调试Android应用

一、环境

1.Mac 11.1 (20C69)
2.Root后的魅蓝Note6
3.IDA Version 7.0.170914
4.mprop

使用IDA调试安卓应用需要满足以下两个条件的任何一条
1)  App的AndroidManifest.xml中Application标签包含属性android:debuggable=true,这个方法需要修改文件后重新打包再签名文件,麻烦。
2)修改boot.img中 /default.prop中ro.debuggable的值为1, 这个方法需要修改安卓的boot.img,然后再刷机,还是麻烦。
所以,如果以上两种条件都不满足的时候,这时候就用到了mprop,使用adb运行mprop命令即可实现使用IDA动态调试安卓应用。下面会详细说明

二、开始调试

1.上传IDA开启远程调试服务文件授权并执行
在ida.app/Contents/MacOS/dbgsrv目录下执行bash命令:
>$ adb push android_server64 /data/local/tmp
>$ adb //进入安卓命令行操作
M6Note:/ $ su //使用魅蓝Note6超级管理员身份
M6Note:/ # cd /data/local/tmp
M6Note:/data/local/tmp # chmod 777 android_server64
M6Note:/data/local/tmp # ./android_server64
如下图:

2.mprop设置ro.debuggable为1
在含有mprop文件的目录下执行bash命令:
>$ adb push mprop /data/local/tmp/mprop #分为x32位和x64位
>$ adb //进入安卓命令行操作
M6Note:/ $ su //使用魅蓝Note6超级管理员身份
M6Note:/ # cd /data/local/tmp
M6Note:/data/local/tmp # chmod 777 mprop 
M6Note:/data/local/tmp # setprop ro.debuggable 1
M6Note:/data/local/tmp # ./mprop -r 
如下图:

可以使用这个命令查看是否修改成功,显示结果1则说明修改成功。
M6Note:/data/local/tmp # getprop ro.debuggable
关于mprop,每次手机重启都需要如此操作。

3.转发ida端口 开启adb应用调试
>$ adb forward tcp:23946 tcp:23946
>$ adb shell am start -D -n 包名/包名对应启动Activity
如果不知道包名和对应的启动的Activity,可使用命令
>$adb shell dumpsys activity top //启动app后执行这个命令拿到包名
>$adb shell dumpsys package 包名 //一般查询含有action.MAIN的Activity就是

通过adb shell am start -D -n 打开应用后,手机会显示应用被打开,且有个弹窗显示“Waiting For Debugger”标题的对话框。

4.打开IDA
菜单:Debugger->Attach->Remote ArmLinux/Android

然后找到对应的包名称

然后静静的等待加载分析完成。