-
-
[原创] IDA7.2 android_server 在 Android10 下无法获取子线程问题修复
-
2020-3-14 22:18
10887
-
[原创] IDA7.2 android_server 在 Android10 下无法获取子线程问题修复
最近在Android 10 的机器上用 IDA 调试的时候发现进程附加后,线程列表只有主线程。
周末有时间就看看,具体是什么问题。
问题定位:
尝试1:
手头有idasdk72,看到里面有android_server相关的实现代码,尝试自己编译出 android_server,最后发现idasdk包中还是缺少下面的静态库。
尝试2:
虽然没法自己编译 android_server,通过源码+二进制+frida调试,最后还是可以定位出问题的位置
出问题的函数在 idasdk72/dbg/linux/linux_threads.cpp 文件中,主要是因为判断libc.so是否已经加载成功逻辑有问题,导致 tdb_new 在 判读 libc_loaded 后直接退出。
Android 10 以后为了方便系统更新将系统一些重要功能按模块封装,详情可以看
其中 libc.so 被封装到 Runtime 模块
进程加载的 libc.so 的真实路径应该为 /apex/com.android.runtime/lib/bionic/libc.so。但是
tdb_new判断 libc.so 是否加载的时候依旧使用 /system/lib/libc.so 跟
/system/lib64/libc.so
修复
因为缺少一些静态库,没法重新编译 android_server ,修复方式只能通过修改二进制的形式,直接跳过libc是否加载成功的判断流程。
修改方式如下:
修改效果:
跟我有相同问题的人,可以按照我上面的修改。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课