objdump命令
objdump是一个强大的二进制文件分析工具,可以用于查看二进制文件的汇编代码、符号表、重定位表等信息。本攻略将介绍objdump的基本用法和示例。
基本用法
objdump的基本用法如下:
objdump [options] file
其中,file
是要分析的二进制文件,options
是命令选项,可以用于指定分析的内容和格式等。
以下是常用的命令选项:
-d
:显示二进制文件的汇编代码。-t
:显示二进制文件的符号表。-r
:二进制文件的重定位表。-S
:同时显示汇编代码和源代码。-x
:显示所有头部信息。
示例:查看二进制文件的汇编代码
以下是使用objdump查看二进制文件的汇编代码的示例:
objdump -d a.out
其中,a.out
是要分析的二进制文件。
输出结果类似于:
a.out: format elf64-x86-64
Disassembly of section .init:
0000000000001000 <_init>:
1000: 48 83 ec 08 sub $0x8,%rsp
1004: 48 8b 05 d 2f 00 00 mov 0x2f0d(%rip),%rax # 3f18 <__gmon_start__>
100b: 48 85 c0 test %rax,%rax
100e: 74 02 je 1012 <_init+0x12 1010: ff d0 callq *%rax
1012: 48 83 c4 08 add $0x8,%rsp
1016: c3 retq
其中,a.out
是要分析的二进制文件。
示例2:查看二进制文件的符号表
以下是使用objdump查看二进制文件的符号表的示例:
objdump -t a.out
其中,a.out
是要分析的二进制文件。
输出结果类似于:
a.out: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 l df *ABS* 0000000000000000 crtstuff.c
0000000000000000 l df *ABS* 0000000000000000 crti.o
0000000000000000 l df *ABS* 0000000000000000 crtbegin.o
00000000000000e0 l F .text 0000000000000000 deregister_tm_clones
0000000000000110 l F .text 0000000000000000 register_tm_clones
0000000000000150 l F .text 0000000000000000 __do_global_dtors_aux
0000000000000190 l F .text 0000000000000000 frame_dummy
0000000000001f0 l F .text 0000000000000000 main
00000000000022a l F .text 0000000000000000 __libc_csu_init
0000000000002a0 l F .text 0000000000000000 __libc_csu_fini
0000000000002a8 l O .data 0000000000000000 completed.7584
0000000000002b0 l O .bss 0000000000000000 dtor_idx.7586
0000000000002b8 l O .bss 0000000000000000 __dso_handle
0000000000002c0 l O .bss 0000000000000000 object.7588
0000000000000000 l df *ABS* 0000000000000000 crtend.o
0000000000000000 l df *ABS* 0000000000000000 crtn.o
其中,a.out
是要分析的二进制文件。
结论
在本攻略中,我们介绍了objdump的基本用法和示例。objdump是一个强大的二进制文件分析工具,可以用于查看二进制文件的汇编代码、符号表、重定位表等信息。如果您需要分析二进制文件,可以考虑使用objdump。