66.1 Linux
在Linux系统中,系统调用通常使用int 0x80中断进行调用。通过EAX寄存器传递调用号,再通过其它寄存器传递所需参数。
Listing 66.1: A simple example of the usage of two syscalls
section .text
global _start
_start:
mov edx,len ; buf len
mov ecx,msg ; buf
mov ebx,1 ; file descriptor. stdout is 1
mov eax,4 ; syscall number. sys_write is 4
int 0x80
mov eax,1 ; syscall number. sys_exit is 4
int 0x80
section .data
msg db 'Hello, world!',0xa
len equ $ - msg
编译:
nasm -f elf32 1.s
ld 1.o
Linux所有的系统调用在这里可以查看:http://go.yurichev.com/17319。
在Linux中可以使用strace(71章)对系统调用进行跟踪或者拦截。
当前内容版权归 Dennis Yurichev 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 Dennis Yurichev .