ELF文件结构详解

来源:互联网 发布:喝酒的好处知乎 编辑:程序博客网 时间:2024/05/29 17:43

ELF文件介绍

在linux下,由汇编程序和链接编辑器生成的是目标文件为ELF(Excutable and Linking Format)格式,它们共分为四种类型:

  1. 可重定位文件(Relocatable File)
  2. 可执行文件(Executable File)
  3. 共享目标文件(Shared Object File)
  4. 核心转储文件(Core Dump File)

文件类型可以通过file命令进行查看

ELF文件头

ELF文件头位于ELF文件的起始位置,它包含整个文件的静态信息,可以通过readelf命令进行查看,ELF文件头结构以及相关参数定义在/usr/include/elf.h中,分为32位和64位两种版本,分别为Elf32_Ehdr和Elf_64_Ehdr,它们绝大多数内容都是一样的,结构如下所示:

typedef struct {Elf32_Half e_type;//Elf文件类型 Elf32_Half e_machine;//ELF文件的CPU平台属性 Elf32_Word e_version;//ELF版本信息 Elf32_Addr e_entry;//入口地址 Elf32_Off e_phoff;//程序头表的文件偏移(以字节为单位)。如果文件没有程序头表,则此成员值为零。 Elf32_Off e_shoff;//节头表的文件偏移(以字节为单位)。如果文件没有节头表,则此成员值为零。 Elf32_Word e_flags;//与文件关联的特定于处理器的标志。标志名称采用 EF_machine_flag 形式。 Elf32_Half e_ehsize;//ELF 头的大小(以字节为单位) Elf32_Half e_phentsize;//文件的程序头表中某一项的大小(以字节为单位)。所有项的大小都相同 Elf32_Half e_phnum;//程序头表中的项数。 Elf32_Half e_shentsize;//节头的大小(以字节为单位)。节头是节头表中的一项。所有项的大小都相同 Elf32_Half e_shnum;//节头表中的项数 Elf32_Half e_shstrndx;//与节名称字符串表关联的项的节头表索引。} Elf32_Ehdr;
1 0
原创粉丝点击