主要讲解了目标文件的各种信息。
主要介绍了ELF文件的代码段、数据段和BSS段等与程序相关的段结构信息。还详细介绍了ELF文件的文件头、段表、重定位表、字符串表、符号表、调试表等相关结构。
从本章了解到,无论是可执行文件、目标文件和库,实质上都是基于段的文件或这种文件的集合,程序的源码经过编译后,按照代码、数据分别存放到相应的段中,编译器(汇编器)还会将一些辅助信息(符号表、重定位信息等)按照表的方式存放在目标文件中。通常情况下,一个表往往就是一个段。
3.1- 目标文件格式
目标文件是源文件经过编译但未进行连接的中间文件(*.obj、*.o),和可执行文件的内容很相似。
可执行文件(*.exe、 ELF)、动态链接库(*.dll、*.so)、静态链接库(*.lib、*.a)均按照可执行文件存储。
3.2- 目标文件是什么样的
代码段(.text):代码信息
数据段(.data):初始化的全局变量、初始化的静态局部变量
bss段(.bss):未初始化的全局变量、未初始化的静态局部变量
3.3- 挖掘SimpleSection.o(重点阅读)
.text
.data
.bss
其他段
3.4- ELF文件结构描述(重点阅读)
3.3以SimpleSection.o为例分析了其中的代码段、数据段、bss段信息,但是xxx.o不是完整的ELF格式。
以可执行文件,分析ELF文件的格式:ELF文件头、.text、.data、.bss、其他段、字符串表、符号表。
3.5- 链接的接口--符号(重点了解)
3.6- 调试信息