ELF文件结构详解

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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值