问题描述
我正在尝试访问stdin
C FILE *类型,以便我可以调用fgets来获取输入并将其回显。我可以使用plt节来访问C函数,但是不能以.got
的相同方式使用stdin
节(如果我理解正确的话,就像plt一样,但是对于数据来说),因为总是会产生分段错误来自mov
之后的lea
指令
section .bss
BUFFERLEN equ 100
BUFFER: resb BUFFERLEN
section .text
global main
extern stdin,fgets
main:
default rel
push rbp
mov rbp,rsp
; First get input to print
mov rdi,[rel BUFFER]
mov rsi,BUFFERLEN
mov rdx,[rel stdin wrt ..gotpc]
call fgets wrt ..plt
pop rbp
ret ; return back to caller
用makefile构建并链接为
proj13: proj13.o
gcc -pie -fpie -o proj13 proj13.o
proj13.o: proj13.asm
nasm -g -F DWARF -f elf64 -o proj13.o proj13.asm
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)