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

来源:互联网 发布:2017旅行软件比例 编辑:程序博客网 时间:2024/05/16 10:07
ELF(Executable and Linkable Format)可执行和可链接格式是一种对象文件格式,分为三种类型:
   a.可重定位目标文件:包含了适合用来链接其他目标文件的代码和数据,从而创建出可执行或可共享的目标文件
   b.可执行目标文件:包含用于执行的程序,该文件规定了exec如何创建一个程序的进程映像
   c.共享目标文件:包含用来在两个上下文之间链接的代码和数据
   注:可重定位目标文件和共享目标文件用于程序链接,可执行目标文件用于程序执行

因为对于目标文件两种用途,因此目标文件的组织结构有两种:一种是用于链接的链接格式,另一种是用于执行的执行格式.

在详解这两种格式之前,先列出ELF文件中常用的数据类型(格式)



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

elf32_hdr(一个52个字节):




下面详细描述其中的内容(不加说明,值全是16进制):

1. e_ident,ident估计是identity的缩写,身份识别的意思.

   这是一个总大小为16字节的数据,每个元素是占一个字节的unsigned char




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




3. e_machine:表示体系结构

4. e_version:目前版本

5. e_entry:程序入口地址

6. e_phoff:程序头部表的文件偏移,00000000表示没有程序头部表

7. e_shoff:节区头部表的文件偏移

8. e_flags:处理器特定标记

9. e_ehsize:elf头部长度,值是0034,表示十进制52

10.e_phentsize:程序头部表(段头部表)一个表项的大小

11.e_phnum:程序头部表表项数量

12.e_shentsize:节区头部表一个表项的大小 

13.e_shnum:节区头部表表项数量

14.e_shstrndx:保存着节名字的节(section)对应的表项在节区头部表中的索引

0 0