Linux的ELF文件
一、文件头: sizeof(Elf32_Ehdr)=52 e_type: 类型---可重定位文件.o、可执行文件、共享目标文件.so e_ehsize: 文件头大小---52 e_machine: CPU平台属性,如Intel_x86; e_entry: 入口虚拟地址,但是可重定位文件没有; e_shoff: 段表偏移量, 即在ELF文件的位置;下面两个11*40=440表达段表长度 e_shnum: 段表描述符数量,即段表中段的个数:11 e_shentsize: 段表描述符大小,sizeof(Elf32_Shdr)=40 e_shstrndx: 段表字符串表所在的段在段表中的下标; 二、段表: sizeof(Elf32_Shdr)=40 sh_name: 段名,如.test/.data/.bss/.rodata/.comment, .rel.text/.rel.data, .symtab, .strtab/.shstrtab, sh_type: 类型---程序段、重定位表、符号表、字符串表 sh_flags: 标志位---可写、可执行、分配空间 sh_addr: 加载后在地址空间中的虚拟地址 sh_offset: 段偏移量,即该段该文件中的地址!!!!!!!!!!!!!!!!! sh_size: 段大小 sh_link: 符号表的下标 sh_info: 作用于哪个段? 三