0x01 .interp
内容是一个字符串,保存了动态链接器的路径,如/lib/ld-linux.so.2
有几种查看方式:
objdump -s a.out
readelf -l a.out | grep interpreter
0x02 .dynamic
保存了动态链接器所需的基本信息,具体可以看elf.h文件或LSB手册:
依赖于哪些共享对象
动态链接符号表.dynsym的位置
动态链接重定位表的位置
共享对象初始化代码的地址
…
查看方式:
readelf -d Lib.so
ldd Program1
关于linux-gate.so.1,是一个内核虚拟共享对象(Kernel Virtual DSO)
0x03 .dymsym动态符号表
保存了与动态链接相关的符号,而.symtab则保存了所有符号,包括模块内部的符号
.dynstr动态符号表
.hash辅助的符号哈希表,用于加快符号查找速度
查看方式:
readelf -sD Lib.so
0x03 .rel.dyn, .rel.plt动态链接重定位相关
.rel.dyn是对数据引用的修正
.rel.plt是对函数引用的修正
查看方式:
readelf -r Lib.so