Linux系统调用 汇编 int 80h

2023-11-07

1.系统调用

在计算机中,系统调用(英语:system call),又称为系统呼叫,指运行在使用者空间的程序向操作系统内核请求需要更高权限运行的服务。 系统调用提供了用户程序与操作系统之间的接口。大多数系统交互式操作需求在内核态执行。如设备IO操作或者进程间通信。

Linux的系统调用通过int 80h实现,用系统调用号来区分入口函数。 操作系统实现系统调用的基本过程是:
应用程序调用库函数(API);
API将系统调用号存入EAX,然后通过中断调用使系统进入内核态;
内核中的中断处理函数根据系统调用号,调用对应的内核函数(系统调用);
系统调用完成相应功能,将返回值存入EAX,返回到中断处理函数;
中断处理函数返回到API中;
API将EAX返回给应用程序。

寄存器eax存放调用号,剩下的几个寄存器存放参数。

以sys_write为例说明:

函数原型:
sys_write(unsigned int fd, const char * buf, size_t count)

[section .data]
strHello db “Hello, world!”,0Ah
STRLEN equ $ - strHello
[section .text]
global _start
_start:
mov edx,STRLEN;对应参数count
mov ecx,strHello;对应参数buf
mov ebx,1;对应参数fd,fd = 1,在linux中对应于stdout,指的是显示屏
mov eax,4;系统调用号为4,sys_write
int 0x80
mov ebx,0;参数为0,exit(0)
mov eax,1;系统调用号为1,sys_exit
int 0x80

%eax

Name

Source

%ebx

%ecx

%edx

%esx

%edi

1

sys_exit

kernel/exit.c

int

-

-

-

-

2

sys_fork

arch/i386/kernel/process.c

struct pt_regs

-

-

-

-

3

sys_read

fs/read_write.c

unsigned int

char *

size_t

-

-

4

sys_write

fs/read_write.c

unsigned int

const char *

size_t

-

-

5

sys_open

fs/open.c

const char *

int

int

-

-

6

sys_close

fs/open.c

unsigned int

-

-

-

-

7

sys_waitpid

kernel/exit.c

pid_t

unsigned int *

int

-

-

8

sys_creat

fs/open.c

const char *

int

-

-

-

9

sys_link

fs/namei.c

const char *

const char *

-

-

-

10

sys_unlink

fs/namei.c

const char *

-

-

-

-

11

sys_execve

arch/i386/kernel/process.c

struct pt_regs

-

-

-

-

12

sys_chdir

fs/open.c

const char *

-

-

-

-

13

sys_time

kernel/time.c

int *

-

-

-

-

14

sys_mknod

fs/namei.c

const char *

int

dev_t

-

-

15

sys_chmod

fs/open.c

const char *

mode_t

-

-

-

16

sys_lchown

fs/open.c

const char *

uid_t

gid_t

-

-

18

sys_stat

fs/stat.c

char *

struct __old_kernel_stat *

-

-

-

19

sys_lseek

fs/read_write.c

unsigned int

off_t

unsigned int

-

-

20

sys_getpid

kernel/sched.c

-

-

-

-

-

21

sys_mount

fs/super.c

char *

char *

char *

-

-

22

sys_oldumount

fs/super.c

char *

-

-

-

-

23

sys_setuid

kernel/sys.c

uid_t

-

-

-

-

24

sys_getuid

kernel/sched.c

-

-

-

-

-

25

sys_stime

kernel/time.c

int *

-

-

-

-

26

sys_ptrace

arch/i386/kernel/ptrace.c

long

long

long

long

-

27

sys_alarm

kernel/sched.c

unsigned int

-

-

-

-

28

sys_fstat

fs/stat.c

unsigned int

struct __old_kernel_stat *

-

-

-

29

sys_pause

arch/i386/kernel/sys_i386.c

-

-

-

-

-

30

sys_utime

fs/open.c

char *

struct utimbuf *

-

-

-

33

sys_access

fs/open.c

const char *

int

-

-

-

34

sys_nice

kernel/sched.c

int

-

-

-

-

36

sys_sync

fs/buffer.c

-

-

-

-

-

37

sys_kill

kernel/signal.c

int

int

-

-

-

38

sys_rename

fs/namei.c

const char *

const char *

-

-

-

39

sys_mkdir

fs/namei.c

const char *

int

-

-

-

40

sys_rmdir

fs/namei.c

const char *

-

-

-

-

41

sys_dup

fs/fcntl.c

unsigned int

-

-

-

-

42

sys_pipe

arch/i386/kernel/sys_i386.c

unsigned long *

-

-

-

-

43

sys_times

kernel/sys.c

struct tms *

-

-

-

-

45

sys_brk

mm/mmap.c

unsigned long

-

-

-

-

46

sys_setgid

kernel/sys.c

gid_t

-

-

-

-

47

sys_getgid

kernel/sched.c

-

-

-

-

-

48

sys_signal

kernel/signal.c

int

__sighandler_t

-

-

-

49

sys_geteuid

kernel/sched.c

-

-

-

-

-

50

sys_getegid

kernel/sched.c

-

-

-

-

-

51

sys_acct

kernel/acct.c

const char *

-

-

-

-

52

sys_umount

fs/super.c

char *

int

-

-

-

54

sys_ioctl

fs/ioctl.c

unsigned int

unsigned int

unsigned long

-

-

55

sys_fcntl

fs/fcntl.c

unsigned int

unsigned int

unsigned long

-

-

57

sys_setpgid

kernel/sys.c

pid_t

pid_t

-

-

-

59

sys_olduname

arch/i386/kernel/sys_i386.c

struct oldold_utsname *

-

-

-

-

60

sys_umask

kernel/sys.c

int

-

-

-

-

61

sys_chroot

fs/open.c

const char *

-

-

-

-

62

sys_ustat

fs/super.c

dev_t

struct ustat *

-

-

-

63

sys_dup2

fs/fcntl.c

unsigned int

unsigned int

-

-

-

64

sys_getppid

kernel/sched.c

-

-

-

-

-

65

sys_getpgrp

kernel/sys.c

-

-

-

-

-

66

sys_setsid

kernel/sys.c

-

-

-

-

-

67

sys_sigaction

arch/i386/kernel/signal.c

int

const struct old_sigaction *

struct old_sigaction *

-

-

68

sys_sgetmask

kernel/signal.c

-

-

-

-

-

69

sys_ssetmask

kernel/signal.c

int

-

-

-

-

70

sys_setreuid

kernel/sys.c

uid_t

uid_t

-

-

-

71

sys_setregid

kernel/sys.c

gid_t

gid_t

-

-

-

72

sys_sigsuspend

arch/i386/kernel/signal.c

int

int

old_sigset_t

-

-

73

sys_sigpending

kernel/signal.c

old_sigset_t *

-

-

-

-

74

sys_sethostname

kernel/sys.c

char *

int

-

-

-

75

sys_setrlimit

kernel/sys.c

unsigned int

struct rlimit *

-

-

-

76

sys_getrlimit

kernel/sys.c

unsigned int

struct rlimit *

-

-

-

77

sys_getrusage

kernel/sys.c

int

struct rusage *

-

-

-

78

sys_gettimeofday

kernel/time.c

struct timeval *

struct timezone *

-

-

-

79

sys_settimeofday

kernel/time.c

struct timeval *

struct timezone *

-

-

-

80

sys_getgroups

kernel/sys.c

int

gid_t *

-

-

-

81

sys_setgroups

kernel/sys.c

int

gid_t *

-

-

-

82

old_select

arch/i386/kernel/sys_i386.c

struct sel_arg_struct *

-

-

-

-

83

sys_symlink

fs/namei.c

const char *

const char *

-

-

-

84

sys_lstat

fs/stat.c

char *

struct __old_kernel_stat *

-

-

-

85

sys_readlink

fs/stat.c

const char *

char *

int

-

-

86

sys_uselib

fs/exec.c

const char *

-

-

-

-

87

sys_swapon

mm/swapfile.c

const char *

int

-

-

-

88

sys_reboot

kernel/sys.c

int

int

int

void *

-

89

old_readdir

fs/readdir.c

unsigned int

void *

unsigned int

-

-

90

old_mmap

arch/i386/kernel/sys_i386.c

struct mmap_arg_struct *

-

-

-

-

91

sys_munmap

mm/mmap.c

unsigned long

size_t

-

-

-

92

sys_truncate

fs/open.c

const char *

unsigned long

-

-

-

93

sys_ftruncate

fs/open.c

unsigned int

unsigned long

-

-

-

94

sys_fchmod

fs/open.c

unsigned int

mode_t

-

-

-

95

sys_fchown

fs/open.c

unsigned int

uid_t

gid_t

-

-

96

sys_getpriority

kernel/sys.c

int

int

-

-

-

97

sys_setpriority

kernel/sys.c

int

int

int

-

-

99

sys_statfs

fs/open.c

const char *

struct statfs *

-

-

-

100

sys_fstatfs

fs/open.c

unsigned int

struct statfs *

-

-

-

101

sys_ioperm

arch/i386/kernel/ioport.c

unsigned long

unsigned long

int

-

-

102

sys_socketcall

net/socket.c

int

unsigned long *

-

-

-

103

sys_syslog

kernel/printk.c

int

char *

int

-

-

104

sys_setitimer

kernel/itimer.c

int

struct itimerval *

struct itimerval *

-

-

105

sys_getitimer

kernel/itimer.c

int

struct itimerval *

-

-

-

106

sys_newstat

fs/stat.c

char *

struct stat *

-

-

-

107

sys_newlstat

fs/stat.c

char *

struct stat *

-

-

-

108

sys_newfstat

fs/stat.c

unsigned int

struct stat *

-

-

-

109

sys_uname

arch/i386/kernel/sys_i386.c

struct old_utsname *

-

-

-

-

110

sys_iopl

arch/i386/kernel/ioport.c

unsigned long

-

-

-

-

111

sys_vhangup

fs/open.c

-

-

-

-

-

112

sys_idle

arch/i386/kernel/process.c

-

-

-

-

-

113

sys_vm86old

arch/i386/kernel/vm86.c

unsigned long

struct vm86plus_struct *

-

-

-

114

sys_wait4

kernel/exit.c

pid_t

unsigned long *

int options

struct rusage *

-

115

sys_swapoff

mm/swapfile.c

const char *

-

-

-

-

116

sys_sysinfo

kernel/info.c

struct sysinfo *

-

-

-

-

117

sys_ipc (*Note)

arch/i386/kernel/sys_i386.c

uint

int

int

int

void *

118

sys_fsync

fs/buffer.c

unsigned int

-

-

-

-

119

sys_sigreturn

arch/i386/kernel/signal.c

unsigned long

-

-

-

-

120

sys_clone

arch/i386/kernel/process.c

struct pt_regs

-

-

-

-

121

sys_setdomainname

kernel/sys.c

char *

int

-

-

-

122

sys_newuname

kernel/sys.c

struct new_utsname *

-

-

-

-

123

sys_modify_ldt

arch/i386/kernel/ldt.c

int

void *

unsigned long

-

-

124

sys_adjtimex

kernel/time.c

struct timex *

-

-

-

-

125

sys_mprotect

mm/mprotect.c

unsigned long

size_t

unsigned long

-

-

126

sys_sigprocmask

kernel/signal.c

int

old_sigset_t *

old_sigset_t *

-

-

127

sys_create_module

kernel/module.c

const char *

size_t

-

-

-

128

sys_init_module

kernel/module.c

const char *

struct module *

-

-

-

129

sys_delete_module

kernel/module.c

const char *

-

-

-

-

130

sys_get_kernel_syms

kernel/module.c

struct kernel_sym *

-

-

-

-

131

sys_quotactl

fs/dquot.c

int

const char *

int

caddr_t

-

132

sys_getpgid

kernel/sys.c

pid_t

-

-

-

-

133

sys_fchdir

fs/open.c

unsigned int

-

-

-

-

134

sys_bdflush

fs/buffer.c

int

long

-

-

-

135

sys_sysfs

fs/super.c

int

unsigned long

unsigned long

-

-

136

sys_personality

kernel/exec_domain.c

unsigned long

-

-

-

-

138

sys_setfsuid

kernel/sys.c

uid_t

-

-

-

-

139

sys_setfsgid

kernel/sys.c

gid_t

-

-

-

-

140

sys_llseek

fs/read_write.c

unsigned int

unsigned long

unsigned long

loff_t *

unsigned int

141

sys_getdents

fs/readdir.c

unsigned int

void *

unsigned int

-

-

142

sys_select

fs/select.c

int

fd_set *

fd_set *

fd_set *

struct timeval *

143

sys_flock

fs/locks.c

unsigned int

unsigned int

-

-

-

144

sys_msync

mm/filemap.c

unsigned long

size_t

int

-

-

145

sys_readv

fs/read_write.c

unsigned long

const struct iovec *

unsigned long

-

-

146

sys_writev

fs/read_write.c

unsigned long

const struct iovec *

unsigned long

-

-

147

sys_getsid

kernel/sys.c

pid_t

-

-

-

-

148

sys_fdatasync

fs/buffer.c

unsigned int

-

-

-

-

149

sys_sysctl

kernel/sysctl.c

struct __sysctl_args *

-

-

-

-

150

sys_mlock

mm/mlock.c

unsigned long

size_t

-

-

-

151

sys_munlock

mm/mlock.c

unsigned long

size_t

-

-

-

152

sys_mlockall

mm/mlock.c

int

-

-

-

-

153

sys_munlockall

mm/mlock.c

-

-

-

-

-

154

sys_sched_setparam

kernel/sched.c

pid_t

struct sched_param *

-

-

-

155

sys_sched_getparam

kernel/sched.c

pid_t

struct sched_param *

-

-

-

156

sys_sched_setscheduler

kernel/sched.c

pid_t

int

struct sched_param *

-

-

157

sys_sched_getscheduler

kernel/sched.c

pid_t

-

-

-

-

158

sys_sched_yield

kernel/sched.c

-

-

-

-

-

159

sys_sched_get_priority_max

kernel/sched.c

int

-

-

-

-

160

sys_sched_get_priority_min

kernel/sched.c

int

-

-

-

-

161

sys_sched_rr_get_interval

kernel/sched.c

pid_t

struct timespec *

-

-

-

162

sys_nanosleep

kernel/sched.c

struct timespec *

struct timespec *

-

-

-

163

sys_mremap

mm/mremap.c

unsigned long

unsigned long

unsigned long

unsigned long

-

164

sys_setresuid

kernel/sys.c

uid_t

uid_t

uid_t

-

-

165

sys_getresuid

kernel/sys.c

uid_t *

uid_t *

uid_t *

-

-

166

sys_vm86

arch/i386/kernel/vm86.c

struct vm86_struct *

-

-

-

-

167

sys_query_module

kernel/module.c

const char *

int

char *

size_t

size_t *

168

sys_poll

fs/select.c

struct pollfd *

unsigned int

long

-

-

169

sys_nfsservctl

fs/filesystems.c

int

void *

void *

-

-

170

sys_setresgid

kernel/sys.c

gid_t

gid_t

gid_t

-

-

171

sys_getresgid

kernel/sys.c

gid_t *

gid_t *

gid_t *

-

-

172

sys_prctl

kernel/sys.c

int

unsigned long

unsigned long

unsigned long

unsigned long

173

sys_rt_sigreturn

arch/i386/kernel/signal.c

unsigned long

-

-

-

-

174

sys_rt_sigaction

kernel/signal.c

int

const struct sigaction *

struct sigaction *

size_t

-

175

sys_rt_sigprocmask

kernel/signal.c

int

sigset_t *

sigset_t *

size_t

-

176

sys_rt_sigpending

kernel/signal.c

sigset_t *

size_t

-

-

-

177

sys_rt_sigtimedwait

kernel/signal.c

const sigset_t *

siginfo_t *

const struct timespec *

size_t

-

178

sys_rt_sigqueueinfo

kernel/signal.c

int

int

siginfo_t *

-

-

179

sys_rt_sigsuspend

arch/i386/kernel/signal.c

sigset_t *

size_t

-

-

-

180

sys_pread

fs/read_write.c

unsigned int

char *

size_t

loff_t

-

181

sys_pwrite

fs/read_write.c

unsigned int

const char *

size_t

loff_t

-

182

sys_chown

fs/open.c

const char *

uid_t

gid_t

-

-

183

sys_getcwd

fs/dcache.c

char *

unsigned long

-

-

-

184

sys_capget

kernel/capability.c

cap_user_header_t

cap_user_data_t

-

-

-

185

sys_capset

kernel/capability.c

cap_user_header_t

const cap_user_data_t

-

-

-

186

sys_sigaltstack

arch/i386/kernel/signal.c

const stack_t *

stack_t *

-

-

-

187

sys_sendfile

mm/filemap.c

int

int

off_t *

size_t

-

190

sys_vfork

arch/i386/kernel/process.c

struct pt_regs

-

-

-

-

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux系统调用 汇编 int 80h 的相关文章

随机推荐

  • 2022年华中杯数学建模挑战赛B题量化投资问题求解全过程文档及程序

    2022年华中杯数学建模 B题 量化投资问题 原题再现 量化投资是指通过数量化方式及计算机程序化发出买卖指令 以获取稳定收益为目的的交易方式 投资者通过数据分析探索市场运行规律 并预测市场走势 从而进行决策交易 随着大数据技术的发展 量化投
  • windows11安装wsl

    wsl2 简单点说 就是可以在Windows上用Linux 并且支持docker 管理员身份打开powerShell win x 输入下面命令 wsl install dism exe online enable feature featu
  • 算法(C++)金币阵列问题

    题目描述 有m n m 100 n 100 个金币在桌面上排成一个m 行n 列的金币阵列 每一枚金币或正面朝上或背面朝上 用数字表示金币状态 0 表示金币正面朝上 1 表示背面朝上 金币阵列游戏的规则是 1 每次可将任一行金币翻过来放在原来
  • 从mpeg ts文件中提取I帧(3):pes包的解析

    本系列的第一篇文章讲解了如何把ts包拼装为pes包 本章主要讲解如何解析pes包 一 pes包的格式如下图所示 二 相关字段解析 packet start code prefix 标识包起始端的包起始码 固定值为 0000 0000 000
  • 沟通——职场生存的润滑剂

    我们每天都有和别人沟通互动 但经常不经意地话不投机或语出伤人都不自知 在工作中 沟通也是必不可少的 经常听到企业的领导强调沟通 上下级沟通 同事间沟通 的确 沟通可以大大提升工作效率 沟通是一种技能 是一个人对本身知识 表达能力 行为能力的
  • 嵌入式 Linux 系统在线升级策略-固件升级-升级固件-系统升级

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额1元起步 多少随意 锋影 email 174176320 qq com 嵌入式 Linux 系统在线升级策略 对于运行 Linux 系统的嵌入式产品 很多时候我们发
  • 微信调用jssdk全流程详解

    微信调用jssdk全流程详解 系统框架使用的是前后端分离 前端使用vant 后端是springboot 一 网页授权的时序图 二 公众号配置 1 绑定域名 登录微信公众平台进入 公众号设置 的 功能设置 里填写 JS接口安全域名 也就是这样
  • MongoDB—索引的建立与维护

    一 索引基础 MongoDB的索引几乎与传统的关系型数据库一模一样 这其中也包括一些基本的优化技巧 下面是创建索引的命令 gt db test ensureIndex username 1 可以通过下面的名称查看索引是否已经成功建立 gt
  • java获取相对路径

    在jsp和class文件中调用的相对路径不同 在jsp里 根目录是WebRoot 在class文件中 根目录是WebRoot WEB INF classes 当然你也可以用System getProperty user dir 获取你工程的
  • sqli-labs-less-12 PODT传参+有回显信息(图文详解)

    Less 12 post传递参数 由于是post传参 我们先用burp suite抓包 分析报文体 获取传参过程 得到报文体之后使用hackbar插件中的post data进行注入实验 判断闭合方式 uname or 1 1 passwd
  • 【一周算法实践集训】_【模型构建】_baseline

    读取数据 import pandas as pd data all pd read csv data all csv encoding gbk encoding gbk 解决编码问题 划分数据集 划分训练集测试集 from sklearn
  • 讨论保护网络隐私的方法与策略

    随着网络技术的不断发展 网络成为了人们日常生活中最为重要的媒介之一 每个人都在网络上留下了大量的个人信息和隐私 这些信息有时甚至比我们现实生活中留下的资料更为丰富和详尽 然而 随着网络安全问题层出不穷 网络上的这些个人信息也暴露在了一些不良
  • Python新手入门-软件安装配置篇

    Python开发建议使用 pycharm Anaconda Anaconda中包含Python解释器及各种要用到的工具包 使用十分方便 如果只是下载Python的话 后期使用过程中还要自行下载安装各种安装包 网速可以的话还好 不好的话半天下
  • 条款13: 以对象管理资源

    结论 为防止资源泄漏 请使用RAII对象 它们在构造函数中获得资源并在析构函数中释放资源 两个常被使用的RAII classes分别是tr1 share ptr和auto ptr 前者通常是较佳选择 因为其copy行为比较直观 若选择aut
  • 7位创业者,6分钟,一个错误

    我发现所有的饭馆里都写着 顾客是第一 客人是上帝 但是真正做到这一点的也就是海底捞 在那里才真正感觉到我们是上帝 我把手机刮掉玻璃人家也说送 我也曾享受过免单的待遇 所有互联网创业者 所有公司的价值观肯定包括 以用户的需求 以用户体验为第一
  • Kafka配置安全认证

    Kafka配置安全认证 提示 为了对数据的安全考虑 在对kafka进行读取数据时需要添加安全认证 在摸索了大量博主的博客后 自己终于把这安全认证给安排了 废话不多说 往下走 文章目录 Kafka配置安全认证 文章目录 一 环境 二 修改ka
  • 创意无限!AI绘画、ChatGPT、AIGC工具合集,让你的创作梦想成真

    你是否曾经想象过有一套工具 可以将你的创意推向新的高度 现在 你的梦想即将成真 我们为你带来了一款令人兴奋的AIGC工具合集 集成了AI绘画 ChatGPT等功能 助你轻松实现想法 创作艺术 解决问题 而一切都在你的指尖 AI绘画 创意无限
  • 为什么私有GIT服务器上无法查看上传的代码?

    我的个人博客 逐步前行STEP 今天按教程十分简单地搭建了GIT服务器 但是在客户端实践远程仓库之后 一直无法在服务器对应目录看到上传的代码 而另一个客户端却可以从服务器下载代码 后来才发现我创建git仓库的 git init bare s
  • 服务器系统需求表,服务器操作系统需求

    服务器操作系统需求 内容精选 换一换 示例 购买并登录Windows弹性云服务器示例 购买并登录Linux弹性云服务器云平台提供了多种实例类型供您选择 不同类型的实例可以提供不同的计算能力和存储能力 同一实例类型下可以根据CPU和内存的配置
  • Linux系统调用 汇编 int 80h

    1 系统调用 在计算机中 系统调用 英语 system call 又称为系统呼叫 指运行在使用者空间的程序向操作系统内核请求需要更高权限运行的服务 系统调用提供了用户程序与操作系统之间的接口 大多数系统交互式操作需求在内核态执行 如设备IO