ratsafalig 发表于 2021-7-25 22:18

IDA无法调试安卓.so文件

环境是夜神模拟器 Android7 + IDA7.0
测试的APK是拿 unity + IL2CPP 打包的一个简单的方块旋转的游戏



1. adb 链接模拟器 push 进 ida 的 android_x86_server
2. chmod 777 ./android_x86_server
3. adb forward xxx
4. IDA 打开选择 remote linux debugger




没打断点之前一切正常, 但是就有一个奇怪的点就是不管什么时候按 【Continue Process】然后不管什么时候按下【Pause Process】, eip寄存器都停在同一个地方。
而且栈上的函数说明正在epoll_wait的流程中

我理解epoll函数会让进程处在等待的状态, 但是一旦我恢复程序的运行(按下【Continue Process】), 然后在上文说的 eip 下面一两行的位置打上断点, IDA马上又会hit到那个断点(如果进程处在等待状态又为什么会马上hit到那个断点呢 ? 还是说我一旦打断点, 就把进程从等待状态里恢复 ? )

接下来就更奇怪了, 一旦 hit 到了断点之后再【disable】这个断点, 然后再【Continue Process】,就会收到 SIGTRAP, 而且位置都会在刚才【disable】的breakpoint的下一条指令



ps:我用 gdbserver + gdb用命令行进行尝试就不会出现这个问题

但是如果用gdbserver + IDA的remote gdb debugger, 还是会出现一样的问题

- - -

有没有人尝试过用安卓模拟器 + IDA 动态调试的

顺便问一句通常下动态调试安卓.so文件采用什么方案

芽衣 发表于 2021-7-27 11:22

确定没有反调试吗??{:17_1089:}

ratsafalig 发表于 2021-7-27 17:32

芽衣 发表于 2021-7-27 11:22
确定没有反调试吗??
确定没有反调试, 因为这是自己写的demo

我昨天用雷电模拟器3.x的试了一下, 可以选 discard SIGSEGV 和 SIGTRAP 两个消息,然后正常运行, 但是在夜神里无法忽视, 要么闪退, 要么卡在一个位置不动了.

芽衣 发表于 2021-7-27 17:34

ratsafalig 发表于 2021-7-27 17:32
确定没有反调试, 因为这是自己写的demo

我昨天用雷电模拟器3.x的试了一下, 可以选 discard SIGSEGV 和 ...

那应该是模拟器的问题,你用真机比较好。模拟器会有一些意外情况

ratsafalig 发表于 2021-7-27 18:02

芽衣 发表于 2021-7-27 17:34
那应该是模拟器的问题,你用真机比较好。模拟器会有一些意外情况

我能问一下。。为什么安卓游戏似乎用IDA或者GDB attach进去都是停在 epoll_wait 函数的调用中..

话说如果进程处在epoll的wait状态, 我强行让它单步调试, 会发生什么结果呢..谢谢啦

芽衣 发表于 2021-7-27 19:59

ratsafalig 发表于 2021-7-27 18:02
我能问一下。。为什么安卓游戏似乎用IDA或者GDB attach进去都是停在 epoll_wait 函数的调用中..

话说 ...

模拟器的问题,用真机不会有这种情况。

geekchina 发表于 2021-10-8 23:28

gdbserver 是用在嵌入系统的,虚拟机上运行正常吗
页: [1]
查看完整版本: IDA无法调试安卓.so文件