- 8
- 0
- 约1.8万字
- 约 27页
- 2018-06-23 发布于浙江
- 举报
基于PowePC Linux的ELF格式分析
基于PowerPC Linux的ELF格式分析
第一部分 ELF格式概述
ELF(Executable and Linkable Format)是一种对可执行文件、目标文件以及库文件使用的文件格式,它在Linux下成为标准文件已经有很长的一段时间,代替了早期的a.out格式。ELF格式的一个优点是同一个文件格式可以用在Linux Kernel支持的所有体系结构之上。这不仅简化了用户空间工具程序的创建,也简化了内核自身的程序设计,比如必须为可执行程序生成装载例程时。但是文件格式相同并不意味着不同系统上的程序之间存在二进制兼容性,例如FreeBSD和Linux都使用ELF作为二进制格式,但是FreeBSD上的程序不能运行于Linux上,因为两者在系统调用机制和系统调用语义方面仍然有所不同,反之亦然;如果想让二者之间的程序能够运行,必须要有一个中间仿真层。同样PowerPC平台编译的ELF程序,也不能在X86平台的机器上运行,反之依然,因为两者的体系结构是完全不同的。但是由于ELF格式的存在,相同体系结构上的ELF程序本身的相关信息,以及程序的各个部分在二进制文件中的编码方式都是相同的。Linux不仅将ELF用于用户空间应用程序和库,还用于工具模块,另外Linux内核本身也是ELF格式。
备注:ELF文件是一种开放的格式,其规范可以自由获得。
ELF文件有三种类型:
可重定位文件:也就是通常称的目标文件,后缀为.o;
共享文件:也就是通常称的库文件,后缀为.so;
可执行文件:本文主要讨论的文件格式;
总的来说,可执行文件的格式与上述两种文件的格式之间的区别主要在于观察的角度不同:一种称为连接视图(Linking View),一种称为执行视图(Execution View)。
示意图如下:
第二部分 布局和结构
ELF Header:除了用于标识ELF文件的几个字节之外,ELF文件头还包含了有关文件类型和大小的信息,以及文件加载后程序执行的入口信息等等,总之ELF头部是一个关于本ELF文件的路线图(road map),从总体上描述文件的结构。
程序表头(Program Head Table):向系统提供了可执行文件的数据在进程虚拟地址空间中组织方式的相关信息,它还表示了文件可能包含的段的数目,段的位置以及用途。
各个段SegmentX(X=1,2,…)和节SectionX(X=1,2,…):保存了与文件相关的各种形式的数据,例如符号表、实际的二进制代码、固定值或者程序使用的数值常数。
节头表(Section Header Table):包含了与各段相关的附加信息。
下面我们一个例子,用readelf工具来分析ELF文件:
例如如下:
//test.c
#include stdio.h
#include stdlib.h
int add(int a, int b)
{
printf(Numbers are added together\n);
return a + b;
}
int main()
{
int a, b;
a = 3;
b = 4;
int ret = add(a,b);
printf(Result : %u\n,ret);
exit(0);
}
我们用file命令来显示编译器生成的两个文件的信息:一个是可执行文件,另一个是可重定位文件,示意图如下:
2.1 ELF header文件结构
我们用readelf工具来分析上例中生成ELF文件的ELF header,视图如下:
在test文件的开始处是四个标志字节,0x 7f、0x45、0x4c、0x46。其中的0x45、0x4c、0x46分别代码“E”“L”“F”的ASCII码,这使得所有处理ELF文件的工具都可以识别ELF类型的文件。还有一些与机器体系结构相关的信息。比如上图中Machine类型为PowerPC表明该ELF文件运行于PowerPC平台;ELF32表明这是一个运行在32位平台的机器;文件类型为EXEC表明这是一个可执行程序;Version用于区分当前ELF文件的各个修订版本,当前ELF文件是基于版本1;另外还包含ELF文件各个部分的长度和索引的位置,后面会相信讨论。
如果ELF文件是可重定位文件,不同的字段如下图所示:
如图所示:test.o的文件类型为REL,即它是一个可重定位的文件,其代码可以移动到任意位置,该文件没有程序头Program Headers,对于需要链接的对象而言该表是不需要的,所以其所以长度均为0。
2.2 程序头表(Program Head Table)分析
下面我们来分析一下ELF可执行文件test中Program Head Table,示意图如下:
在Program Headers中列出了8个段,
您可能关注的文档
- 地道工程大体积混凝土冬施工方案.doc
- 地质勘查与找毕业论文.doc
- 地质灾害险性评估报告范本.doc
- 地铁X号X主体结构施工方案.doc
- 地道工程工专项方案_secret.doc
- 地铁十号线浦口大道站地下人车混行通道、地铁号线浦口大道站地下人行通道项目安装施工方案.doc
- 地铁冠梁工专项技术方案.doc
- 地铁施工中的地表沉陷制方法与工程实例.doc
- 地铁基坑支及土方开挖安全专项施工方案.doc
- 地铁施工危险源分析与研究.doc
- 河北盐山中学等校2025-2026学年上学期高三一模化学试卷(含解析).docx
- 河北正定中学2025-2026学年高一上学期期末考试物理试卷(含解析).docx
- 河北张家口市怀安县2025-2026学年第一学期期末教学综合评价八年级地理试卷(含解析).docx
- 河南安阳市殷都区2025-2026学年第一学期期末教学质量检测七年级地理试卷(含解析).docx
- 河南安阳市滑县2025一2026学年第一学期期末学业质量监测八年级地理试题(含解析).docx
- 河南安阳市林州市2025-2026学年上学期期末考试高一政治试题(含解析).docx
- 河南焦作市武陟县第一中学2025-2026学年高一上学期1月月考语文试卷(含解析).docx
- 河南济源市2025-2026学年上学期期末学业质量调研七年级历史试卷(含解析).docx
- PICC导管并发症的紧急处理与护理.pptx
- 河南鹤壁市2025-2026学年高二上学期期末考试生物试题(含解析).docx
最近下载
- DB37_T 4904-2025 链式切割水泥土连续墙技术规程.docx VIP
- DB37_T 4903-2025 沥青路面防裂封水粘结层技术规范.docx VIP
- DB37_T 4909-2025 城市轨道交通隧道结构渗漏水治理技术规程.docx VIP
- 2026年河南工业和信息化职业学院单招职业技能考试题库及参考答案详解.docx VIP
- DB37_T 4914-2025 电梯按需维护保养管理技术规范.docx VIP
- DB37_T 4915-2025 氧气瓶充装自动控制技术要求.docx VIP
- 最全汉语水平的考试HSK6级历年真题经典版.pdf VIP
- 博朗-欧乐B_OralB 5000__O3762_5_CHIN使用说明书.pdf VIP
- DB37_T 4918.5-2025 政务信息化项目管理 第5部分:项目和系统编码.docx VIP
- 价值链视角下的山西汾酒公司资金管理问题与优化路径探究11000字【论文】 .docx VIP
原创力文档

文档评论(0)