首页 > 解决方案 > 如何使用带有第 6 个参数的 sysenter

问题描述

我尝试调用 mmap,它需要 6 个参数作为输入,使用 int 0x80 你可以很容易地做到这一点:

  mov eax, 90
  mov ebx, 0
  mov ecx, 512
  mov edx, 3
  mov esi, 0
  mov edi, fd
  mov ebp, 0
  int 0x80

但是使用 sysenter,调用 mmap 的正确方法

  mov eax, 1
  mov ebx, 0

  push return_addr
  push ecx
  push edx
  push ebp
  mov ebp, esp
  sysenter

使用 5 个或更少的参数很容易解决问题,但是当我必须像这样保存 ebp 时,如何使用 sysenter 传递第 6 个参数?

是否不可能通过 sysenter 传递第 6 个参数?

标签: linuxassemblyx86nasmsystem-calls

解决方案


推荐阅读