[计算机]linux系统下的elf文件分析

[计算机]linux系统下的elf文件分析

ID:23108556

大小:58.00 KB

页数:7页

时间:2018-11-04

[计算机]linux系统下的elf文件分析_第1页
[计算机]linux系统下的elf文件分析_第2页
[计算机]linux系统下的elf文件分析_第3页
[计算机]linux系统下的elf文件分析_第4页
[计算机]linux系统下的elf文件分析_第5页
资源描述:

《[计算机]linux系统下的elf文件分析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Linux系统下的ELF文件分析摘要:随着linux系统的发展,elf成了十分重要的可执行文件格式。本文介绍了eIf文件的格式,并在此基础上分析出eIf文件的特性。关键词:elf文件:平台相关PIC1.引言ELF(ExecutableandLinkableFormat)IN可执行连接文件格式.是LinuxSVR4和Solaris2,0默认的目标文件格式,目前标准接口委员会TIS已将ELF标准化为一种可移植的目标文件格式,运行于32一bitIntel体系微机上,可与多种操作系统兼容。分析elf文件有助于理解一些重要的系统概念,

2、例如程序的编译和链接,程序的加载和运行等2.ELF文件格式2.1ELF文件的类型ELF文件主要有三种类型(1)可重定位文件包含了代码和数据.可与其它ELF文件建立一个可执行或共享的文件:(2)可执行文件时可直接执行的程序:(3)共享目标文件包括代码和数据,可以在两个地方链接。第一,连接器可以把它和其它可重定位文件和共享文件一起处理以建立另一个ELF文件;第二,动态链接器把它和一个可执行文件和其它共享文件结合在一起建立一个进程映像。2.2ELF文件的组织ELF文件参与程序的连接(建立一个程序)和程序的执行(运行一个程序),编译

3、器和链接器将其视为节头表(sectionheadertable)描述的一些节(section)的集合,而加载器则将其视为程序头表(programheadertable)描述的段(segment)的集合,通常一个段可以包含多个节。可重定位文件都包含一个节头表.可执行文件都包含一个程序头表。共享文件两者都包含有。为此,ELF文件格式同时提供了两种看待文件内容的方式,反映了不同行为的不同要求。2.3文件头EIF头在在程序的开始部位,作为引路表描述整个ELF的文件结构,其信息大致分为四部分:一是系统相关信息,二是目标文件类型,三是加

4、载相关信息,四是链接相关信息其中系统相关信息包括elf文件魔数(标识elf文件),平台位数,数据编码方式,elf头部版本,硬件平台emachine,目标文件版本e_version,处理器特定标志eftags:这些信息的引入极大增强了elf文件的可移植性使交叉编译成为可能。目标文件类型用etype的值表示,可重定位文件为1,可执行文件为2,共享文件为3;加载相关信息有:程序进入点e_entry.程序头表偏移量e_phof,ellf头部长度e_eh-size.程序头表中一个条目的长度e_phentsize,程序头表条目数目e_p

5、hnum;链接相关信息有:节头表偏移量e_shof,节头表中一个条目的长e.shentsize,节头表条目个数e,节头表字符索_shnum引eshstmdx。可使用readelf—hfilenam来察看文件头的内容文件头的数据结构如下:typedefstructelf32一hdr{unsignedchare_ident[EI—NIDENT];Elf32.Halfe.type;//目标文件类型Elf32Halfe硬件平台.machine;//Elf32Wordeversion;//elf头部版本Ell32Addre程序进入点_

6、entry;//Elf32.Ofe.phof;//程序头表偏移量Elf32.Ofe.shof;//节头表偏移量Ell32Wordeflags;//处理器特定标志Elf32Halfeehsize;//ellf头部长度Elf32Halfe程序头表中一个条目的长度_phentsize;//Ell32.Halfe.,/程序头表条目数目.phnum;Elf32Halfeshentsize;//节头表中一个条目的长度Elf32一Halfe_shnum;//节头表条目个数Ell32.Halfeshstrndx;//节头表字符索引】Elf3

7、2一Ehdr;2.4程序头表(programheadertable)程序头表告诉系统如何建立一个进程映像.它是从加载执行的角度来看待elf文件.从它的角度看.elf文件被分成许多段,elf文件中的代码、链接信息和注释都以段的形式存放。每个段都在程序头表中有一个表项描述,包含以下属性:段的类型,段的驻留位置相对于文件开始处的偏移,段在内存中的首字节地址,段的物理地址,段在文件映像中的字节数.段在内存映像中的字节数段在内存和文件中的对齐标记。可用readelf—lfilename察看程序头表中的内容。程序头表的结构如下:type

8、defstructelf32_phdr{Elf32_Wordp_type;E1t32_Addrp_paddr;//段的物理地址Elf32_Wordp_filesz;//段在文件映像中的字节数Elf32一Wordp_memsz;//段在内存映像中的字节数Elf32_Wordp_flags;/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。