为什么我不能使用 IDA 调试 Android Native Code?

问题描述

我的环境是Windows 10和谷歌官方Android Emulator,IDA 7.5版

这是我所做的:

  • 使用 Unity 和 IL2CPP 脚本后端创建演示应用程序。
  • 使用 adb 安装此应用并推送 android_x86_server(因为 Android Emulator 是 x86 arch )
  • chmod 777 ./android_x86_serveradb forward xxx,打开演示应用程序。
  • 使用 IDA 的远程 linux 调试器附加到演示应用程序

问题来了:

  • 在我设置断点之前。 evthing按预期工作正常。唯一的问题是,每当我点击 Continue ProcessPause Process 时,eip 总是停在同一个位置:

enter image description here

  • 让我们调用进程总是停在的位置:A,一旦我在A之后设置断点,进程立即遇到断点,如果我点击Continue Process,进程然后再次命中断点。 (到目前为止,一切正常)
  • 然后如果我禁用断点,然后单击Continue Process,IDA 报告SIGTRAP
    并且信号总是在我之前设置的断点的下一条指令的地址处收到:

enter image description here

enter image description here


然后我尝试使用 gdbserver + gdb 来调试它。它工作得很好。

我认为这可能与 IDA 的 remote linux debugger 有关,然后我转而使用 gdbserver + IDA 的 remote gdb debugger,同样的事情发生(在命中断点后,它收到 SIGTRAP )。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)