objdump是一个GCC工具,用于查看目标文件或可执行目标文件的配置
linux下objdump命令常见用法举例:
objdump -x obj:以某种分类信息的形式构成对象文件的数据并输出; 可以调查该文件的所有动态库
objdump -t obj:目标文件的符号表(
objdump -h obj:目标文件中所有段的概述(
objdump-j./text/. data-sobj :输出指定段的信息(反汇编源代码) )。
objdump -S obj:目标文件中的符号表()在gcc -g情况下打印更明显
objdump -j .text -Sl stack1 | more
-S尽可能地反汇编源代码,特别是在编译时指定了调试参数(如-g )时。
效果比较明显。 -d参数被隐含。
-l用文件名和行号标记相应的目标代码,并仅与-d、-d或-r一起使用
使用-ld和使用-d的区别不是很大,在源代码级别调试时很有用。 要求
编译时使用了调试编译选项,如-g。
-j name仅显示指定section的信息
如何使用linux下objdump命令反汇编任何二进制文件?
可以使用以下命令:
objdump -D -b hcdmpary -m i386 a.hcdmp
-D表示反汇编所有文件,-b表示二进制文件,-m表示指令集体系结构,a.hcdmp是我们要反汇编的二进制文件
objdump -m可以显示更多支持的指令集体系结构,例如i386:x86-64和i8086
上述所有objdump命令的参数也适用于arm-linux-objdump。
也可以指定big-endian或little-Endian(-EB或-EL ),以指定从某个位置开始反汇编等。
objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍:
objdump -f test显示test的标头信息
objdump -d test反汇编需要执行test中指令的section
objdump -D test与-d类似,但它会反汇编test的所有section
objdump -h test显示test的Section Header信息
objdump -x test显示test的所有标题信息
objdump -s test不仅显示test的所有标题信息,还显示相应的十六进制文件代码