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

在这里插入图片描述

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部