3|ELF结构详细分析(1)---elf32_hdr

ELF(Executable and Linkable Format)可执行和可链接格式是一种对象文件格式,分为三种类型:
a.可重定位目标文件:包含了适合用来链接其他目标文件的代码和数据,从而创建出可执行或可共享的目标文件
b.可执行目标文件:包含用于执行的程序,该文件规定了exec如何创建一个程序的进程映像
c.共享目标文件:包含用来在两个上下文之间链接的代码和数据
注:可重定位目标文件和共享目标文件用于程序链接,可执行目标文件用于程序执行
因为对于目标文件两种用途,因此目标文件的组织结构有两种:一种是用于链接的链接格式,另一种是用于执行的执行格式.
在详解这两种格式之前,先列出ELF文件中常用的数据类型(格式)


3|ELF结构详细分析(1)---elf32_hdr
文章图片



这两种格式中,ELF头部都位于文件的开始部分,位置固定,描述了该文件的组织情况,下面是它的具体内容
elf32_hdr(一个52个字节):


3|ELF结构详细分析(1)---elf32_hdr
文章图片



下面详细描述其中的内容(不加说明,值全是16进制):
1. e_ident,ident估计是identity的缩写,身份识别的意思.
这是一个总大小为16字节的数据,每个元素是占一个字节的unsigned char


3|ELF结构详细分析(1)---elf32_hdr
文章图片



2. e_type:表示文件属于下面的哪一种类型


3|ELF结构详细分析(1)---elf32_hdr
文章图片



3. e_machine:表示体系结构
4. e_version:目前版本
5. e_entry:程序入口地址
6. e_phoff:程序头部表的文件偏移,00000000表示没有程序头部表
7. e_shoff:节区头部表的文件偏移
8. e_flags:处理器特定标记
【3|ELF结构详细分析(1)---elf32_hdr】9. e_ehsize:elf头部长度,值是0034,表示十进制52
10.e_phentsize:程序头部表(段头部表)一个表项的大小
11.e_phnum:程序头部表表项数量
12.e_shentsize:节区头部表一个表项的大小
13.e_shnum:节区头部表表项数量
14.e_shstrndx:保存着节名字的节(section)对应的表项在节区头部表中的索引

    推荐阅读