jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8608
java.io.IOException
at com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:234)
at com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:241)
at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:117)
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。
错误原因:
在使用IDA在android10环境下debug启动apk调试so文件时,会出现这样的错误,这是由于android10的libc文件不在/system/lib/libc.so目录下,
而是在/apex/com.android.runtime/lib/bionic/libc.so目录下,由于android_server在判断是否加载libc的逻辑中失败,所以无法调试。
解决办法:
方法1,让android_server程序判断找到libc即可,我这里采用的时patch原先的libc路径为/apex/com.android.runtime/lib/bionic/libc.so和/apex/com.android.runtime/lib64/bionic/libc.so
方法2,当然还是可以指定glibc的路径来解决
export IDA_LIBC_PATH=/apex/com.android.runtime/lib/bionic/libc.so
export IDA_LIBC_PATH=/apex/com.android.runtime/lib64/bionic/libc.so
方法3,修改android判断libc的逻辑
我觉得每次启动android_server都要指定libc加载路径过于繁琐,所以直接使用方法1比较稳妥。
成品在此连接中:
链接: https://pan.baidu.com/s/1I1FlHHUGT5aPEmjtPcP22Q?pwd=cu9f 提取码: cu9f 复制这段内容后打开百度网盘手机App,操作更方便哦
这是修改ida7.5的版本,其他ida版本未测试是否可以使用
效果展示;
参考链接:
https://bbs.kanxue.com/thread-258103.htm