Linux系统调用表(system call table)

Linux系统调用表(system call table),第1张

转自:《 Linux系统调用表 》

《 linux系统调用表(system call table) 》

《 线上环境 Linux 系统调用追踪 》

《 Linux系统调用权威指南 》

《 为什么系统调用会消耗较多资源?系统调用的三种方法:软件中断(分析过程)、SYSCALL指令、vDSO(虚拟动态链接对象linux-vdso.so.1) 》

系统调用是用户程序和linux内核交互的接口,linux的系统调用有下面三种方式:

在x86与x86_64的系统中,都可以使用int $0x80指令来执行系统调用,参数使用如下:

x86_64引入了一个新指令syscall来执行系统调用,参数使用如下:

正常调用库函数( man 3 execve ),传参方式见 x86 调用约定

查看调用号:头文件 /usr/include/asm/unistd.h 内容如下,所以32位和64位的调用号可以分别在unistd_32.h和unistd_64.h中找到

查看参数: man 2 execve

以 execve 为例, man 2 execve 查看其接口如下: int execve(const char *pathname, char *const argv[], char *const envp[])

下面汇编实现了 execve("/bin/sh", 0, 0) :

32位:

64位:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/5924727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-08
下一篇 2023-03-08

发表评论

登录后才能评论

评论列表(0条)

保存