elf文件结构解析

elf文件结构解析elf文件解析1、ELF文件结构格式:2、ELF头文件解析:3、ELF段表:1、ELF文件结构格式:ELFHeader.text.data.bss…sectionheadertablestringtablessymboltables…elf文件头包含了整个文件的基本属性,如文件版本,入口地址等,接着就是ELF文件的各个…

大家好,欢迎来到IT知识分享网。

1、ELF文件结构格式:

ELF Header
.text
.data
.bss
section header table
string tables
symbol tables

elf文件头包含了整个文件的基本属性,如文件版本,入口地址等,接着就是ELF文件的各个段

2、ELF头文件解析:

linux定义了自己的一套变量体系,如下

自定义类型 描述 长度(字节)
Elf32_Addr 32位版本程序地址 4
Elf32_Half 32位版本的无符号短整形 2
Elf32_Off 32位版本的偏移地址 4
Elf32_Sword 32位版本有符号整形 4
Elf32_Word 32位版本无符号整形 4
Elf64_Addr 64位版本程序地址 8
Elf64_Half 64位版本的无符号短整形 2
Elf64_Off 64位版本的偏移地址 8
Elf64_Sword 64位版本有符号整形 4
Elf64_Word 64位版本无符号整形 4

以32位版本为例,其头定义如下
typedef struct{

unsigned char e_ident[16];//前四个字节为ELF文件魔术,第五个字节为ELF文件类,0x01为32位,0x02为64位;第6位为字节序,规定为大端绪还是小端;第7位为elf文件的版本号,后9字节未定义,可作为扩展标志
Elf32_Half e_type;//ELF文件类型,1表示可重定位文件,2表示可执行文件,3表示共享文件
Elf32_Half e_machine;//ELF文件运行平台,1为AT&T WE 32100,2为SPARC,3为intel x86,4为Motorola 68000,5为Motorola 88000,6为intel 80860,
Elf32_Word e_version;//elf版本号
Elf32_Addr e_entry;//程序入口地址
Elf32_Off e_phoff;//程序表头文件偏移
Elf32_Off e_shoff;//段表在FOA中的便宜
Elf32_Word e_flags;//标志位,用来标志文件平台等
Elf32_Half e_ehsize;//ELF文件头大小
Elf32_Half e_phentisize;//程序头表大小
Elf32_Half e_phnum;//程序头表数目
Elf32_Half e_shentsize;//段表描述符大小
Elf32_Half e_shnum;//段表数量
Elf32_Half e_shstrndx;//段表字符串表所在段在段表中的下标
}Elf32_Ehdr;

我们以一个ELF文件为例,
在这里插入图片描述
可以看到ELF头文件信息,我们打开以16进制打开一个这个文件
在这里插入图片描述
第一行前4个字节为 7F 45 4C 46,这个为ELF文件的魔数,其为DEL控制符,第5个字节为01,表示此文件为32位,第6个字节01表示小端序。与解析出的头文件内容相一致。
第二行的前2个字节为0x0002(小端序),表示为此文件类型为可执行文件,第3,4字节为0x0003,表示在intel x86平台运行,第5-8字节为0x00000001,表示版本号为0x1,第9-12字节为0x080484B0,表示程序的入口地址。
第三行的前四个字节为0x00002224,表示段表在文件中的偏移。第5-8个字节为0x00000000,为平台信息,等等后面可依次解析

3、ELF段表:

在这里插入图片描述
成员信息如下:
在这里插入图片描述
由上知,elf段表的文件偏移为0x2224,找到文件偏移位置,如下
在这里插入图片描述
由上知第一个段表全为空,段表解析就不一一阐述,本文件的段表信息如下图
在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/23260.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信