14. objdump 二进制文件分析

objdump工具用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。

14.1. 常用参数说明

  • -f 显示文件头信息
  • -D 反汇编所有section (-d反汇编特定section)
  • -h 显示目标文件各个section的头部摘要信息
  • -x 显示所有可用的头信息,包括符号表、重定位入口。-x 等价于 -a -f -h -r -t 同时指定。
  • -i 显示对于 -b 或者 -m 选项可用的架构和目标格式列表。
  • -r 显示文件的重定位入口。如果和-d或者-D一起使用,重定位部分以反汇编后的格式显示出来。
  • -R 显示文件的动态重定位入口,仅仅对于动态目标文件有意义,比如某些共享库。
  • -S 尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,效果比较明显。隐含了-d参数。
  • -t 显示文件的符号表入口。类似于nm -s提供的信息

14.2. 示例

  • 查看本机目标结构(使用大端还是小端存储):
    $objdump -i
    
  • 反汇编程序:
    $objdump -d main.o
    
  • 显示符号表入口:
    $objdump  -t main.o
    

希望显示可用的简洁帮助信息,直接输入objdump即可;(objdump -H)

下一节:在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档; linux系统内置的帮助文档很详细,通常能解决我们的问题,我们需要掌握如何正确的去使用它们;

1. 在只记得部分命令关键字的场合,我们可通过man -k来搜索;
2. 需要知道某个命令的简要说明,可以使用whatis;而更详细的介绍,则可用info命令;
3. 查看命令在哪个位置,我们需要使用which;
4. 而对于命令的具体参数及使用方法,我们需要用到强大的man;

下面介绍这些命令;