繁体   English   中英

哪个linux进程处理syscall?

[英]Which linux process handles syscalls?

这可能是一个愚蠢的问题,但是我正在使用gdb调试二进制文件,试图对其进行“逆向工程”,并获得了执行syscall的指令,此后便出现了我要逆向工程的效果。 我假设另一个进程正在接管并完成工作,因此我想知道是否可以调试使用gdb处理系统调用的内核代码。

这是进行syscall的x86汇编代码段(似乎是sys_getpid):

0x00007ffff7660d3e <+14>:   movsxd rdx,edx
0x00007ffff7660d41 <+17>:   movsxd rdi,edi
0x00007ffff7660d44 <+20>:   mov    eax,0x14
0x00007ffff7660d49 <+25>:   syscall 

syscall (或sysenterint 0x80等)机器指令用于进行syscall ,根据定义,这些调用Linux内核处理。 详细信息在x86-64 ABI规范中定义。 阅读Advanced Linux Programming以获得其中大多数的概述。 另请参见Linux Assembly HowTo

从用户应用程序的角度来看,系统调用是虚拟的原子指令。

没有特定的Userland进程在处理系统调用,处理系统调用是内核的工作,这几乎是应用程序与内核进行交互的唯一方法。

内核针对给定进程对系统调用的处理被记为系统CPU时间,例如,按time(1)

已记录的syscall列表在syscalls(2)中给出 另请参见<asm/unistd.h><asm/unistd_64.h>等...标题。

您可以使用strace(1)来了解由特定运行(某些进程)完成的系统调用的顺序。

另请参见vdso(7)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM