ELF文件结构

来源:互联网 发布:掌握淘宝模特动作技巧 编辑:程序博客网 时间:2024/05/16 02:21

32位文件头的结构定义如下所示,即Elf32_Ehdr结构:

typedef struct {unsigned char e_ident[16]; /* ELF魔数,ELF字长,字节序,ELF文件版本等 */Elf32_Half e_type; /*ELF文件类型,REL, 可执行文件,共享目标文件等 */Elf32_Half e_machine; /* ELF的CPU平台属性 */Elf32_Word e_version; /* ELF版本号 */Elf32_Addr e_entry; /* ELF程序的入口虚拟地址,REL一般没有入口地址为0 */Elf32_Off e_phoff; Elf32_Off e_shoff; /* 段表在文件中的偏移 */Elf32_Word e_flags; /* 用于标识ELF文件平台相关的属性 */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;

如果e_type=1,表明它是重定位文件,连接视图;
如果e_type=2,表明它是可执行文件,装载运行;
如果e_type=3,表明它是共享动态库文件,装载运行;
如果e_type=4,表明它是中断状态文件,视图依赖于具体的实现。

接下来是程序头:

typedefstruct{Elf32_Wordp_type;/*段类型*/Elf32_Offp_offset;/*在文件中的偏移*/Elf32_Addrp_vaddr;/*执行时的虚地址*/Elf32_Addrp_paddr;/*执行时的物理地址*/Elf32_Wordp_filesz;/*在文件中的字节数*/Elf32_Wordp_memsz;/*在内存中的字节数*/Elf32_Wordp_flags;/*标志*/Elf32_Wordp_align;/*字节对齐*/}Elf32_Phdr;

许多个装载内容的节点头:

typedefstruct{Elf32_Wordsh_name;/*节名索引*/Elf32_Wordsh_type;/*节类型*/Elf32_Wordsh_flags;/*加载和读写标志*/Elf32_Addrsh_addr;/*执行时的虚地址*/Elf32_Offsh_offset;/*在文件中的偏移*/Elf32_Wordsh_size;/*字节大小*/Elf32_Wordsh_link;/*与其他节的关联*/Elf32_Wordsh_info;/*其他信息*/Elf32_Wordsh_addralign;/*字节对齐*/Elf32_Wordsh_entsize;/*如果由表项组成,每个表项的大小*/}Elf32_Shdr;
0 0
原创粉丝点击