gpt4 book ai didi

Linux 使用堆栈上的字符串写入系统调用

转载 作者:IT王子 更新时间:2023-10-29 01:24:54 26 4
gpt4 key购买 nike

<分区>

我刚开始自学 linux 上的 x86 汇编,来自 these视频教程。它在早期教您如何使用 write 系统调用来打印存储在数据部分中的字符串。是否可以使用 write 系统调用来打印存储在堆栈中的字符串。这是我为尝试执行此操作而编写的代码,但似乎不起作用。

.data
abc:
.asciz "ABC"
.text
.globl _start

_start:
pushq %rbp
movq %rsp, %rbp
subq $32, %rsp
leaq -32(%rbp), %rdi
movb $65, (%rdi) #move 'A' on to stack
addq $1, %rdi
movb $66, (%rdi) #move 'B' on to stack
addq $1, %rdi
movb $67, (%rdi) #move 'C' on to stack
addq $1, %rdi
movb $0, (%rdi) #Null terminate

movq $4, %rax #4 is write syscall
movq $1, %rbx #1 for stdout
movq %rsp, %rcx #pointer to ABC string on stack
movq $3, %rdx #length of string
int $0x80

movq $1, %rax #exit syscall
xorq %rbx, %rbx
int $0x80

这个程序只是运行并退出而不打印 ABC,但是如果我传递存储在数据段中的字符串,ABC 就会被打印出来。我做错了什么,还是你不能这样做。任何帮助表示赞赏。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com