Linux 不确定如何刷新缓冲区字符串x86
下面代码的目标是对cat程序进行MIMIC。它接受一个输入,然后把它吐出来。 例如: 但现在发生的是:Linux 不确定如何刷新缓冲区字符串x86,linux,x86,buffer,overflow,flush,Linux,X86,Buffer,Overflow,Flush,下面代码的目标是对cat程序进行MIMIC。它接受一个输入,然后把它吐出来。 例如: 但现在发生的是: $ Hi how are you $ Hi how are you $ good $ good $ow are you 我的字符串没有从缓冲区中删除,因此,如果第二次输入较短,它将吐出尚未写入的额外字符。我想知道是否有人知道如何清除缓冲区,这样就不会发生这种情况。谢谢 .file "rand.c" .section .data .buffer: .sp
$ Hi how are you
$ Hi how are you
$ good
$ good
$ow are you
我的字符串没有从缓冲区中删除,因此,如果第二次输入较短,它将吐出尚未写入的额外字符。我想知道是否有人知道如何清除缓冲区,这样就不会发生这种情况。谢谢
.file "rand.c"
.section .data
.buffer:
.space 10
.len:
.space 1
.globl _start
_start:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
subl $16, %esp
loop:
movl $3, %eax
movl $1, %ebx
movl $.buffer, %ecx
movl $100, %edx
int $0x80
movl $4, %eax
movl $1, %ebx
movl $.buffer, %ecx
movl $100, %edx
int $0x80
jmp loop
movl $1, %eax
movl $0, %ebx
int $0x80
打印字符串时,尝试将
count
(edx
)设置为字符串的长度,而不是硬编码值100。@Michael,你知道如何将其设置为字符串的长度吗?
.file "rand.c"
.section .data
.buffer:
.space 10
.len:
.space 1
.globl _start
_start:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
subl $16, %esp
loop:
movl $3, %eax
movl $1, %ebx
movl $.buffer, %ecx
movl $100, %edx
int $0x80
movl $4, %eax
movl $1, %ebx
movl $.buffer, %ecx
movl $100, %edx
int $0x80
jmp loop
movl $1, %eax
movl $0, %ebx
int $0x80