温馨提示×

如何用objdump反汇编linux

小樊
43
2026-09-06 13:23:52
栏目: 智能运维

在 Linux 下,objdump 是 GNU binutils 提供的工具,常用于反汇编可执行文件、目标文件、共享库等。下面按常见使用场景说明。


一、基本用法

objdump -d <文件>

示例:

objdump -d /bin/ls
  • -d:反汇编所有包含指令的段(如 .text

二、常用选项说明

1. 反汇编整个文件

objdump -D file
  • -D:反汇编所有段(包括数据段,可能无意义)

2. 显示源代码(如果有调试信息)

objdump -d -S file
  • -S:交错显示源代码 + 汇编
  • 需要编译时加 -g
    gcc -g -o test test.c
    

3. 显示符号表

objdump -t file

objdump -T file   # 动态符号表

4. 查看文件头信息

objdump -f file

5. 查看段信息

objdump -h file

6. 显示重定位信息

objdump -r file

三、结合其他工具的典型流程

1. 查看文件类型

file ./program

2. 查看入口点和架构

readelf -h ./program

3. 反汇编指定函数

objdump -d ./program | grep -A 20 "<main>:"

或使用 nm 找地址:

nm ./program | grep main
objdump -d --start-address=0xXXXX --stop-address=0xYYYY ./program

四、示例:反汇编 Linux 命令

objdump -d /bin/ls | less

或只反汇编 main

objdump -d /bin/ls | awk '/<main>:/{flag=1} flag{print} /^$/{if(flag) exit}'

五、注意事项

  1. ** stripped 文件**

    • 没有符号表,函数名不可见
    • 可用 objdump -d 看地址和指令
  2. 架构匹配

    • x86 / x86_64 / ARM 等
    • 交叉编译时用对应工具链:
      arm-linux-gnueabi-objdump -d file
      
  3. 与 gdb 配合

    gdb ./program
    (gdb) disassemble main
    

如果你有具体目标(比如:反汇编内核、分析漏洞、看系统调用、ARM 程序),可以告诉我,我可以给你更针对性的命令。

0