3

我需要分析 android 应用程序的动态库调用,并决定为此目的使用“ltrace”工具进行分析。我将“ltrace”工具合并到android包中,然后一起编译成功。它适用于 shell 程序,就像通​​常的 linux 控制台应用程序一样。

但是,我无法正确分析从“Zygote”进程派生的 android 应用程序。我尝试将 ltrace 附加到“Zygote”进程以跟踪它的子进程,但我只收到 SIGCHLD 和 SIGSTOP 信号并异常终止,显示以下错误。

意外指令 0xffffffff 在 0xffff0508

我只是想知道是否有人曾经在 android 系统上尝试过这种分析。任何简短的评论都会对我很有帮助。

先感谢您。

4

2 回答 2

2

尝试将 ltrace 附加到你的 android 应用程序的进程后,它是从 zygote 分叉出来的。您将需要一个为 android 的仿生 libc 构建的 ltrace,以及一个对线程进行合理处理的 ltrace。

有一种方法可以设置可调试的 android 应用程序以等待 java 调试器的连接,您可以使用它,连接 ltrace,然后连接和断开 java 调试器以重新启动它。这应该捕获您自己的大部分逻辑,尽管不是整个启动。

IIRC 您处于连接并使其再次运行的时间限制,否则它可能会自行恢复以避免触发应用程序无响应的情况。

您可能会通过使用 java 调试器了解发生了什么,然后阅读源代码以了解它是如何在本机端实现的,从而了解更多信息。

于 2011-08-31T13:27:22.150 回答
0

Chris Stratton 先生的方法会奏效。

LoadLibrary()是调试 jni 的另一个要点。

于 2012-04-13T01:38:57.753 回答