看看这个非常基本的shell代码:
mov rax, 1 ; syscall write
mov rdi, 1 ; fd=1 (stdout)
; push this string on stack: 'hello wd', '\n', 0
push 0x000000000000A
mov rcx, 'hello wd'
push rcx
mov rsi,rsp ; rsi points on string
mov rdx,10 ; string size
syscall
这个shell代码只是在stdout上打印一个字符串。 它工作正常,显示消息,但在消息引发后我有一个段错误。
以下是我编译的方式:
nasm -f elf64 s2.asm
objcopy -O binary --only-section=.text s2.o s2.bin
gcc s2.o -m64 -nostartfiles
如果我发布./a.out
,我会看到hello wd
Segmentation Fault
我只是想了解什么是错的
由于