ELF文件解析和加载(附代码)

目录:

1.    elf文件基本概念
2.    elf文件结构

3.    elf文件装载

4.    代码实现

1.elf文件基本概念

elf文件是一种目标文件格式,用于定义不同类型目标文件以什么样的格式,都放了些什么东西。主要   用于linux平台。windows下是PE/COFF格式。       

    可执行文件、可重定位文件(.o)、共享目标文件(.so)、核心转储文件都是以elf文件格式存储的。

ELF文件组成部分:文件头、段表(section)、程序头

2.elf文件结构 ---- 文件头

文件头数据结:

ccs中解析出来的文件头信息
 

从上图中可以看到,elf文件头定义了文件的整体属性信息,比较重要的几个属性是:魔术字,入口地址,程序头位置、长度和数量,文件头大小(52字节),段表位置、长度和 个数。

2.elf文件结构---段表

段表(section)数据结构

解析段表内容

几个重要的段:.text(代码)段 、.data(数据)段、.bss段 。

.text:保存程序代码,权限为只读

.data:保存已初始化的全局变量和局部静态变量,可读可写

.bss:保存未初始化的全局变量和局部静态变量。初始化为0的变量也会保存在.bss段。可读可写。

2.elf文件结构 ---- 程序头

在ELF中把权限相同、又连在一起的段(section)叫做segment,操作系统正是按照“segment”来映射可执行文件的。

描述这些“segment”的结构叫做程序头,它描述了elf文件该如何被操作系统映射到内存空间中。

程序头数据结构<

  • 30
    点赞
  • 218
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 32
    评论
ELF文件(Executable and Linkable Format,可执行和可链接格式)是一种能够在不同操作系统上共享和执行的二进制文件格式。ELF文件的头部和程序头表是ELF文件中的两个关键部分。 ELF文件的头部位于文件的开头,包含了描述整个ELF文件的基本信息。具体包括标识字段、目标机器体系结构、文件类型、入口点地址、程序头表偏移地址等重要信息。标识字段用来识别文件ELF标志和版本。目标机器体系结构字段标识了目标操作系统的硬件要求,例如x86、ARM等。文件类型字段表示了ELF文件的类型,如可执行文件、共享目标文件、动态链接库等。入口点地址标识了程序运行的起始地址。程序头表偏移地址则指向ELF文件中的程序头表的位置, 程序头表包含了更详细的段信息。 程序头表位于ELF文件的头部之后,包含了多个描述ELF文件中各个段(section)的表项。每个表项包含了段的类型、段在文件中的偏移地址、内存中的虚拟地址、段的大小等信息。段是ELF文件的基本组成单元,如代码段、数据段、bss段。这些段在ELF文件中包含了可执行代码、全局变量、静态数据等。程序头表通过这些表项的信息告诉操作系统如何和运行ELF文件。 通过解析ELF文件的头部和程序头表,我们可以获取关于ELF文件的基本信息和段的详细信息。这些信息对于调试、、执行ELF文件都非常重要。因此,深入理解ELF文件的头部和程序头表对于理解操作系统和二进制文件的运行机制具有重要意义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木泽八

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值