如何解决如何使用got从汇编程序访问glibc数据类型?
我正在尝试访问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 举报,一经查实,本站将立刻删除。