一、objdump命令简介
objdump是一个用于分析文件的命令行工具。它通常被用于UNIX和Linux系统中,用来检查可执行文件、动态链接共享库和内核镜像的文件格式和内容。
$ objdump -h test.out
上述命令将以16进制显示test.out文件的头信息。
二、objdump命令参数说明
1. -a参数
使用-a参数可以显示包括符号表在内的所有头部和代码段信息。
$ objdump -a test.out
上述命令将以16进制显示test.out文件的所有信息。
2. -D参数
使用-D参数可以显示文件的反汇编代码。
$ objdump -D test.out
上述命令将以反汇编代码的形式显示test.out文件中的代码。
3. -x参数
使用-x参数可以显示文件的所有头信息。
$ objdump -x test.out
上述命令将以16进制显示test.out文件的所有头信息。
4. -C参数
使用-C参数可以将符号名进行C++反汇编。
$ objdump -C test.out
上述命令将以C++反汇编的形式显示test.out文件中的代码。
5. -S参数
使用-S参数可以以反汇编代码和源代码的形式显示文件的代码段。
$ objdump -S test.out
上述命令将以反汇编和源代码的形式显示test.out文件中的代码。
三、objdump命令实战
1. 查看C程序的汇编代码和源代码
可以使用以下命令来查看一个C程序的汇编代码和源代码:
$ gcc -g test.c -o test
$ objdump -D test | less
$ objdump -S test | less
第一条命令生成了一个可执行文件test。
第二条命令使用objdump -D命令来查看test的汇编代码。
第三条命令使用objdump -S命令来以汇编和源代码的形式查看test的代码。
2. 查看可执行文件中函数调用的地址
可以使用以下命令来查看可执行文件中的函数调用地址:
$ objdump -d -j .plt test
上述命令将显示可执行文件test中所有函数调用的地址。
3. 查看共享库中函数的地址
可以使用以下命令来查看共享库中函数的地址:
$ objdump -T /lib/libc.so.6
上述命令将显示共享库libc.so.6中所有函数的地址。
4. 查看可执行文件中的符号表
可以使用以下命令来查看可执行文件中的符号表:
$ objdump -t test
上述命令将显示可执行文件test中的符号表。
5. 查看可执行文件中的重定位节
可以使用以下命令来查看可执行文件中的重定位节:
$ objdump -r test
上述命令将显示可执行文件test中的所有重定位节。