zl程序教程

您现在的位置是:首页 >  系统

当前栏目

linux简单之美(一)

Linux 简单 之美
2023-09-14 08:56:51 时间

    话说windows也有syscall,这是必须的。但是win的syscall可以直接call吗?可以是

可以但是破费周折,搞成SDT之类的复杂概念。下面看看linux是如何做的吧。

section .data

msg db "hello hopy!",0x0a

section .text

global _start

_start:

 mov eax,4

 mov ebx,1

 mov ecx,msg

 mov edx,12

 int 0x80

 mov eax,1

 mov ebx,0

 int 0x80

    关键是系统调用号要知道,开始找的是usr/include/asm-gen*/unistd.h,

可是都不对。后来找的是usr/include/x86_64_linux_gnu/asm/下的头文件,

有2个,分别对应x86和x64.、编译连接指令如下:

nasm -f elf main.asm

ld main.o

运行,段转储错误鸟,查了一下,本猫用的是x64位的linux,所以要生成

x64位的程序,或者指明是x86的程序,我选择后者:

ld -m elf_i386 -o main main.o

哦鸟!