您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Linux 64位中的进程命令行

Linux 64位中的进程命令行

您正在将正确的地址加载到中%rcx

int 0x80然后调用32位syscall接口。这会将地址截断为32位,这使它不正确。(如果您使用调试器并在第一个调试器之后设置一个断点int 0x80,则会看到它返回-14 in %eax,即-EFAULT。)

第二个syscall exit可以正常工作,因为在这种情况下,截断为32位不会造成任何损害。

如果要将64位地址传递给系统调用,则必须使用64位syscall接口:

这是您的代码的有效版本:

.section .text

.globl _start
_start:
 movq  %rsp, %rbp

 movq $1, %rax
 movq $1, %rdi
 movq 8(%rbp), %rsi       # program name address ?
 movq $5, %rdx
 syscall

 movq $60, %rax
 movq $0, %rdi
 syscall
其他 2022/1/1 18:14:14 有508人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶