objdump命令
objdump:objdump是用来查看目标文件或者可执行的目标文件的构成的GCC工具,objdump命令用一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息
objdump命令的使用:
objdump -t obj #输出目标文件的符号表
objdump -h obj #输出目标文件的所有段
objdump -S obj #C语言与汇编语言同时显示
objdump -f obj #显示目标文件头信息
objdump -x obj #显示目标文件的所有Header信息
readelf命令
readelf:readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息
ELF文件:目标文件在不同的系统或平台上具有不同的命名格式,在Unix和X86-64 Linux上称为ELF(Executable and Linkable Format, ELF),ELF文件参与程序的连接(建立一个程序)和程序的执行(运行一个程序),所以可以从不同的角度来看待elf格式的文件,如下图:
readelf命令的使用:
readelf -a [file] #--all 显示全部信息,等价于 -h -l -S -s -r -d -V -A -I.
readelf -h [file] #--file-header 显示elf文件开始的文件头信息.
readelf -l [file] #--program-headers --segments 显示程序头(段头)信息(如果有的话)。
readelf -S [file] #--section-headers --sections 显示节头信息(如果有的话)
readelf -g [file] #--section-groups 显示节组信息(如果有的话)。
readelf -t [file] #--section-details 显示节的详细信息(-S的)。
readelf -s [file] #--syms --symbols 显示符号表段中的项(如果有的话)。
readelf -e [file] #--headers 显示全部头信息,等价于: -h -l -S -n --notes 显示note段(内核注释)的信息。
readelf -r [file] #--relocs 显示可重定位段的信息。
readelf -u [file] #--unwind 显示unwind段信息。当前只支持IA64 ELF的unwind段信息。
readelf -d [file] #--dynamic 显示动态段的信息。
readelf -V [file] #--version-info 显示版本段的信息。
readelf -A [file] #--arch-specific 显示CPU构架信息。
readelf -D [file] #--use-dynamic 使用动态段中的符号表显示符号,而不是使用符号段。
readelf -x [file] #--hex-dump= 以16进制方式显示指定段内内容。number指定段表中段的索引,或字符串指定文件中的段名。
readelf -I [file] #--histogram 显示符号的时候,显示bucket list长度的柱状图。
readelf -v [file] #--version 显示readelf的版本信息。
readelf -H [file] #--help 显示readelf所支持的命令行选项。
readelf -W [file] #--wide 宽行输出