您的位置:首页 > 其它

readelf工具深入剖析(入门概念请参考其他文章)

2017-05-05 18:52 337 查看
编写程序:

int main()



printf("hello");



readelf -h main.o,显示elf文件头

strip main.o,用strip去掉hello.o中的符号信息,再次查看头部信息。

节头被删掉了两个

read -S main.o 查看节头信息,可知被删掉了.symtab(符号表) 和.strtab(字符串表)

修改程序为:

int a;

int b =1;

const char c[] = “hello”;

int main()

{

printf("hello");

}

.data 大小增加4(对应已经声明的全局变量,已经声明的静态变量),再调整为8字节的倍数

.bss增加4(对应未始化全局变量,静态变量或者初始化为0的全局变量),再调整为8字节对齐。.bss段是8字节对齐的,这在节信息里有说明。.text是16字节对齐的,而.rodata是4字节对齐的,.data是8字节对齐的。

.rodata大小先增加6(对应全局常量数据),再调整为8的倍数

顺序:

。bss

。data

。rodata

。text

readelf -s main.o查看符号表

type字段有OBJECT变量,FUNC函数,SECTION节

readelf -r main.o查看可重定位符号
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: