我正在用at&t汇编编写程序,需要从用户那里获取输入。我已经使用gets
一段时间了,但是对缓冲区溢出攻击很清楚。我希望使用fgets
,但在给它提供stdin文件时遇到了麻烦。
push %rbp
mov %rsp, %rbp
sub $0x20, %rsp
lea -0x20(%rbp), %rdi #Buffer
mov $0x20, %rsi #Size of buffer
mov $0, %rdx #Input stream?
call fgets
leave
ret
如上所示,我尝试仅输入0,因为它是stdin
的文件描述符。我有什么办法可以得到stdin
而又找不到stdio.h
并每次都用它来编译我的代码...
gcc test.s stdio.h -o test
任何替代解决方案都倍受赞赏。