如何反汇编系统调用

时间:2011-12-14 09:04:52

标签: linux linux-kernel x86 system-calls disassembly

如果我有系统调用的虚拟地址,我可以反汇编该系统调用吗?我想在运行内核时查找运行时特定系统调用所处理的所有地址。

我正在运行32位2.6.38内核(x86)。

1 个答案:

答案 0 :(得分:0)

我不确定你的问题是否有意义。

请详细了解system callskernelsoperating systemslinuxlinux kernel

本质上,系统调用(从应用程序的角度来看)是由一个机器指令(int 0x80syscall等)实现的原子操作,之前有一些簿记指令(例如,将系统调用参数加载到寄存器中)之后(例如,设置errno)。当它发生时,控制进入内核,具有(种类)不同的地址空间和不同的protection ring;这是list of linux syscalls

执行系统调用的真实代码在内核中。您可以在kernel.org

上获取Linux内核代码

另请参阅Linux Assembly Howtoasm.sourceforge.net

要了解给定应用程序或进程正在执行的系统调用,请使用strace