ELF HEADER描述了ELF文件的概要信息,利用这个数据结构可以索引到elf文件的全部信息,数据结构如下: #defineEI_NIDENT 16typedefstruct{unsignedchare_ident[EI_NIDENT];ELF32_Half e_type;ELF32_Half e_machine;ELF32_Word e_version;ELF32_Addr e_entry;ELF32_Off e_phoff;ELF32_Off e_shoff;ELF32_Word e...
ELF文件结构 ELF文件的全称是Executable and Linkable Format,直译为“可执行可链接格式”,包括目标文件(.o)、可执行文件(可以直接运行)、静态链接库、动态链接库、核心转储文件(core dump)。ELF文件的定义可以在/usr/include/elf.h中找到,本文主要介绍ELF64,ELF文件通常由下列部分组成: ELF头(ELF header):放在ELF...
ELF文件头 ELF文件头(ELF header)位于目标文件最开始的位置,包含描述整个文件的一些基本信息,例如ELF文件类型、版本/ABI版本、目标机器、程序入口、段表和节表的位置和长度等。值得注意的是文件头部存在魔术字符(7f 45 4c 46),即字符串“\177ELF”,当文件被映射到内存时,可以通过搜索该字符确定映射地址,这...
1.待重定位文件(relocatable file) 2.共享目标文件(sharedobjectfile) 3.可执行文件(executable file) ELF文件分为文件头和文件体两部分,文件头用来描述整个程序文件的组织结构,文件体则是真正的程序文件。 同时,ELF文件又将程序体分为不同的段(segment)和节(section)。程序中有很多段,如代码段和数据段等,同样也...
ELF 文件主要的用途有两个, 构建程序,链接成动态库或者bin,一般是目标文件 ".o" 运行程序,一般指链接好的 ".so" 或者 "bin" 这个ELF 文件用作不同用途,文件结构的解析角度就有点不一样,通俗来说,不同用途对需要哪些数据的要求不一样,例如构建(链接)时 节表头(Section Table Header)是必须的,但运行时却...
Elf Header 和上篇文章一样,我们配合010editor工具打开so文件,并运行解析的脚本,区域如下: 结构体整体解析如下: 对每部分的解析: e_ident:长度为16字节的数组,每个字节又都有所代表的含义,解析如下: [0-3]为固定魔数,“.ELF”。 [4]文件类,00为非法文件,01位32位,02为64位。
可执行文件(Executable) 共享库(Shared Object)共享文件:也就是通常称的库文件,后缀为.so 二、ELF文件结构 elf-file-format 注意:段(Segment)与节(Section)的区别。很多地方对两者有所混淆。段是程序执行的必要组成,当多个目标文件链接成一个可执行文件时,会将相同权限的节合并到一个段中。相比而言,节的粒度更...
Section Header Table 中的每个条目 Section Header 都描述了 ELF 文件中 Sections 区域中一个节的信息。 他的结构如下: 代码语言:javascript 复制 typedef struct{// 节区名,是节区头部字符串表节区(Section Header String Table Section)的索引// 名字是一个 NULL 结尾的字符串Elf32_Word sh_name;// 该节...
读取ELF 文件结构 我们来读一下ELF,也就是可执行文件的结构。 ELf(文件)标题 它就像一个代表文件组织的路线图。 0x00 (4 个字节) 形成一个幻数。 例如) 0x7F, 'E', 'L', 'F' (ASCII 码) 查看更多 0x04 大小:1 个字节 目的:如果值为
一、ELF 文件简介 二、ELF 文件结构 一、ELF 文件简介 ELF 文件是 Executable and Linkable Format ( 可执行 和 可链接 格式 ) 的文件 ; 链接 一般是在编译阶段 , 执行 一般是在运行阶段 ; 在这两个阶段都会用到 ELF 格式的文件 ; 参考【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | ...