解析查看elf文件的构成

x86下用clang编译一段c代码,编译成elf文件,读elf文件,dump出里面的所有段,并打印出段中的数据和含义以及汇编的内容

编写C代码

首先,编写一个简单的C程序,例如命名为example.c:
在这里插入图片描述

使用Clang编译

接下来,使用Clang编译器将C代码编译为目标文件和最终的可执行ELF文件。使用-g选项包含调试信息以便获得更详细的汇编代码:

clang -g -o example example.c

查看ELF文件信息

使用readelf工具查看ELF文件的头部信息,包括段信息:

readelf -h example

在这里插入图片描述
查看所有段的详细信息:

shreadelf -SW example

在这里插入图片描述

打印段中的数据

对于每个段,特别是.text(代码段)和.data(数据段),你可以使用readelf或objdump来提取段数据。查看.text段的汇编代码:

objdump -d example

这会展示出可执行文件的汇编代码。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看特定段的数据

若要查看某一段的数据(比如.data段),可以使用objdump的特定参数,但由于.data段可能包含的是二进制数据而非易于阅读的文本,直接打印可能意义不大。不过,你仍然可以尝试查看段的原始字节:

objdump -s -j .data example

在这里插入图片描述

objdump -s -j .rodata example

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值