从程序集中的syscall调用命令

时间:2019-04-16 17:46:52

标签: linux assembly x86-64 system-calls

我正在尝试使用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,这只是系统出口。.我不会出现分段错误。

有人知道我在做什么错吗?

0 个答案:

没有答案