ELF(Executable and Linkable Format)文件结构
来源:互联网 发布:ce怎么修改游戏数据 编辑:程序博客网 时间:2024/06/05 00:27
从Linking View可以看出,ELF文件由4部分组成:ELF header(ELF头), 程序头表(Program header table), 节(Sections)和节头表(Section header table)。实际上,一个文件中不一定包含全部这些内容,而且它们的位置也未必这样安排。只有ELF头的位置是固定的,其余各部分的位置、大小等信息由ELF头中的各项值来决定。
ELF header的格式如图:
#define EI_NIDENT 16 typedef struct { unsigned char e_ident[EI_NIDENT]; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; Elf32_Off e_phoff; Elf32_Off e_shoff; Elf32_Word e_flags; Elf32_Half e_ehsize; Elf32_Half e_phentsize; Elf32_Half e_phnum; Elf32_Half e_shentsize; Elf32_Half e_shnum; Elf32_Half e_shstrndx;} Elf32_Ehdr;typedef struct { unsigned char e_ident[EI_NIDENT]; Elf64_Half e_type; Elf64_Half e_machine; Elf64_Word e_version; Elf64_Addr e_entry; Elf64_Off e_phoff; Elf64_Off e_shoff; Elf64_Word e_flags; Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx;} Elf64_Ehdr;
这里我拿了一个32位的elf文件。用Winhex打开,如图,这就是ELF header。
这里指的34是e_phoff成员——Program header table 在文件中的偏移量。同理,我们可以得到e_shnum(Program header table中的条目) = 3
我们看到,Program header table在文件中的偏移量位0x34,而ELFheader大小也是0x34,可见ELF header后面紧接着就是Program header table。
Program header的数据结构:
typedef struct { Elf32_Word p_type; Elf32_Off p_offset; 5 Elf32_Addr p_vaddr; Elf32_Addr p_paddr; Elf32_Word p_filesz; Elf32_Word p_memsz; Elf32_Word p_flags; 10 Elf32_Word p_align; }
这些相关成员可以在碰到的时候再研究,总之Program header描述的是一个段在文件中的位置、大小以及它被放进内存后所在的位置和大小。
0 0
- ELF(Executable and Linkable Format)文件结构
- EXECUTABLE AND LINKABLE FORMAT (ELF)
- ELF(Executable and Linkable Format) 介绍
- Acronyms relevant to Executable and Linkable Format (ELF)
- 可执行和可链接文件格式 Executable and Linkable Format(ELF)
- ELF (Excutable and Linkable Format) 介绍1
- ELF (Excutable and Linkable Format) 介绍2
- The Executable and Linking Format (ELF)
- ELF文件结构描述
- ELF文件结构
- elf文件结构描述
- ELF 文件结构
- ELF文件结构
- ELF文件结构
- ELF文件结构
- ELF文件结构
- ELF文件结构
- ELF文件结构描述
- 中国电信登录时Tab保存问题
- ros语音识别:pocketsphinx_continuous工作正常而gst-pocketsphinx不能识别相同语音的问题。
- java 解压 unix .z 文件
- Hibernate缓存
- Linux调试技术
- ELF(Executable and Linkable Format)文件结构
- 跨浏览器图像灰度(grayscale)解决方案
- S2S整合(基于struts2.1+Spring 3.1)
- Query.validate 中文API
- 兄u
- C++ win32应用程序打开新窗口的方法
- 设置StatusStrip控件中ToolStripStatusLabel的位置
- HTML优化输出
- Hibernate主键