ELF文件格式详解

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

摘要

本文描述了Linux系统的ELF文件格式。

ELF文件格式简介

ELF(Executable and Linkable Format)是一种常用的二进制文件格式,用于存储可执行文件、共享库和核心转储文件。它是由Linux操作系统所采用和支持的标准格式。

ELF文件共有四种形式:

1. 可执行文件(Executable file):是一种包含可直接执行程序的ELF文件,可以直接在操作系统上运行。

2. 共享目标文件(Shared object file):是一种包含函数和变量等可被多个可执行程序同时调用的ELF文件,通常被称为动态链接库或共享库(Shared Library)。多个程序可以共享同一份共享库,这样可以减少系统资源的浪费并提高程序的运行效率。

3. 目标文件(Object file):是一种包含已编译的代码和数据但还未被链接成可执行文件或共享库的ELF文件。目标文件通常会被多次编译和链接,直到最终生成可执行文件或共享库。

4. 崩溃转储文件(Core file):Core文件是在Linux和其他UNIX系统中生成的一种特殊文件,它记录了进程在崩溃或异常终止时的内部状态,包括进程的内存映像、寄存器状态、堆栈跟踪信息以及其他调试信息。Core文件通常用于调试崩溃或异常终止的程序。

ELF目标文件结构图

下图左侧是ELF的目标文件结构,右侧是ELF可执行文件结构。

ELF文件结构图

ELF文件结构定义

ELF文件结构的定义在头文件elf.h中,其典型路径为:

/usr/include/elf.h

ELF文件类型

ELF文件的四种类型定义如下:

#define ET_NONE  0      /* No file type */
#define ET_REL   1      /* Relocatable file type */
#define ET_EXEC  2      /* Executable file type */
#define ET_DYN   3      /* Shared object file type */
#define ET_CORE  4      /* Core file type */

ELF头

#define EI_NIDENT (16)
 
typedef struct elf32_hdr{
    unsigned char e_ident[EI_NIDENT];   
ELF文件结构 文章目录ELF文件结构1.磁盘中的elf文件1.1 宏观结构展示1.2 ELF header解释1.2.1 字段定义1.2.2 不同字段详细解释1.2.3 readelf读取elf头部1.3 section header table解释1.4 program header table解释1.5 section header table和program header table的关系2.内存中的elf文件 ELF文件结构 博客参考:https://segmentfault.com/a/119000001676 阅读详情

相关推荐

ELF文件格式详解(中文)

详细介绍了ELF文件结构,基于 ELF 规范 v1.2 版本 ,作者:赵凤阳,比较详细,不可多得。

ELF文件格式简介

  简单了解下ELF文件的格式。 1 简介   可执行与可链接格式 (Executable and Linkable FormatELF),常被称为 ELF格式,是一种用于可执行文件、目标代码、共享库和核心转储(core dump)的标准文件格式,一般用于类Unix系统,比如Linux,Macox等。ELF 格式灵活性高、可扩展,并且跨平台。比如它支持不同的字节序和地址范围,所以它不会不兼容某一特别的 CPU 或指令架构。这也使得 ELF 格式能够被运行于众多不同平台的各种操作系统所广泛采纳。   E.

梦的灰色边沿... 1万+

百度新闻评论内容抓取

通过抓包分析发现,百家号手机app端文章评论内容接口为:https://ext.baidu.com/api/comment/v1/comment/getlist?appid=101&sid=1008524_2-1010050_1-1007549_23033-1007550_23035&cuid=01B5EAF73E8A83BB842BE04E4FB6C656|23200201047...

codingforhaifeng的博客 2399

ELF文件详解

一、ELF概述 1、ELF的定义 ELFExecutable and Linkable Format)文件是一种目标文件格式,常见的ELF格式文件包括:可执行文件、可重定位文件(.o)、共享目标文件(.so)、核心转储文件等。 ELF主要用于Linux平台,Windows下是PE/COFF格式。 2、ELF文件的结构 一个完整的ELF文件一般会包括如下几个内容:ELF头、Section头、Segment头和Section。 其中由Section头组成的集合称为Section头表,...

PeakJin的博客 2万+

ELF文件格式解析

ELF格式分析

夏天Alex 5427

ELF文件格式详解

1.说明 2.elf文件的基本格式 3.elf文件的头部信息 4.elf文件的节区(Section) 4.1 节区的作用 4.2 节区的组成 5.elf文件的段(Segment) 6.用python解析elf文件 7.总结 1.说明 ELF的英文全称是The Executable and Linking Format,最初是由UNIX系统实验室开发、发布的ABI(Application Binary Int..

pingxiaozhao的博客 1万+

elf文件格式_ELF文件格式详解

ELF文件格式详解1.说明2.elf文件的基本格式3.elf文件的头部信息4.elf文件的节区(Section)4.1 节区的作用4.2 节区的组成5.elf文件的段(Segment)6.用python解析elf文件7.总结 1.说明 ELF的英文全称是The Executable and Linking Format,最初是由UNIX系统实验室开发、发布的ABI(Applicatio...

weixin_39748773的博客 1292

ELF文件格式详解资料:深度解读Unix系统核心文件格式

ELF文件格式详解资料:深度解读Unix系统核心文件格式 去发现同类优质开源项目:https://gitcode.com/ 项目核心功能/场景 详解Unix系统中关键的ELF文件格式,助力开发者深入理解程序加载与执行机制。 项目介绍 在Unix和类Unix操作系统中,ELF文件格式是一种至关重要的文件格式。它定义了可执行文件、目标文件和共享库的结构,是操作系统底层运作的核心。今天,我们要推荐的项目...

gitblog_06746的博客 946

ELF 文件格式详解资料

ELF 文件格式详解资料 去发现同类优质开源项目:https://gitcode.com/ 欢迎来到本资源仓库!这里为您提供了关于ELFExecutable and Linkable Format文件格式的详尽介绍。ELF文件格式是用于Unix和类Unix系统中的一种常见文件格式,它被广泛应用于可执行文件、目标文件以及共享库等。 本资源包含的资料是经过精心筛选的,旨在帮助您深入理解ELF文件结...

gitblog_06764的博客 340

elf文件格式_ELF 格式详解(一)

ELF 全称 “Executable and Linkable Format”,即可执行可链接文件格式,目前常见的LinuxAndroid可执行文件、共享库(.so)、目标文件( .o)以及Core 文件(吐核)均为此格式。文件布局常见的ELF文件大致结构如下:常见的ELF格式如上图所示,左边为链接视图,右边为执行视图。链接视图:静态链接器(即编译后参与生成最终ELF过程的链接器,如ld )会...

weixin_39721370的博客 809

ELF文件格式详解-请查收

上一篇文章中主要介绍了ELF文件的基本定义和目标文件的分类,这篇文章中主要介绍下ELF文件格式 ELF文件主要提供了两个视图:链接视图及执行视图,分别针对程序运行过程的链接过程和执行过程。如下图所示: 单从相貌上来看,二者长得很像,除了肚子。可以看出链接视图采用的节(section)作为基本单位,而执行视图采用(segment)为基本单位。那么问题来了,这二者有什么区别?这是个设问句,区别如下: Section与segment 在汇编语言中,代码段、数据段就是所谓的段(segment)。在可执行文件载入内

qq_42824983的博客 2669
上一篇: PE文件格式详解
ADM实验室
博客等级 码龄20年 156粉丝 26原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ADM实验室

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

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

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

打赏作者

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

抵扣说明:

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

余额充值