微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用got从汇编程序访问glibc数据类型?

如何解决如何使用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 举报,一经查实,本站将立刻删除。