作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我手动编写了一个可执行的 ELF 头文件+程序头文件,如下所示:
elf_head:
e_ident db 7Fh, 'ELF', 1, 1, 1
times 9 db 0
e_type dw 2 ; ET_EXEC
e_mach dw 3 ; EM_386
e_ver dd 1 ; EV_CURRENT
e_entry dd 0x08048000+elf_head_len ; entry point
e_phoff dd 34h ; program header table offset
e_shoff dd 00h ; section header table offset
e_flags dd 0 ; flags
e_elfhs dw 34h ; ELF header size
e_phes dw 20h ; program header entry size
e_phec dw 01h ; program header entries count
e_shes dw 00h
e_shec dw 00h
e_shsn dw 00h
elf_ph:
p_type dd 01h ; PT_LOAD
p_off dd elf_head_len
p_vaddr dd 0x08048000+elf_head_len
p_paddr dd 0x08048000+elf_head_len
p_filsz dd elf_head_len+file_len
p_memsz dd elf_head_len+file_len
p_flags dd 7 ; segment flags (RWX)
p_align dd 0x1000 ; page_size==4096bytes
elf_head_len equ $ - elf_head
最佳答案
ELF 规范要求对于按需分页的可执行文件,段的文件偏移量和虚拟地址必须在低位确实匹配。
这些限制与 mmap()
相同系统调用放置在映射上——它只接受文件中偏移量是页面大小倍数的映射。映射 ELF 文件时,段会扩展到最近的页面边界,因此除了段大小计算之外,低位位被有效地忽略。
一个可能的理由是底层设备可能已经进行了内存映射——例如帧缓冲区或闪存——在这种情况下,创建一个偏移量不是页面对齐的映射会带来大量开销.
关于assembly - ELF 程序头偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5104060/
readelf -l/bin/bash 给我这个: Program Headers: Type Offset VirtAddr Phy
我是一名优秀的程序员,十分优秀!