您的位置:首页 > 财经 > 金融 > Linux 下 objdump 命令的使用

Linux 下 objdump 命令的使用

2024/11/16 22:50:32 来源:https://blog.csdn.net/Teminator_/article/details/140911176  浏览:    关键词:Linux 下 objdump 命令的使用

目录

  • 一、概述
  • 二、常用参数说明
  • 三、实例
  • 四、实例分析


一、概述

objdump 工具是用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。该命令常用于 Linux下反汇编目标文件或者可执行文件。

什么是反汇编

反汇编(disassembly)是指将已编译的机器码转换回可读的汇编代码的过程。在计算机系统中,程序的源代码经过编译器转换成机器码(二进制代码)后才能被计算机执行。反汇编就是将这些机器码再次转换成可读的汇编代码。

二、常用参数说明

  • -C 将底层的符号名解码成用户级名字,除了去掉所开头的下划线之外,还使得 C++ 函数名以可理解的方式显示出来。
  • -d 反汇编特定 section。
  • -D 反汇编所有 section。
  • -f 显示文件头信息。
  • -h 显示目标文件各个 section 的头部摘要信息。
  • -i 显示对于 -b 或者 -m 选项可用的架构和目标格式列表。
  • -j name 或 --section=name 仅仅显示指定名称为 name 的 section 的信息 。
  • -m 指定反汇编目标文件时使用的架构,当待反汇编文件本身没有描述架构信息的时候(比如 S-records),这个选项很有用。
  • -r 显示文件的重定位入口。如果和 -d 或者 -D 一起使用,重定位部分以反汇编后的格式显示出来。
  • -R 显示文件的动态重定位入口,仅仅对于动态目标文件有意义,比如某些共享库。
  • -s 显示指定 section 的完整内容。默认所有的非空 section 都会被显示。
  • -S 尽可能反汇编出源代码,尤其当编译的时候指定了 -g 这种调试参数时,效果比较明显。隐含了 -d 参数。
  • -t 显示文件的符号表入口。类似于 nm -s 提供的信息。
  • -x 显示所有可用的头信息,包括符号表、重定位入口。-x 等价于 -a -f -h -r -t 同时指定。

要查询更多参数可以用命令:man objdumpobjdump -H

三、实例

  1. 查看本机目标结构(使用大端还是小端存储)
objdump -i
  1. 反汇编程序
objdump -d main.o
  1. 显示符号表入口:
objdump -t main.o
  1. 显示头文件信息
objdump -f main.o
  1. 查看动态库依赖项
objdump -x xxx.so | grep "NEEDED" 
  1. 查看动态符号表
objdump -T xxx.so
## 假如想知道 xxx.so 中是否导出了符号 yyy,
## 那么命令为 objdump -T xxx.so | grep "yyy" 。
  1. 查看动态符号表
objdump -t xxx.so
## -T 和 -t 选项在于 -T 只能查看动态符号,如库导出的函数和引用其他库的函数,
## 而 -t 可以查看所有的符号,包括数据段的符号。

四、实例分析

  1. 下面首先写一个简单的 C 程序,并编译成可执行文件:
projectsauron@projectsauron:~/test$ cat test.c
#include <stdio.h>int main(){printf("hello world\n");return 0;
}
projectsauron@projectsauron:~/test$ gcc -g -o test test.c
  1. 显示 test 文件中的 text 段的内容:
projectsauron@projectsauron:~/test$ objdump -j .text -s testtest:     文件格式 elf64-x86-64Contents of section .text:1060 f30f1efa 31ed4989 d15e4889 e24883e4  ....1.I..^H..H..1070 f050544c 8d056601 0000488d 0def0000  .PTL..f...H.....1080 00488d3d c1000000 ff15522f 0000f490  .H.=......R/....1090 488d3d79 2f000048 8d05722f 00004839  H.=y/..H..r/..H910a0 f8741548 8b052e2f 00004885 c07409ff  .t.H.../..H..t..10b0 e00f1f80 00000000 c30f1f80 00000000  ................10c0 488d3d49 2f000048 8d35422f 00004829  H.=I/..H.5B/..H)10d0 fe4889f0 48c1ee3f 48c1f803 4801c648  .H..H..?H...H..H10e0 d1fe7414 488b0505 2f000048 85c07408  ..t.H.../..H..t.10f0 ffe0660f 1f440000 c30f1f80 00000000  ..f..D..........1100 f30f1efa 803d052f 00000075 2b554883  .....=./...u+UH.1110 3de22e00 00004889 e5740c48 8b3de62e  =.....H..t.H.=..1120 0000e819 ffffffe8 64ffffff c605dd2e  ........d.......1130 0000015d c30f1f00 c30f1f80 00000000  ...]............1140 f30f1efa e977ffff fff30f1e fa554889  .....w.......UH.1150 e5488d3d ac0e0000 e8f3feff ffb80000  .H.=............1160 00005dc3 662e0f1f 84000000 00006690  ..].f.........f.1170 f30f1efa 41574c8d 3d3b2c00 00415649  ....AWL.=;,..AVI1180 89d64155 4989f541 544189fc 55488d2d  ..AUI..ATA..UH.-1190 2c2c0000 534c29fd 4883ec08 e85ffeff  ,,..SL).H...._..11a0 ff48c1fd 03741f31 db0f1f80 00000000  .H...t.1........11b0 4c89f24c 89ee4489 e741ff14 df4883c3  L..L..D..A...H..11c0 014839dd 75ea4883 c4085b5d 415c415d  .H9.u.H...[]A\A]11d0 415e415f c366662e 0f1f8400 00000000  A^A_.ff.........11e0 f30f1efa c3                          .....
  1. 反汇编
projectsauron@projectsauron:~/test$ gcc -c test.c
projectsauron@projectsauron:~/test$ objdump -d test.otest.o:     文件格式 elf64-x86-64Disassembly of section .text:0000000000000000 <main>:0:   f3 0f 1e fa             endbr644:   55                      push   %rbp5:   48 89 e5                mov    %rsp,%rbp8:   48 8d 3d 00 00 00 00    lea    0x0(%rip),%rdi        # f <main+0xf>f:   e8 00 00 00 00          callq  14 <main+0x14>14:   b8 00 00 00 00          mov    $0x0,%eax19:   5d                      pop    %rbp1a:   c3                      retq
  1. 显示文件头信息
projectsauron@projectsauron:~/test$ objdump  -f test.otest.o:     文件格式 elf64-x86-64
体系结构:i386:x86-64, 标志 0x00000011:
HAS_RELOC, HAS_SYMS
起始地址 0x0000000000000000
  1. 反汇编 test 中的 text 段内容,并尽可能用源代码形式表示
projectsauron@projectsauron:~/test$ objdump -j .text -S test
test:     文件格式 elf64-x86-64Disassembly of section .text:0000000000001060 <_start>:1060:       f3 0f 1e fa             endbr641064:       31 ed                   xor    %ebp,%ebp1066:       49 89 d1                mov    %rdx,%r91069:       5e                      pop    %rsi106a:       48 89 e2                mov    %rsp,%rdx106d:       48 83 e4 f0             and    $0xfffffffffffffff0,%rsp1071:       50                      push   %rax1072:       54                      push   %rsp1073:       4c 8d 05 66 01 00 00    lea    0x166(%rip),%r8        # 11e0 <__libc_csu_fini>107a:       48 8d 0d ef 00 00 00    lea    0xef(%rip),%rcx        # 1170 <__libc_csu_init>1081:       48 8d 3d c1 00 00 00    lea    0xc1(%rip),%rdi        # 1149 <main>1088:       ff 15 52 2f 00 00       callq  *0x2f52(%rip)        # 3fe0 <__libc_start_main@GLIBC_2.2.5>108e:       f4                      hlt108f:       90                      nop0000000000001090 <deregister_tm_clones>:1090:       48 8d 3d 79 2f 00 00    lea    0x2f79(%rip),%rdi        # 4010 <__TMC_END__>1097:       48 8d 05 72 2f 00 00    lea    0x2f72(%rip),%rax        # 4010 <__TMC_END__>109e:       48 39 f8                cmp    %rdi,%rax10a1:       74 15                   je     10b8 <deregister_tm_clones+0x28>10a3:       48 8b 05 2e 2f 00 00    mov    0x2f2e(%rip),%rax        # 3fd8 <_ITM_deregisterTMCloneTable>10aa:       48 85 c0                test   %rax,%rax10ad:       74 09                   je     10b8 <deregister_tm_clones+0x28>10af:       ff e0                   jmpq   *%rax10b1:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)10b8:       c3                      retq10b9:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)00000000000010c0 <register_tm_clones>:10c0:       48 8d 3d 49 2f 00 00    lea    0x2f49(%rip),%rdi        # 4010 <__TMC_END__>10c7:       48 8d 35 42 2f 00 00    lea    0x2f42(%rip),%rsi        # 4010 <__TMC_END__>10ce:       48 29 fe                sub    %rdi,%rsi10d1:       48 89 f0                mov    %rsi,%rax10d4:       48 c1 ee 3f             shr    $0x3f,%rsi10d8:       48 c1 f8 03             sar    $0x3,%rax10dc:       48 01 c6                add    %rax,%rsi10df:       48 d1 fe                sar    %rsi10e2:       74 14                   je     10f8 <register_tm_clones+0x38>10e4:       48 8b 05 05 2f 00 00    mov    0x2f05(%rip),%rax        # 3ff0 <_ITM_registerTMCloneTable>10eb:       48 85 c0                test   %rax,%rax10ee:       74 08                   je     10f8 <register_tm_clones+0x38>10f0:       ff e0                   jmpq   *%rax10f2:       66 0f 1f 44 00 00       nopw   0x0(%rax,%rax,1)10f8:       c3                      retq10f9:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)0000000000001100 <__do_global_dtors_aux>:1100:       f3 0f 1e fa             endbr641104:       80 3d 05 2f 00 00 00    cmpb   $0x0,0x2f05(%rip)        # 4010 <__TMC_END__>110b:       75 2b                   jne    1138 <__do_global_dtors_aux+0x38>110d:       55                      push   %rbp110e:       48 83 3d e2 2e 00 00    cmpq   $0x0,0x2ee2(%rip)        # 3ff8 <__cxa_finalize@GLIBC_2.2.5>1115:       001116:       48 89 e5                mov    %rsp,%rbp1119:       74 0c                   je     1127 <__do_global_dtors_aux+0x27>111b:       48 8b 3d e6 2e 00 00    mov    0x2ee6(%rip),%rdi        # 4008 <__dso_handle>1122:       e8 19 ff ff ff          callq  1040 <__cxa_finalize@plt>1127:       e8 64 ff ff ff          callq  1090 <deregister_tm_clones>112c:       c6 05 dd 2e 00 00 01    movb   $0x1,0x2edd(%rip)        # 4010 <__TMC_END__>1133:       5d                      pop    %rbp1134:       c3                      retq1135:       0f 1f 00                nopl   (%rax)1138:       c3                      retq1139:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)0000000000001140 <frame_dummy>:1140:       f3 0f 1e fa             endbr641144:       e9 77 ff ff ff          jmpq   10c0 <register_tm_clones>0000000000001149 <main>:
#include <stdio.h>int main(){1149:       f3 0f 1e fa             endbr64114d:       55                      push   %rbp114e:       48 89 e5                mov    %rsp,%rbpprintf("hello world\n");1151:       48 8d 3d ac 0e 00 00    lea    0xeac(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>1158:       e8 f3 fe ff ff          callq  1050 <puts@plt>return 0;115d:       b8 00 00 00 00          mov    $0x0,%eax
}1162:       5d                      pop    %rbp1163:       c3                      retq1164:       66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)116b:       00 00 00116e:       66 90                   xchg   %ax,%ax0000000000001170 <__libc_csu_init>:1170:       f3 0f 1e fa             endbr641174:       41 57                   push   %r151176:       4c 8d 3d 3b 2c 00 00    lea    0x2c3b(%rip),%r15        # 3db8 <__frame_dummy_init_array_entry>117d:       41 56                   push   %r14117f:       49 89 d6                mov    %rdx,%r141182:       41 55                   push   %r131184:       49 89 f5                mov    %rsi,%r131187:       41 54                   push   %r121189:       41 89 fc                mov    %edi,%r12d118c:       55                      push   %rbp118d:       48 8d 2d 2c 2c 00 00    lea    0x2c2c(%rip),%rbp        # 3dc0 <__do_global_dtors_aux_fini_array_entry>1194:       53                      push   %rbx1195:       4c 29 fd                sub    %r15,%rbp1198:       48 83 ec 08             sub    $0x8,%rsp119c:       e8 5f fe ff ff          callq  1000 <_init>11a1:       48 c1 fd 03             sar    $0x3,%rbp11a5:       74 1f                   je     11c6 <__libc_csu_init+0x56>11a7:       31 db                   xor    %ebx,%ebx11a9:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)11b0:       4c 89 f2                mov    %r14,%rdx11b3:       4c 89 ee                mov    %r13,%rsi11b6:       44 89 e7                mov    %r12d,%edi11b9:       41 ff 14 df             callq  *(%r15,%rbx,8)11bd:       48 83 c3 01             add    $0x1,%rbx11c1:       48 39 dd                cmp    %rbx,%rbp11c4:       75 ea                   jne    11b0 <__libc_csu_init+0x40>11c6:       48 83 c4 08             add    $0x8,%rsp11ca:       5b                      pop    %rbx11cb:       5d                      pop    %rbp11cc:       41 5c                   pop    %r1211ce:       41 5d                   pop    %r1311d0:       41 5e                   pop    %r1411d2:       41 5f                   pop    %r1511d4:       c3                      retq11d5:       66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)11dc:       00 00 00 0000000000000011e0 <__libc_csu_fini>:11e0:       f3 0f 1e fa             endbr6411e4:       c3                      retq
...
  1. 显示文件的符号表入口,将底层符号解码并表示成用户级别
projectsauron@projectsauron:~/test$ objdump -t -C testtest:     文件格式 elf64-x86-64SYMBOL TABLE:
0000000000000318 l    d  .interp        0000000000000000              .interp
0000000000000338 l    d  .note.gnu.property     0000000000000000              .note.gnu.property
0000000000000358 l    d  .note.gnu.build-id     0000000000000000              .note.gnu.build-id
000000000000037c l    d  .note.ABI-tag  0000000000000000              .note.ABI-tag
00000000000003a0 l    d  .gnu.hash      0000000000000000              .gnu.hash
00000000000003c8 l    d  .dynsym        0000000000000000              .dynsym
0000000000000470 l    d  .dynstr        0000000000000000              .dynstr
00000000000004f2 l    d  .gnu.version   0000000000000000              .gnu.version
0000000000000500 l    d  .gnu.version_r 0000000000000000              .gnu.version_r
0000000000000520 l    d  .rela.dyn      0000000000000000              .rela.dyn
00000000000005e0 l    d  .rela.plt      0000000000000000              .rela.plt
0000000000001000 l    d  .init  0000000000000000              .init
0000000000001020 l    d  .plt   0000000000000000              .plt
0000000000001040 l    d  .plt.got       0000000000000000              .plt.got
0000000000001050 l    d  .plt.sec       0000000000000000              .plt.sec
0000000000001060 l    d  .text  0000000000000000              .text
00000000000011e8 l    d  .fini  0000000000000000              .fini
0000000000002000 l    d  .rodata        0000000000000000              .rodata
0000000000002010 l    d  .eh_frame_hdr  0000000000000000              .eh_frame_hdr
0000000000002058 l    d  .eh_frame      0000000000000000              .eh_frame
0000000000003db8 l    d  .init_array    0000000000000000              .init_array
0000000000003dc0 l    d  .fini_array    0000000000000000              .fini_array
0000000000003dc8 l    d  .dynamic       0000000000000000              .dynamic
0000000000003fb8 l    d  .got   0000000000000000              .got
0000000000004000 l    d  .data  0000000000000000              .data
0000000000004010 l    d  .bss   0000000000000000              .bss
0000000000000000 l    d  .comment       0000000000000000              .comment
0000000000000000 l    d  .debug_aranges 0000000000000000              .debug_aranges
0000000000000000 l    d  .debug_info    0000000000000000              .debug_info
0000000000000000 l    d  .debug_abbrev  0000000000000000              .debug_abbrev
0000000000000000 l    d  .debug_line    0000000000000000              .debug_line
0000000000000000 l    d  .debug_str     0000000000000000              .debug_str
0000000000000000 l    df *ABS*  0000000000000000              crtstuff.c
0000000000001090 l     F .text  0000000000000000              deregister_tm_clones
00000000000010c0 l     F .text  0000000000000000              register_tm_clones
0000000000001100 l     F .text  0000000000000000              __do_global_dtors_aux
0000000000004010 l     O .bss   0000000000000001              completed.8061
0000000000003dc0 l     O .fini_array    0000000000000000              __do_global_dtors_aux_fini_array_entry
0000000000001140 l     F .text  0000000000000000              frame_dummy
0000000000003db8 l     O .init_array    0000000000000000              __frame_dummy_init_array_entry
0000000000000000 l    df *ABS*  0000000000000000              test.c
0000000000000000 l    df *ABS*  0000000000000000              crtstuff.c
000000000000215c l     O .eh_frame      0000000000000000              __FRAME_END__
0000000000000000 l    df *ABS*  0000000000000000
0000000000003dc0 l       .init_array    0000000000000000              __init_array_end
0000000000003dc8 l     O .dynamic       0000000000000000              _DYNAMIC
0000000000003db8 l       .init_array    0000000000000000              __init_array_start
0000000000002010 l       .eh_frame_hdr  0000000000000000              __GNU_EH_FRAME_HDR
0000000000003fb8 l     O .got   0000000000000000              _GLOBAL_OFFSET_TABLE_
0000000000001000 l     F .init  0000000000000000              _init
00000000000011e0 g     F .text  0000000000000005              __libc_csu_fini
0000000000000000  w      *UND*  0000000000000000              _ITM_deregisterTMCloneTable
0000000000004000  w      .data  0000000000000000              data_start
0000000000000000       F *UND*  0000000000000000              puts@@GLIBC_2.2.5
0000000000004010 g       .data  0000000000000000              _edata
00000000000011e8 g     F .fini  0000000000000000              .hidden _fini
0000000000000000       F *UND*  0000000000000000              __libc_start_main@@GLIBC_2.2.5
0000000000004000 g       .data  0000000000000000              __data_start
0000000000000000  w      *UND*  0000000000000000              __gmon_start__
0000000000004008 g     O .data  0000000000000000              .hidden __dso_handle
0000000000002000 g     O .rodata        0000000000000004              _IO_stdin_used
0000000000001170 g     F .text  0000000000000065              __libc_csu_init
0000000000004018 g       .bss   0000000000000000              _end
0000000000001060 g     F .text  000000000000002f              _start
0000000000004010 g       .bss   0000000000000000              __bss_start
0000000000001149 g     F .text  000000000000001b              main
0000000000004010 g     O .data  0000000000000000              .hidden __TMC_END__
0000000000000000  w      *UND*  0000000000000000              _ITM_registerTMCloneTable
0000000000000000  w    F *UND*  0000000000000000              __cxa_finalize@@GLIBC_2.2.5
  1. 反汇编特定段,并将汇编代码对应的文件名称和行号对应上
projectsauron@projectsauron:~/test$ objdump -d -l testtest:     文件格式 elf64-x86-64Disassembly of section .init:0000000000001000 <_init>:
_init():1000:       f3 0f 1e fa             endbr641004:       48 83 ec 08             sub    $0x8,%rsp1008:       48 8b 05 d9 2f 00 00    mov    0x2fd9(%rip),%rax        # 3fe8 <__gmon_start__>100f:       48 85 c0                test   %rax,%rax1012:       74 02                   je     1016 <_init+0x16>1014:       ff d0                   callq  *%rax1016:       48 83 c4 08             add    $0x8,%rsp101a:       c3                      retqDisassembly of section .plt:0000000000001020 <.plt>:1020:       ff 35 9a 2f 00 00       pushq  0x2f9a(%rip)        # 3fc0 <_GLOBAL_OFFSET_TABLE_+0x8>1026:       f2 ff 25 9b 2f 00 00    bnd jmpq *0x2f9b(%rip)        # 3fc8 <_GLOBAL_OFFSET_TABLE_+0x10>102d:       0f 1f 00                nopl   (%rax)1030:       f3 0f 1e fa             endbr641034:       68 00 00 00 00          pushq  $0x01039:       f2 e9 e1 ff ff ff       bnd jmpq 1020 <.plt>103f:       90                      nopDisassembly of section .plt.got:0000000000001040 <__cxa_finalize@plt>:1040:       f3 0f 1e fa             endbr641044:       f2 ff 25 ad 2f 00 00    bnd jmpq *0x2fad(%rip)        # 3ff8 <__cxa_finalize@GLIBC_2.2.5>104b:       0f 1f 44 00 00          nopl   0x0(%rax,%rax,1)Disassembly of section .plt.sec:0000000000001050 <puts@plt>:1050:       f3 0f 1e fa             endbr641054:       f2 ff 25 75 2f 00 00    bnd jmpq *0x2f75(%rip)        # 3fd0 <puts@GLIBC_2.2.5>105b:       0f 1f 44 00 00          nopl   0x0(%rax,%rax,1)Disassembly of section .text:0000000000001060 <_start>:
_start():1060:       f3 0f 1e fa             endbr641064:       31 ed                   xor    %ebp,%ebp1066:       49 89 d1                mov    %rdx,%r91069:       5e                      pop    %rsi106a:       48 89 e2                mov    %rsp,%rdx106d:       48 83 e4 f0             and    $0xfffffffffffffff0,%rsp1071:       50                      push   %rax1072:       54                      push   %rsp1073:       4c 8d 05 66 01 00 00    lea    0x166(%rip),%r8        # 11e0 <__libc_csu_fini>107a:       48 8d 0d ef 00 00 00    lea    0xef(%rip),%rcx        # 1170 <__libc_csu_init>1081:       48 8d 3d c1 00 00 00    lea    0xc1(%rip),%rdi        # 1149 <main>1088:       ff 15 52 2f 00 00       callq  *0x2f52(%rip)        # 3fe0 <__libc_start_main@GLIBC_2.2.5>108e:       f4                      hlt108f:       90                      nop0000000000001090 <deregister_tm_clones>:
deregister_tm_clones():1090:       48 8d 3d 79 2f 00 00    lea    0x2f79(%rip),%rdi        # 4010 <__TMC_END__>1097:       48 8d 05 72 2f 00 00    lea    0x2f72(%rip),%rax        # 4010 <__TMC_END__>109e:       48 39 f8                cmp    %rdi,%rax10a1:       74 15                   je     10b8 <deregister_tm_clones+0x28>10a3:       48 8b 05 2e 2f 00 00    mov    0x2f2e(%rip),%rax        # 3fd8 <_ITM_deregisterTMCloneTable>10aa:       48 85 c0                test   %rax,%rax10ad:       74 09                   je     10b8 <deregister_tm_clones+0x28>10af:       ff e0                   jmpq   *%rax10b1:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)10b8:       c3                      retq10b9:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)00000000000010c0 <register_tm_clones>:
register_tm_clones():10c0:       48 8d 3d 49 2f 00 00    lea    0x2f49(%rip),%rdi        # 4010 <__TMC_END__>10c7:       48 8d 35 42 2f 00 00    lea    0x2f42(%rip),%rsi        # 4010 <__TMC_END__>10ce:       48 29 fe                sub    %rdi,%rsi10d1:       48 89 f0                mov    %rsi,%rax10d4:       48 c1 ee 3f             shr    $0x3f,%rsi10d8:       48 c1 f8 03             sar    $0x3,%rax10dc:       48 01 c6                add    %rax,%rsi10df:       48 d1 fe                sar    %rsi10e2:       74 14                   je     10f8 <register_tm_clones+0x38>10e4:       48 8b 05 05 2f 00 00    mov    0x2f05(%rip),%rax        # 3ff0 <_ITM_registerTMCloneTable>10eb:       48 85 c0                test   %rax,%rax10ee:       74 08                   je     10f8 <register_tm_clones+0x38>10f0:       ff e0                   jmpq   *%rax10f2:       66 0f 1f 44 00 00       nopw   0x0(%rax,%rax,1)10f8:       c3                      retq10f9:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)0000000000001100 <__do_global_dtors_aux>:
__do_global_dtors_aux():1100:       f3 0f 1e fa             endbr641104:       80 3d 05 2f 00 00 00    cmpb   $0x0,0x2f05(%rip)        # 4010 <__TMC_END__>110b:       75 2b                   jne    1138 <__do_global_dtors_aux+0x38>110d:       55                      push   %rbp110e:       48 83 3d e2 2e 00 00    cmpq   $0x0,0x2ee2(%rip)        # 3ff8 <__cxa_finalize@GLIBC_2.2.5>1115:       001116:       48 89 e5                mov    %rsp,%rbp1119:       74 0c                   je     1127 <__do_global_dtors_aux+0x27>111b:       48 8b 3d e6 2e 00 00    mov    0x2ee6(%rip),%rdi        # 4008 <__dso_handle>1122:       e8 19 ff ff ff          callq  1040 <__cxa_finalize@plt>1127:       e8 64 ff ff ff          callq  1090 <deregister_tm_clones>112c:       c6 05 dd 2e 00 00 01    movb   $0x1,0x2edd(%rip)        # 4010 <__TMC_END__>1133:       5d                      pop    %rbp1134:       c3                      retq1135:       0f 1f 00                nopl   (%rax)1138:       c3                      retq1139:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)0000000000001140 <frame_dummy>:
frame_dummy():1140:       f3 0f 1e fa             endbr641144:       e9 77 ff ff ff          jmpq   10c0 <register_tm_clones>0000000000001149 <main>:
main():
/home/projectsauron/test/test.c:31149:       f3 0f 1e fa             endbr64114d:       55                      push   %rbp114e:       48 89 e5                mov    %rsp,%rbp
/home/projectsauron/test/test.c:41151:       48 8d 3d ac 0e 00 00    lea    0xeac(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>1158:       e8 f3 fe ff ff          callq  1050 <puts@plt>
/home/projectsauron/test/test.c:5115d:       b8 00 00 00 00          mov    $0x0,%eax
/home/projectsauron/test/test.c:61162:       5d                      pop    %rbp1163:       c3                      retq1164:       66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)116b:       00 00 00116e:       66 90                   xchg   %ax,%ax0000000000001170 <__libc_csu_init>:
__libc_csu_init():1170:       f3 0f 1e fa             endbr641174:       41 57                   push   %r151176:       4c 8d 3d 3b 2c 00 00    lea    0x2c3b(%rip),%r15        # 3db8 <__frame_dummy_init_array_entry>117d:       41 56                   push   %r14117f:       49 89 d6                mov    %rdx,%r141182:       41 55                   push   %r131184:       49 89 f5                mov    %rsi,%r131187:       41 54                   push   %r121189:       41 89 fc                mov    %edi,%r12d118c:       55                      push   %rbp118d:       48 8d 2d 2c 2c 00 00    lea    0x2c2c(%rip),%rbp        # 3dc0 <__do_global_dtors_aux_fini_array_entry>1194:       53                      push   %rbx1195:       4c 29 fd                sub    %r15,%rbp1198:       48 83 ec 08             sub    $0x8,%rsp119c:       e8 5f fe ff ff          callq  1000 <_init>11a1:       48 c1 fd 03             sar    $0x3,%rbp11a5:       74 1f                   je     11c6 <__libc_csu_init+0x56>11a7:       31 db                   xor    %ebx,%ebx11a9:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)11b0:       4c 89 f2                mov    %r14,%rdx11b3:       4c 89 ee                mov    %r13,%rsi11b6:       44 89 e7                mov    %r12d,%edi11b9:       41 ff 14 df             callq  *(%r15,%rbx,8)11bd:       48 83 c3 01             add    $0x1,%rbx11c1:       48 39 dd                cmp    %rbx,%rbp11c4:       75 ea                   jne    11b0 <__libc_csu_init+0x40>11c6:       48 83 c4 08             add    $0x8,%rsp11ca:       5b                      pop    %rbx11cb:       5d                      pop    %rbp11cc:       41 5c                   pop    %r1211ce:       41 5d                   pop    %r1311d0:       41 5e                   pop    %r1411d2:       41 5f                   pop    %r1511d4:       c3                      retq11d5:       66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)11dc:       00 00 00 0000000000000011e0 <__libc_csu_fini>:
__libc_csu_fini():11e0:       f3 0f 1e fa             endbr6411e4:       c3                      retqDisassembly of section .fini:00000000000011e8 <_fini>:
_fini():11e8:       f3 0f 1e fa             endbr6411ec:       48 83 ec 08             sub    $0x8,%rsp11f0:       48 83 c4 08             add    $0x8,%rsp11f4:       c3                      retq
  1. 显示目标文件各个段的头部摘要信息
projectsauron@projectsauron:~/test$ objdump -h testtest:     文件格式 elf64-x86-64节:
Idx Name          Size      VMA               LMA               File off  Algn0 .interp       0000001c  0000000000000318  0000000000000318  00000318  2**0CONTENTS, ALLOC, LOAD, READONLY, DATA1 .note.gnu.property 00000020  0000000000000338  0000000000000338  00000338  2**3CONTENTS, ALLOC, LOAD, READONLY, DATA2 .note.gnu.build-id 00000024  0000000000000358  0000000000000358  00000358  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA3 .note.ABI-tag 00000020  000000000000037c  000000000000037c  0000037c  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA4 .gnu.hash     00000024  00000000000003a0  00000000000003a0  000003a0  2**3CONTENTS, ALLOC, LOAD, READONLY, DATA5 .dynsym       000000a8  00000000000003c8  00000000000003c8  000003c8  2**3CONTENTS, ALLOC, LOAD, READONLY, DATA6 .dynstr       00000082  0000000000000470  0000000000000470  00000470  2**0CONTENTS, ALLOC, LOAD, READONLY, DATA7 .gnu.version  0000000e  00000000000004f2  00000000000004f2  000004f2  2**1CONTENTS, ALLOC, LOAD, READONLY, DATA8 .gnu.version_r 00000020  0000000000000500  0000000000000500  00000500  2**3CONTENTS, ALLOC, LOAD, READONLY, DATA9 .rela.dyn     000000c0  0000000000000520  0000000000000520  00000520  2**3CONTENTS, ALLOC, LOAD, READONLY, DATA10 .rela.plt     00000018  00000000000005e0  00000000000005e0  000005e0  2**3CONTENTS, ALLOC, LOAD, READONLY, DATA11 .init         0000001b  0000000000001000  0000000000001000  00001000  2**2CONTENTS, ALLOC, LOAD, READONLY, CODE12 .plt          00000020  0000000000001020  0000000000001020  00001020  2**4CONTENTS, ALLOC, LOAD, READONLY, CODE13 .plt.got      00000010  0000000000001040  0000000000001040  00001040  2**4CONTENTS, ALLOC, LOAD, READONLY, CODE14 .plt.sec      00000010  0000000000001050  0000000000001050  00001050  2**4CONTENTS, ALLOC, LOAD, READONLY, CODE15 .text         00000185  0000000000001060  0000000000001060  00001060  2**4CONTENTS, ALLOC, LOAD, READONLY, CODE16 .fini         0000000d  00000000000011e8  00000000000011e8  000011e8  2**2CONTENTS, ALLOC, LOAD, READONLY, CODE17 .rodata       00000010  0000000000002000  0000000000002000  00002000  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA18 .eh_frame_hdr 00000044  0000000000002010  0000000000002010  00002010  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA19 .eh_frame     00000108  0000000000002058  0000000000002058  00002058  2**3CONTENTS, ALLOC, LOAD, READONLY, DATA20 .init_array   00000008  0000000000003db8  0000000000003db8  00002db8  2**3CONTENTS, ALLOC, LOAD, DATA21 .fini_array   00000008  0000000000003dc0  0000000000003dc0  00002dc0  2**3CONTENTS, ALLOC, LOAD, DATA22 .dynamic      000001f0  0000000000003dc8  0000000000003dc8  00002dc8  2**3CONTENTS, ALLOC, LOAD, DATA23 .got          00000048  0000000000003fb8  0000000000003fb8  00002fb8  2**3CONTENTS, ALLOC, LOAD, DATA24 .data         00000010  0000000000004000  0000000000004000  00003000  2**3CONTENTS, ALLOC, LOAD, DATA25 .bss          00000008  0000000000004010  0000000000004010  00003010  2**0ALLOC26 .comment      0000002b  0000000000000000  0000000000000000  00003010  2**0CONTENTS, READONLY27 .debug_aranges 00000030  0000000000000000  0000000000000000  0000303b  2**0CONTENTS, READONLY, DEBUGGING, OCTETS28 .debug_info   00000301  0000000000000000  0000000000000000  0000306b  2**0CONTENTS, READONLY, DEBUGGING, OCTETS29 .debug_abbrev 000000cc  0000000000000000  0000000000000000  0000336c  2**0CONTENTS, READONLY, DEBUGGING, OCTETS30 .debug_line   00000112  0000000000000000  0000000000000000  00003438  2**0CONTENTS, READONLY, DEBUGGING, OCTETS31 .debug_str    00000299  0000000000000000  0000000000000000  0000354a  2**0CONTENTS, READONLY, DEBUGGING, OCTETS

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com