Linux中objdump的使用方法
目录
objdump 是 Linux 中一个强大的二进制文件分析工具,主要用于反汇编目标文件、可执行文件或库文件,并显示其中的详细信息。以下是它的常见用法和选项说明:
1. 基本语法
objdump [选项] <文件名>
2. 常用选项和功能
(1)反汇编代码
-
反汇编特定节区(如
.text):objdump -d <文件名>示例:
objdump -d /bin/ls -
反汇编所有节区(包括数据段):
objdump -D <文件名> -
指定架构(如交叉编译时需明确目标架构):
objdump -d -m i386 <文件名> # 32位 x86 objdump -d -m arm <文件名> # ARM
(2)显示文件头信息
objdump -f <文件名>
显示文件的魔数、架构、入口地址等。
(3)显示节区头信息
objdump -h <文件名>
列出所有节区(Section)的名称、大小、地址等。
(4)显示符号表
objdump -t <文件名>
查看文件中的符号(函数、全局变量等)。
(5)显示动态符号表(用于动态库)
objdump -T <文件名>
(6)显示重定位信息
objdump -r <文件名>
(7)混合显示源代码和汇编(需编译时加 -g 调试信息)
objdump -S <文件名>
(8)以 Intel 语法显示汇编(默认是 AT&T 语法)
objdump -d -M intel <文件名>
(9)控制输出范围
- 反汇编指定函数:
objdump -d <文件名> | grep -A20 "<函数名>" - 反汇编指定地址范围:
objdump -d --start-address=0x400000 --stop-address=0x400100 <文件名>
3. 实际示例
示例1:反汇编可执行文件
objdump -d /bin/ls | less
示例2:查看目标文件结构
objdump -h main.o
示例3:分析动态库的符号
objdump -T libc.so.6
示例4:显示完整文件信息(包含头、节区、符号、代码)
objdump -x -d a.out
4. 常见问题
- 权限问题:若文件无读权限,需使用
sudo。 - 架构不匹配:尝试通过
-m指定架构,或使用交叉编译工具链中的objdump(如aarch64-linux-gnu-objdump)。 - ** stripped 文件**:如果文件被剥离符号表(
strip过),部分信息可能无法显示。
5. 结合其他工具
- 查找特定函数:
objdump -d <文件> | grep <函数名> - 统计代码大小:
objdump -h <文件> | grep .text - 调试崩溃问题:通过反汇编定位崩溃地址(结合
gdb)。
通过灵活组合这些选项,objdump 可以帮助你深入分析二进制文件的内部结构。
Do not communicate by sharing memory; instead, share memory by communicating.

浙公网安备 33010602011771号