由此能够看出,本人实践所用到的是32位Ubuntu,数据存储采用小端法。linux
能够看到是可重定位文件,大小为1028比特安全
能够看到,Size of this header(文件头部)52byteside
- (为不一样位数设置)
- (ELF头结构体定义)
0000000 457f 464c 0101 0001 0000 0000 0000 0000 0000010 0002 0003 0001 0000 8320 0804 0034 0000 0000020 1174 0000 0000 0000 0034 0020 0009 0028 0000030 001e 001b
由上图可见,section header table中包括了各段的偏移地址(off)和大小(size),能够由此找到各段的位置。this
.text段分析编码
能够看到.text段跨越0x0到0x1b,刚好共0x1c(即28)个字节3d
该段的offset是0x3d8(正好在.symtab段以后),size是0x13,即到0x2ea为止。
对应字符串为:“\0hello.c\0main\0puts\0”code
这11个符号恰好和前面objdump输出的符号表(10个符号,第一个符号为空,因此被忽略)结果相对应;也和使用readelf中符号表相关内容对应(readelf命令输出结果比objdump输出结果看起来更易懂一些):对象
5.补充blog
该段为.rel.text段(偏移量为0x0000001b),sh_type为0x00000009(对应SHT_REL),sh_offset为0x000003ec,sh_size为0x00000010(16个字节)。sh_link和sh_info分别为b和1,分别表示相关符号表索引和重定位应用段的段头索引。其他段的内容再也不详细分析,能够本身分析并于前面readelf输出结果相对照。
……索引