一、什么是ELF文件?
elf是简称,全名是excutable and linkable format,可执行可链接格式,可以简单理解成linux操作系统下的可执行文件格式,在linux操作系统下,可以用readelf直接分析它的结构,是个好用的工具。
二、ELF文件的格式
通常有3种:
1、可重定向文件
文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件,通常是.a或者.o结尾的文件
2、可执行文件
文件保存着一个用来执行的程序,一般是现成的gcc编译后生成的elf可执行文件,通常是.out结尾的文件(.out其实可以省略)
3、共享目标文件
共享库,文件保存着代码和合适的数据,用来连接编辑器和实现动态链接器链接,通常是.so的so库文件
三、ELF文件的内容
一般来说包含3个索引表:
1、ELF文件头
在文件的开始,保存了路线图,描述了该文件的组织情况。
2、程序头部表
告诉系统如何创建进程映像。用来构造进程映像的目标文件必须具有程序头部表,可重定位文件不需要这个表。
3、节区头部表
包含了描述文件节区的信息,每个节区在表中都有一项,每一项给出诸如节区名称、节区大小这类信息。用于链接的目标文件必须包含节区头部表,其他目标文件可以有,也可以没有这个表。