如果我有系统调用的虚拟地址,我可以反汇编该系统调用吗?我想在运行内核时查找运行时特定系统调用所处理的所有地址。
我正在运行32位2.6.38内核(x86)。
答案 0 :(得分:0)
我不确定你的问题是否有意义。
请详细了解system calls,kernels,operating systems,linux和linux kernel
本质上,系统调用(从应用程序的角度来看)是由一个机器指令(int 0x80
,syscall
等)实现的原子操作,之前有一些簿记指令(例如,将系统调用参数加载到寄存器中)之后(例如,设置errno
)。当它发生时,控制进入内核,具有(种类)不同的地址空间和不同的protection ring;这是list of linux syscalls
执行系统调用的真实代码在内核中。您可以在kernel.org
上获取Linux内核代码另请参阅Linux Assembly Howto和asm.sourceforge.net
要了解给定应用程序或进程正在执行的系统调用,请使用strace