我在理解系统调用是如何在android应用程序执行中起作用时遇到了一些问题。
根据我对安卓应用程序执行的理解,.class文件被翻译成dalvik bytecode (DEX),它被组合在一起形成ODEX。然后使用JIT编译器将ODEX直接编译成机器码以供执行。
在这种情况下,android的linux内核上的系统调用是如何发挥作用的?此外,有没有可能监控这些系统调用的方法?
发布于 2016-07-29 15:52:53
系统调用是内核空间的函数,可用于用户空间。它提供了操作硬盘文件或控制进程的能力。它可以通过libc.so获得。所有代码(Java、本机、其他任何...)需要与linux操作系统/ Android操作系统交互的应用程序最终将调用syscall。Strace是一个用于调试进程的Linux实用程序。它可以监控系统调用、信号传递和进程状态的变化。Strace使用ptrace系统调用来监视另一个进程内存和寄存器。要使用它,只需执行:
strace -p <package-name-pid> 发布于 2015-02-05 00:43:19
嗯,Java是一种高级语言,当你在Android中打开一个文件时,它会使用JNI调用fopen()。做任何“系统”东西的每一个方法都是如此。
是的,你可以在安卓系统中监控系统调用,但是你需要一个有根的设备,并且你需要用你的库替换系统.so库。
https://stackoverflow.com/questions/28326479
复制相似问题