elf文件是有一定的格式的,从文件的格式上来说,分为汇编器的链接视角与程序的执行视角两种去分析ELF文件。 从程序执行视角来说,这就是Linux加载器加载的各种Segment的集合。比如只读代码段、数据的读写段、符号段等等。而从链接的视角上来看,elf又分为各种的sections。 注意Section Header Table
在ELF文件中,只有ELF头表的位置是固定的,它一定在文件开头位置的,其他三个部分的位置都由ELF头表中的信息给出。我们一进到ELF文件中,立马就能看到ELF头表,所以ELF头表的作用就很显而易见了,它就是要告诉来客:我这个文件是ELF格式的,我能干啥(可执行文件,链接库还是可重定位文件),我需要用多少多少位的操作系...
elf文件的标识,一共16个字节,各个字段的含义如下: image.png e_ident[EI_MAG0] ~ e_ident[EI_MAG3] 是用来标识ELF文件的魔数,0x7f, 'E','L','F' e_ident[EI_CLASS] 用来标识对应的ELF文件类别,可取的值如下: image.png e_ident[EI_DATA] 用来区分字节序,可取的值如下 image.png e_ident[EI_VE...
ELF(Executable and Linkable Format)文件是一种目标文件格式,常见的ELF格式文件包括:可执行文件、可重定位文件(.o)、共享目标文件(.so)、核心转储文件等。 ELF主要用于Linux平台,Windows下是PE/COFF格式。 2、ELF文件的结构 一个完整的ELF文件一般会包括如下几个内容:ELF头、Section头、Program头和Section。 其中由...
在早期的UNIX中,可执行文件格式为a.out格式,由于其格式简单,随着共享库概念的出现被COFF格式取代,后来Linux和Windows基于COFF格式,分别制定了ELF和PE格式,我们日常使用的".exe"文件".lib",".dll"文件就属于PE文件的一种;Linux平台下的可执行文件,中间目标文件".o"以及静态库".a"和动态链接库".so"文件属于ELF...
ELF文件格式最重要的就是所谓的段,特别是其中的代码段和数据段。对应上图就是.text,.data两个段。每个段都对应一个段表来描述,而若干隔断会组成一个整体,它对应一个program,而后者则由program header table来指向,讲解ELF数据结构最为详细的就是网址如下,有心的朋友可以认真阅读: https://man7.org/linux/ma...
1.2版 ELF 格式规范是工具接口标准委员会(TIS)工作的成果。TIS是一个由微型计算机行业成员组成的协会,旨在实现32位英特尔体系结构操作环境开发工具可见的软件接口标准化。这样的接口包括对象模块格式、可执行文件格式以及调试记录信息和格式。 该委员会的目标是帮助简化整个微型计算机行业的软件开发过程,目前专注于32位操作...
shdr[elf->e_shstrndx].sh_offset); sh_type 节类型,以下为 ET_REL 常见的节类型定义: sh_flags 节的标志位可以组合,描述了节的属性,定义如下: sh_addr 节的虚拟地址,对于 ET_REL 一般都为0。 sh_offset 节的文件偏移。 sh_size 节的大小。
ELF(Executable and Linking Format)是一个二进制文件规范。用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的格式去放这些东西。 现在流行的二进制可执行文件格式 (Executable File Format),主要是 Windows 下的 PE(Portable Executable)和 Linux 的 ELF(Executable and Linking Format)可...