复制android_server至目标设备
将ida的根目录下的dbgsrv文件夹中的android_server
按照目标设备的架构选择对应版本
1 2 3 4 5 6 7 8 9 10 11 12
| //复制到设备上 adb push android_server64 /data/local/tmp //修改权限,使之能执行 chmod 777 /data/local/tmp/android_server64 //执行 cd /data/local/tmp ./android_server64 //转发端口 adb forward tcp:23946 tcp:23946
|
使用pm、am、启动android_server64
pm和am都是安卓自带的
pm
pm(package manager)包管理工具,可以用于确认包名:
列出所有的包信息:pm list packages [filter]
pm过滤器:
- -d:只显示禁用的应用的包名
- -e:只显示可用的应用的包名
- -s:只显示系统应用的包名
- -3:只显示第三方应用的包名
am
am是activity manager的缩写,用于启动apk
am启动程序命令:am start -D -n com.example.testarm/.MainActivity
android_server64
直接在shell中启动就可以,如果想修改使用的端口,在后面加上-p[port]
就行
记得adb forward转发端口
ida设置
3/13更新
这个可以不用全勾选,attach好像会在so开始的时候停一下,然后F9再跑就行
ida attach
Debugger > attach to process 找到对应的进程就行
连接dubug
jdb连接
用DDMS看程序开发的调试端口,DDMS会自动帮你转发端口
或者自己手动转发:
1
| adb forward tcp:8700 jdwp:PID (pid监听)
|
用jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8600
命令进行连接
port对应的参数是DDMS看到的开放的端口
最后
看手机(
等加载完,win调试安卓慢得一批,说是mac调试快的飞起,唉,没钱
剩下的就是愉快的下断点调试
Frida连接
先挖个坑,xman说可以用这个,说是用下面这个指令以spawn方式启动:
1
| frida -Uf [包名] -l [脚本名] --pause
|
然后用ida attach上去,再下断点,这个自己还没试成功
这篇博客写到一半停了是因为ida断不下来,后来请教APeng大哥解决了
原因在安卓文件的AndroidManifest.xml 里面,如果配置了(或默认配置了)android:extractNativeLibs="false",so不会解压出来而是直接映射apk,ida无法找到这个so。
所以把这个改成true后,ida就能找到so。
没改之前在proc目录中cat maps
是找不到对应的so,改了之后就能看到:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| sagit:/proc/16740 # cat maps | grep myso 7c6c9c0000-7c6ca04000 r-xp 00000000 103:01 1310888 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/lib/arm64/libmysowithjava.so 7c6ca04000-7c6ca09000 r--p 00043000 103:01 1310888 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/lib/arm64/libmysowithjava.so 7c6ca09000-7c6ca0a000 rw-p 00047000 103:01 1310888 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/lib/arm64/libmysowithjava.so 7c6caee000-7c6cbd5000 r--s 000da000 103:01 1310865 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/base.apk 7c6ccd3000-7c6ccf2000 r--p 00000000 103:01 1310926 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/oat/arm64/base.odex 7c6ccf2000-7c6ccf3000 r-xp 0001f000 103:01 1310926 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/oat/arm64/base.odex 7c6ccf3000-7c6d5e4000 r--s 00000000 103:01 1310928 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/oat/arm64/base.vdex 7c6d5e4000-7c6d5e5000 r--p 00020000 103:01 1310926 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/oat/arm64/base.odex 7c6d5e5000-7c6d5e6000 rw-p 00021000 103:01 1310926 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/oat/arm64/base.odex 7d073c4000-7d073d8000 r--s 00582000 103:01 1310865 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/base.apk 7d074b9000-7d074c0000 r--p 00004000 103:01 1310888 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/lib/arm64/libmysowithjava.so 7d076b1000-7d076b3000 r--p 00046000 103:01 1310888 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/lib/arm64/libmysowithjava.so 7d0aefd000-7d0aefe000 r--p 00047000 103:01 1310888 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/lib/arm64/libmysowithjava.so 7d0b3a3000-7d0b3a4000 r--p 00000000 103:01 1310888 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/lib/arm64/libmysowithjava.so 7d0c902000-7d0c903000 r--p 0001a000 103:01 1310930 /data/app/com.simu.mysowithjava-UmWCxfj5WgTBuVb0OBiMbA==/oat/arm64/base.art
|