我正在尝试使用syscall和execve系统调用来调用“ / bin / bash”。起初,我担心我没有正确地将命令('/ bin / bash')加载到寄存器中。.但是我认为我做对了。我必须遵循寄存器使用的特定要求
.section .text
.global _start
_start:
# Push an 8-byte 0 to the stack
push $0x0000000000000000
# Use the stack pointer to set the 2nd parameter
movl %esp, %ecx
# Use the same address to set the 3rd parameter
movl %esp, %edx
# Write the 8-byte hex value for "/bin/sh" to %rax register
movq $0x0068732f6e69622f, %rax
# Push the %rax register to the stack
push %rax
# Use the stack pointer to set the 1st parameter
movl %esp, %ebx
# Write the syscall number to the register
movl $59, %eax
# Execute the syscall
syscall
当前此代码分段错误,我认为是因为我没有从_start返回任何内容。我知道是否调用了syscall命令%60,这只是系统出口。.我不会出现分段错误。
有人知道我在做什么错吗?