ELF文件结构详解 系统管理员 2022-09-27 04:54 138阅读 0赞 ## 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;
还没有评论,来说两句吧...