android - android 操作系统中的系统调用是如何执行的,是否可以监控它们?

标签 android hook system call dalvik

我在理解系统调用如何在 Android 应用程序执行中发挥作用时遇到了一些问题。

根据我对 android 应用程序执行的理解,.class 文件被翻译成 dalvik 字节码 (DEX),它们组合在一起形成 ODEX。 ODEX然后用JIT编译器直接编译成机器码执行。

在这种情况下,android 的 linux 内核上的系统调用是如何发挥作用的?另外,有什么办法可以监控这些系统调用吗?

最佳答案

系统调用是内核空间的函数,可供 用户空间。它提供了操作硬盘驱动器文件或控制进程的能力。它可以通过 libc.so 获得。所有需要与 linux 操作系统/Android 操作系统交互的代码(Java、 native ,等等......)最终都会调用系统调用。 Strace 是一个用于调试进程的 Linux 实用程序。它可以监控系统调用、信号传递和进程状态的变化。 Strace 使用ptrace 系统调用来监视另一个进程的内存和寄存器。要使用它,只需执行:

strace -p <package-name-pid> 

关于android - android 操作系统中的系统调用是如何执行的,是否可以监控它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28326479/

相关文章:

c - 第二次迭代后,Scanf 无法在循环中使用 fork

Android 在 Nexus 设备上隐藏软键

php - 如何在 PHP 中获取系统信息?

android - Mockito 模拟 Android 上下文 PackageManager 异常

java - Android Java中递归文件夹删除(API17)

c++ - 在linux库中查找静态函数地址

git - 你能在 git commit 期间更改文件内容吗?

c++ - 系统范围的钩子(Hook)不在主程序之外运行

java - Android 监听器(读取小米波段传感器数据)

android - 如何在通知点击时转到特定 Activity ?