不知道如何刷新缓冲区字符串x86

时间:2014-11-28 02:18:49

标签: linux x86 buffer overflow flush

我的代码的目标是模仿cat程序。它需要输入,然后将其吐出。 如:

$ Hi how are you
$ Hi how are you
$ good
$ good

发生的事情是:

$ 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

0 个答案:

没有答案