objdump与readelf

objdump和readelf都是用于查看二进制文件内部信息的工具,各自具有特色。objdump更通用,readelf信息更详细。它们在反汇编代码、显示重定位条目、节信息等方面有不同表现。例如,objdump能显示特殊节的数据,readelf的显示更清晰。此外,readelf有显示动态重定位条目、.dynamic节和程序段信息等功能,而objdump在某些方面提供更灵活的选项,如节内容的dump。两者在查看符号信息时也有差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

objdump和readelf都可以用来查看二进制文件的一些内部信息. 区别在于objdump
借助BFD而更加通用一些, 可以应付不同文件格式, readelf则并不借助BFD,
而是直接读取ELF格式文件的信息, 按readelf手册页上所说, 得到的信息也略细致一些.
几个功能对比.

1. 反汇编代码
查看源代码被翻译成的汇编代码, 大概有3种方法,
1) 通过编译器直接从源文件生成, 如gcc -S 文件
2) 对目标代码反汇编, 一种是静态反汇编, 就是使用objdump  -d 文件
3) 另外一种就是对运行时的代码反汇编, 一般通过gdb

readelf并不提供反汇编功能.

objdump可以指定反汇编哪个节, 一般只有对包含指令的节反汇编才有意义. 而对于一些
其他的类型的节, objdump也可以将特殊节的数据以解析后的形式呈现出来

 

2. 显示relocation节的条目
-r参数显示elf文件的类型为REL的节的信息, 使用-S参数可以列出elf文件的
所有节的信息, 其中也就包括了REL节.

对于可重定位文件两者显示条目一致, 最重要的offset和type以及Sym.Name都有.

#readelf -r XXX.o

#objdump -r XXX.o

readelf的显示分节, 而objdump则将两个节合在一起. rea

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值