这样的帖子很多,这里我总结了一些出错的问题,希望对大家有所帮助
手机准备工作一.在 IDA 目录下的 /dbgsrv/android_server 文件,push进android机,启动 android_server : adb push android_server /data/local/tmp/adb shellsucd data/local/tmpchmod 777 android_server./android_server
出现: 1|root@hwG610-T11:/data/local/tmp/ # ./android_server
./android_serverIDA Android 32-bit remote debug server(ST) v1.17. Hex-Rays (c) 2004-2013Listening on port #23946...
[Attention]- 此android_server必须和ida是配套的
- 手机你有root权限,不是你adb push 到任何目录都是可以的,还是指定到/data/local/tmp/ 是比较OK的,你非要zuo,那么也可以,先adb push到任何目录,再adb shell ,用mv 或者 copy 过去呗
- 出现
root@hwG610-T11:/data/data # ./android_server
./android_server
IDA Android 32-bit remote debug server(ST) v1.19. Hex-Rays (c) 2004-2015bind: Address already in use
1|root@hwG610-T11:/data/data # ps | grep android_serverps | grep android_serverroot 27118 26474 9992 9404 c00a7fbc 40180e20 S ./android_server1|root@hwG610-T11:/data/data # kill -s 9 27118 (将进程杀死,就OK了)kill -s 9 27118
二.端口转发 adb forward tcp:23946 tcp:23946
三. 打开应用等待调试
adb shell am start -D -n com.xxxx.xxxx/.MainActivity
四. IDA 附加
开一个ida,菜单栏设置 Debugger -> Attach -> Remote ARMLinux/Android debugger 如下: 点击ok,弹出进程列表,例如:
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
正常情况会出现: 设置未捕获的java.lang.Throwable设置延迟的未捕获的java.lang.Throwable正在初始化jdb...>
错误: D:\crack>jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700java.net.SocketException: Software caused connection abort: recv failed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketInputStream.read(SocketInputStream.java:170) at java.net.SocketInputStream.read(SocketInputStream.java:141) at com.sun.tools.jdi.SocketTransportService.handshake(SocketTransportService.java:130) at com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:232) at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:116) at com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:90) at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:519) at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:328) at com.sun.tools.example.debug.tty.Env.init(Env.java:63) at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1066)致命错误:无法附加到目标 VM。
- 检查调试的app配置文件中是否有 android:debuggable="true" ,导致不能调试。 可以通过
aapt list -v -a myfile.apk 来查看是否设置OK
这个命令将会打印和apk相关的所有详细信息,找到“android:debuggable",它的值分为: 0x0: debuggable false 0xffffffff: debugabble true - 若无则在清单文件的application中加上,重新打包即可.
最后记住F9运行,不要在那里傻等着
|