objdump 介绍

objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具

objdump 选项介绍

  1. --archive-headers
  2. -a
  3. 显示档案库的成员信息,类似ls -llib*.a的信息列出。
  4. -b bfdname
  5. --target=bfdname
  6. 指定目标码格式。这不是必须的,objdump能自动识别许多格式,比如:
  7. objdump -b oasys -m vax -h fu.o
  8. 显示fu.o的头部摘要信息,明确指出该文件是Vax系统下用Oasys编译器生成的目标文件。objdump -i将给出这里可以指定的目标码格式列表。
  9. -C
  10. --demangle
  11. 将底层的符号名解码成用户级名字,除了去掉所开头的下划线之外,还使得C++函数名以可理解的方式显示出来。
  12. --debugging
  13. -g
  14. 显示调试信息。企图解析保存在文件中的调试信息并以C语言的语法显示出来。仅仅支持某些类型的调试信息。有些其他的格式被readelf -w支持。
  15. -e
  16. --debugging-tags
  17. 类似-g选项,但是生成的信息是和ctags工具相兼容的格式。
  18. --disassemble
  19. -d
  20. objfile中反汇编那些特定指令机器码的section
  21. -D
  22. --disassemble-all
  23. -d 类似,但反汇编所有section.
  24. --prefix-addresses
  25. 反汇编的时候,显示每一行的完整地址。这是一种比较老的反汇编格式。
  26. -EB
  27. -EL
  28. --endian={big|little}
  29. 指定目标文件的小端。这个项将影响反汇编出来的指令。在反汇编的文件没描述小端信息的时候用。例如S-records.
  30. -f
  31. --file-headers
  32. 显示objfile中每个文件的整体头部摘要信息。
  33. -h
  34. --section-headers
  35. --headers
  36. 显示目标文件各个section的头部摘要信息。
  37. -H
  38. --help
  39. 简短的帮助信息。
  40. -i
  41. --info
  42. 显示对于 -b 或者 -m 选项可用的架构和目标格式列表。
  43. -j name
  44. --section=name
  45. 仅仅显示指定名称为namesection的信息
  46. -l
  47. --line-numbers
  48. 用文件名和行号标注相应的目标代码,仅仅和-d、-D或者-r一起使用使用-ld和使用-d的区别不是很大,在源码级调试的时候有用,要求编译时使用了-g之类的调试编译选项。
  49. -m machine
  50. --architecture=machine
  51. 指定反汇编目标文件时使用的架构,当待反汇编文件本身没描述架构信息的时候(比如S-records),这个选项很有用。可以用-i选项列出这里能够指定的架构.
  52. --reloc
  53. -r
  54. 显示文件的重定位入口。如果和-d或者-D一起使用,重定位部分以反汇编后的格式显示出来。
  55. --dynamic-reloc
  56. -R
  57. 显示文件的动态重定位入口,仅仅对于动态目标文件意义,比如某些共享库。
  58. -s
  59. --full-contents
  60. 显示指定section的完整内容。默认所有的非空section都会被显示。
  61. -S
  62. --source
  63. 尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,效果比较明显。隐含了-d参数。
  64. --show-raw-insn
  65. 反汇编的时候,显示每条汇编指令对应的机器码,如不指定--prefix-addresses,这将是缺省选项。
  66. --no-show-raw-insn
  67. 反汇编时,不显示汇编指令的机器码,如不指定--prefix-addresses,这将是缺省选项。
  68. --start-address=address
  69. 从指定地址开始显示数据,该选项影响-d、-r和-s选项的输出。
  70. --stop-address=address
  71. 显示数据直到指定地址为止,该项影响-d、-r和-s选项的输出。
  72. -t
  73. --syms
  74. 显示文件的符号表入口。类似于nm -s提供的信息
  75. -T
  76. --dynamic-syms
  77. 显示文件的动态符号表入口,仅仅对动态目标文件意义,比如某些共享库。它显示的信息类似于 nm -D|--dynamic 显示的信息。
  78. -V
  79. --version
  80. 版本信息
  81. --all-headers
  82. -x
  83. 显示所可用的头信息,包括符号表、重定位入口。-x 等价于-a -f -h -r -t 同时指定。
  84. -z
  85. --disassemble-zeroes
  86. 一般反汇编输出将省略大块的零,该选项使得这些零块也被反汇编。
  87. @file 可以将选项集中到一个文件中,然后使用这个@file选项载入。

实例

首先,在给出后面大部分测试所基于的源代码以及编译指令。 源代码如下:

  1. 1 #include <stdio.h>
  2. 2 #include <stdlib.h>
  3. 3 int test_pass_parm(int a, int b, int c, int d, int e, int f, int g, int h)
  4. 4 {
  5. 5
  6. 6 printf("a:%0x, b:%0x c:%0x d:%0x e:%0x f:%0x g;%0x h:%0x\n", a,b,c,d,e,f,g,g);
  7. 7 return 0;
  8. 8 }
  9. 9 int main(int argc, char **argv)
  10. 10 {
  11. 11 int a = 1, b= 2, c=3, d = 4, e =5, f=6, g= 7, h =8;
  12. 12 test_pass_parm(a,b,c,d,e,f,g,h);
  13. 13 return 0;
  14. 14 }

对以上源代码进行编译生成可执行程序 *** pass_para ***,如下:

[root@localhost test]# gcc -g pass_parm.c -o pass_parm

查看当前使用的objdump的版本号:

  1. [root@localhost test]# objdump -v
  2. GNU objdump version 2.27-27.base.el7
  3. Copyright (C) 2016 Free Software Foundation, Inc.
  4. 这个程序是自由软件;您可以遵循 GNU 通用公共授权版本 3
  5. (您自行选择的) 稍后版本再发布它。
  6. 这个程序不含任何担保。

显示 pass_para 文件中的text段的内容:

  1. [root@localhost test]# objdump --section=.text -s pass_parm
  2. pass_parm 文件格式 elf64-x86-64
  3. Contents of section .text:
  4. 400430 31ed4989 d15e4889 e24883e4 f0505449 1.I..^H..H...PTI
  5. 400440 c7c07006 400048c7 c1000640 0048c7c7 ..p.@.H....@.H..
  6. 400450 7b054000 e8b7ffff fff4660f 1f440000 {.@.......f..D..
  7. 400460 b8371060 0055482d 30106000 4883f80e .7.`.UH-0.`.H...
  8. 400470 4889e577 025dc3b8 00000000 4885c074 H..w.]......H..t
  9. 400480 f45dbf30 106000ff e00f1f80 00000000 .].0.`..........
  10. 400490 b8301060 0055482d 30106000 48c1f803 .0.`.UH-0.`.H...
  11. 4004a0 4889e548 89c248c1 ea3f4801 d048d1f8 H..H..H..?H..H..
  12. 4004b0 75025dc3 ba000000 004885d2 74f45d48 u.]......H..t.]H
  13. 4004c0 89c6bf30 106000ff e20f1f80 00000000 ...0.`..........
  14. 4004d0 803d550b 20000075 11554889 e5e87eff .=U. ..u.UH...~.
  15. 4004e0 ffff5dc6 05420b20 0001f3c3 0f1f4000 ..]..B. ......@.
  16. 4004f0 48833d28 09200000 741eb800 00000048 H.=(. ..t......H
  17. 400500 85c07414 55bf200e 60004889 e5ffd05d ..t.U. .`.H....]
  18. 400510 e97bffff ff0f1f00 e973ffff ff554889 .{.......s...UH.
  19. 400520 e54883ec 30897dfc 8975f889 55f4894d .H..0.}..u..U..M
  20. 400530 f0448945 ec44894d e8448b45 ec8b7df0 .D.E.D.M.D.E..}.
  21. 400540 8b4df48b 55f88b45 fc8b7510 89742410 .M..U..E..u..t$.
  22. 400550 8b751089 7424088b 75e88934 244589c1 .u..t$..u..4$E..
  23. 400560 4189f889 c6bf9006 4000b800 000000e8 A.......@.......
  24. 400570 8cfeffff b8000000 00c9c355 4889e548 ...........UH..H
  25. 400580 83ec4089 7ddc4889 75d0c745 fc010000 ..@.}.H.u..E....
  26. 400590 00c745f8 02000000 c745f403 000000c7 ..E......E......
  27. 4005a0 45f00400 0000c745 ec050000 00c745e8 E......E......E.
  28. 4005b0 06000000 c745e407 000000c7 45e00800 .....E......E...
  29. 4005c0 0000448b 4de8448b 45ec8b4d f08b55f4 ..D.M.D.E..M..U.
  30. 4005d0 8b75f88b 45fc8b7d e0897c24 088b7de4 .u..E..}..|$..}.
  31. 4005e0 893c2489 c7e833ff ffffb800 000000c9 .<$...3.........
  32. 4005f0 c3662e0f 1f840000 0000000f 1f440000 .f...........D..
  33. 400600 41574189 ff415649 89f64155 4989d541 AWA..AVI..AUI..A
  34. 400610 544c8d25 f8072000 55488d2d f8072000 TL.%.. .UH.-.. .
  35. 400620 534c29e5 31db48c1 fd034883 ec08e895 SL).1.H...H.....
  36. 400630 fdffff48 85ed741e 0f1f8400 00000000 ...H..t.........
  37. 400640 4c89ea4c 89f64489 ff41ff14 dc4883c3 L..L..D..A...H..
  38. 400650 014839eb 75ea4883 c4085b5d 415c415d .H9.u.H...[]A\A]
  39. 400660 415e415f c390662e 0f1f8400 00000000 A^A_..f.........
  40. 400670 f3c3 ..

反汇编 pass_para 程序中的text段内容,并尽可能用源代码形式表示:

  1. [root@localhost test]# objdump -j .text -S pass_parm
  2. pass_parm 文件格式 elf64-x86-64
  3. Disassembly of section .text:
  4. 0000000000400430 <_start>:
  5. 400430: 31 ed xor %ebp,%ebp
  6. 400432: 49 89 d1 mov %rdx,%r9
  7. 400435: 5e pop %rsi
  8. 400436: 48 89 e2 mov %rsp,%rdx
  9. 400439: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp
  10. 40043d: 50 push %rax
  11. 40043e: 54 push %rsp
  12. 40043f: 49 c7 c0 70 06 40 00 mov $0x400670,%r8
  13. 400446: 48 c7 c1 00 06 40 00 mov $0x400600,%rcx
  14. 40044d: 48 c7 c7 7b 05 40 00 mov $0x40057b,%rdi
  15. 400454: e8 b7 ff ff ff callq 400410 <__libc_start_main@plt>
  16. 400459: f4 hlt
  17. 40045a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
  18. 0000000000400460 <deregister_tm_clones>:
  19. 400460: b8 37 10 60 00 mov $0x601037,%eax
  20. 400465: 55 push %rbp
  21. 400466: 48 2d 30 10 60 00 sub $0x601030,%rax
  22. 40046c: 48 83 f8 0e cmp $0xe,%rax
  23. 400470: 48 89 e5 mov %rsp,%rbp
  24. 400473: 77 02 ja 400477 <deregister_tm_clones+0x17>
  25. 400475: 5d pop %rbp
  26. 400476: c3 retq
  27. 400477: b8 00 00 00 00 mov $0x0,%eax
  28. 40047c: 48 85 c0 test %rax,%rax
  29. 40047f: 74 f4 je 400475 <deregister_tm_clones+0x15>
  30. 400481: 5d pop %rbp
  31. 400482: bf 30 10 60 00 mov $0x601030,%edi
  32. 400487: ff e0 jmpq *%rax
  33. 400489: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
  34. 0000000000400490 <register_tm_clones>:
  35. 400490: b8 30 10 60 00 mov $0x601030,%eax
  36. 400495: 55 push %rbp
  37. 400496: 48 2d 30 10 60 00 sub $0x601030,%rax
  38. 40049c: 48 c1 f8 03 sar $0x3,%rax
  39. 4004a0: 48 89 e5 mov %rsp,%rbp
  40. 4004a3: 48 89 c2 mov %rax,%rdx
  41. 4004a6: 48 c1 ea 3f shr $0x3f,%rdx
  42. 4004aa: 48 01 d0 add %rdx,%rax
  43. 4004ad: 48 d1 f8 sar %rax
  44. 4004b0: 75 02 jne 4004b4 <register_tm_clones+0x24>
  45. 4004b2: 5d pop %rbp
  46. 4004b3: c3 retq
  47. 4004b4: ba 00 00 00 00 mov $0x0,%edx
  48. 4004b9: 48 85 d2 test %rdx,%rdx
  49. 4004bc: 74 f4 je 4004b2 <register_tm_clones+0x22>
  50. 4004be: 5d pop %rbp
  51. 4004bf: 48 89 c6 mov %rax,%rsi
  52. 4004c2: bf 30 10 60 00 mov $0x601030,%edi
  53. 4004c7: ff e2 jmpq *%rdx
  54. 4004c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
  55. 00000000004004d0 <__do_global_dtors_aux>:
  56. 4004d0: 80 3d 55 0b 20 00 00 cmpb $0x0,0x200b55(%rip) # 60102c <_edata>
  57. 4004d7: 75 11 jne 4004ea <__do_global_dtors_aux+0x1a>
  58. 4004d9: 55 push %rbp
  59. 4004da: 48 89 e5 mov %rsp,%rbp
  60. 4004dd: e8 7e ff ff ff callq 400460 <deregister_tm_clones>
  61. 4004e2: 5d pop %rbp
  62. 4004e3: c6 05 42 0b 20 00 01 movb $0x1,0x200b42(%rip) # 60102c <_edata>
  63. 4004ea: f3 c3 repz retq
  64. 4004ec: 0f 1f 40 00 nopl 0x0(%rax)
  65. 00000000004004f0 <frame_dummy>:
  66. 4004f0: 48 83 3d 28 09 20 00 cmpq $0x0,0x200928(%rip) # 600e20 <__JCR_END__>
  67. 4004f7: 00
  68. 4004f8: 74 1e je 400518 <frame_dummy+0x28>
  69. 4004fa: b8 00 00 00 00 mov $0x0,%eax
  70. 4004ff: 48 85 c0 test %rax,%rax
  71. 400502: 74 14 je 400518 <frame_dummy+0x28>
  72. 400504: 55 push %rbp
  73. 400505: bf 20 0e 60 00 mov $0x600e20,%edi
  74. 40050a: 48 89 e5 mov %rsp,%rbp
  75. 40050d: ff d0 callq *%rax
  76. 40050f: 5d pop %rbp
  77. 400510: e9 7b ff ff ff jmpq 400490 <register_tm_clones>
  78. 400515: 0f 1f 00 nopl (%rax)
  79. 400518: e9 73 ff ff ff jmpq 400490 <register_tm_clones>
  80. 000000000040051d <test_pass_parm>:
  81. #include <stdio.h>
  82. #include <stdlib.h>
  83. int test_pass_parm(int a, int b, int c, int d, int e, int f, int g, int h)
  84. {
  85. 40051d: 55 push %rbp
  86. 40051e: 48 89 e5 mov %rsp,%rbp
  87. 400521: 48 83 ec 30 sub $0x30,%rsp
  88. 400525: 89 7d fc mov %edi,-0x4(%rbp)
  89. 400528: 89 75 f8 mov %esi,-0x8(%rbp)
  90. 40052b: 89 55 f4 mov %edx,-0xc(%rbp)
  91. 40052e: 89 4d f0 mov %ecx,-0x10(%rbp)
  92. 400531: 44 89 45 ec mov %r8d,-0x14(%rbp)
  93. 400535: 44 89 4d e8 mov %r9d,-0x18(%rbp)
  94. printf("a:%0x, b:%0x c:%0x d:%0x e:%0x f:%0x g;%0x h:%0x\n", a,b,c,d,e,f,g,g);
  95. 400539: 44 8b 45 ec mov -0x14(%rbp),%r8d
  96. 40053d: 8b 7d f0 mov -0x10(%rbp),%edi
  97. 400540: 8b 4d f4 mov -0xc(%rbp),%ecx
  98. 400543: 8b 55 f8 mov -0x8(%rbp),%edx
  99. 400546: 8b 45 fc mov -0x4(%rbp),%eax
  100. 400549: 8b 75 10 mov 0x10(%rbp),%esi
  101. 40054c: 89 74 24 10 mov %esi,0x10(%rsp)
  102. 400550: 8b 75 10 mov 0x10(%rbp),%esi
  103. 400553: 89 74 24 08 mov %esi,0x8(%rsp)
  104. 400557: 8b 75 e8 mov -0x18(%rbp),%esi
  105. 40055a: 89 34 24 mov %esi,(%rsp)
  106. 40055d: 45 89 c1 mov %r8d,%r9d
  107. 400560: 41 89 f8 mov %edi,%r8d
  108. 400563: 89 c6 mov %eax,%esi
  109. 400565: bf 90 06 40 00 mov $0x400690,%edi
  110. 40056a: b8 00 00 00 00 mov $0x0,%eax
  111. 40056f: e8 8c fe ff ff callq 400400 <printf@plt>
  112. return 0;
  113. 400574: b8 00 00 00 00 mov $0x0,%eax
  114. }
  115. 400579: c9 leaveq
  116. 40057a: c3 retq
  117. 000000000040057b <main>:
  118. int main(int argc, char **argv)
  119. {
  120. 40057b: 55 push %rbp
  121. 40057c: 48 89 e5 mov %rsp,%rbp
  122. 40057f: 48 83 ec 40 sub $0x40,%rsp
  123. 400583: 89 7d dc mov %edi,-0x24(%rbp)
  124. 400586: 48 89 75 d0 mov %rsi,-0x30(%rbp)
  125. int a = 1, b= 2, c=3, d = 4, e =5, f=6, g= 7, h =8;
  126. 40058a: c7 45 fc 01 00 00 00 movl $0x1,-0x4(%rbp)
  127. 400591: c7 45 f8 02 00 00 00 movl $0x2,-0x8(%rbp)
  128. 400598: c7 45 f4 03 00 00 00 movl $0x3,-0xc(%rbp)
  129. 40059f: c7 45 f0 04 00 00 00 movl $0x4,-0x10(%rbp)
  130. 4005a6: c7 45 ec 05 00 00 00 movl $0x5,-0x14(%rbp)
  131. 4005ad: c7 45 e8 06 00 00 00 movl $0x6,-0x18(%rbp)
  132. 4005b4: c7 45 e4 07 00 00 00 movl $0x7,-0x1c(%rbp)
  133. 4005bb: c7 45 e0 08 00 00 00 movl $0x8,-0x20(%rbp)
  134. test_pass_parm(a,b,c,d,e,f,g,h);
  135. 4005c2: 44 8b 4d e8 mov -0x18(%rbp),%r9d
  136. 4005c6: 44 8b 45 ec mov -0x14(%rbp),%r8d
  137. 4005ca: 8b 4d f0 mov -0x10(%rbp),%ecx
  138. 4005cd: 8b 55 f4 mov -0xc(%rbp),%edx
  139. 4005d0: 8b 75 f8 mov -0x8(%rbp),%esi
  140. 4005d3: 8b 45 fc mov -0x4(%rbp),%eax
  141. 4005d6: 8b 7d e0 mov -0x20(%rbp),%edi
  142. 4005d9: 89 7c 24 08 mov %edi,0x8(%rsp)
  143. 4005dd: 8b 7d e4 mov -0x1c(%rbp),%edi
  144. 4005e0: 89 3c 24 mov %edi,(%rsp)
  145. 4005e3: 89 c7 mov %eax,%edi
  146. 4005e5: e8 33 ff ff ff callq 40051d <test_pass_parm>
  147. return 0;
  148. 4005ea: b8 00 00 00 00 mov $0x0,%eax
  149. }
  150. 4005ef: c9 leaveq
  151. 4005f0: c3 retq
  152. 4005f1: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
  153. 4005f8: 00 00 00
  154. 4005fb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
  155. 0000000000400600 <__libc_csu_init>:
  156. 400600: 41 57 push %r15
  157. 400602: 41 89 ff mov %edi,%r15d
  158. 400605: 41 56 push %r14
  159. 400607: 49 89 f6 mov %rsi,%r14
  160. 40060a: 41 55 push %r13
  161. 40060c: 49 89 d5 mov %rdx,%r13
  162. 40060f: 41 54 push %r12
  163. 400611: 4c 8d 25 f8 07 20 00 lea 0x2007f8(%rip),%r12 # 600e10 <__frame_dummy_init_array_entry>
  164. 400618: 55 push %rbp
  165. 400619: 48 8d 2d f8 07 20 00 lea 0x2007f8(%rip),%rbp # 600e18 <__init_array_end>
  166. 400620: 53 push %rbx
  167. 400621: 4c 29 e5 sub %r12,%rbp
  168. 400624: 31 db xor %ebx,%ebx
  169. 400626: 48 c1 fd 03 sar $0x3,%rbp
  170. 40062a: 48 83 ec 08 sub $0x8,%rsp
  171. 40062e: e8 95 fd ff ff callq 4003c8 <_init>
  172. 400633: 48 85 ed test %rbp,%rbp
  173. 400636: 74 1e je 400656 <__libc_csu_init+0x56>
  174. 400638: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1)
  175. 40063f: 00
  176. 400640: 4c 89 ea mov %r13,%rdx
  177. 400643: 4c 89 f6 mov %r14,%rsi
  178. 400646: 44 89 ff mov %r15d,%edi
  179. 400649: 41 ff 14 dc callq *(%r12,%rbx,8)
  180. 40064d: 48 83 c3 01 add $0x1,%rbx
  181. 400651: 48 39 eb cmp %rbp,%rbx
  182. 400654: 75 ea jne 400640 <__libc_csu_init+0x40>
  183. 400656: 48 83 c4 08 add $0x8,%rsp
  184. 40065a: 5b pop %rbx
  185. 40065b: 5d pop %rbp
  186. 40065c: 41 5c pop %r12
  187. 40065e: 41 5d pop %r13
  188. 400660: 41 5e pop %r14
  189. 400662: 41 5f pop %r15
  190. 400664: c3 retq
  191. 400665: 90 nop
  192. 400666: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
  193. 40066d: 00 00 00
  194. 0000000000400670 <__libc_csu_fini>:
  195. 400670: f3 c3 repz retq

显示文件的符号表入口:

  1. [root@localhost test]# objdump -t pass_parm
  2. pass_parm 文件格式 elf64-x86-64
  3. SYMBOL TABLE:
  4. 0000000000400238 l d .interp 0000000000000000 .interp
  5. 0000000000400254 l d .note.ABI-tag 0000000000000000 .note.ABI-tag
  6. 0000000000400274 l d .note.gnu.build-id 0000000000000000 .note.gnu.build-id
  7. 0000000000400298 l d .gnu.hash 0000000000000000 .gnu.hash
  8. 00000000004002b8 l d .dynsym 0000000000000000 .dynsym
  9. 0000000000400318 l d .dynstr 0000000000000000 .dynstr
  10. 0000000000400358 l d .gnu.version 0000000000000000 .gnu.version
  11. 0000000000400360 l d .gnu.version_r 0000000000000000 .gnu.version_r
  12. 0000000000400380 l d .rela.dyn 0000000000000000 .rela.dyn
  13. 0000000000400398 l d .rela.plt 0000000000000000 .rela.plt
  14. 00000000004003c8 l d .init 0000000000000000 .init
  15. 00000000004003f0 l d .plt 0000000000000000 .plt
  16. 0000000000400420 l d .plt.got 0000000000000000 .plt.got
  17. 0000000000400430 l d .text 0000000000000000 .text
  18. 0000000000400674 l d .fini 0000000000000000 .fini
  19. 0000000000400680 l d .rodata 0000000000000000 .rodata
  20. 00000000004006c4 l d .eh_frame_hdr 0000000000000000 .eh_frame_hdr
  21. 0000000000400700 l d .eh_frame 0000000000000000 .eh_frame
  22. 0000000000600e10 l d .init_array 0000000000000000 .init_array
  23. 0000000000600e18 l d .fini_array 0000000000000000 .fini_array
  24. 0000000000600e20 l d .jcr 0000000000000000 .jcr
  25. 0000000000600e28 l d .dynamic 0000000000000000 .dynamic
  26. 0000000000600ff8 l d .got 0000000000000000 .got
  27. 0000000000601000 l d .got.plt 0000000000000000 .got.plt
  28. 0000000000601028 l d .data 0000000000000000 .data
  29. 000000000060102c l d .bss 0000000000000000 .bss
  30. 0000000000000000 l d .comment 0000000000000000 .comment
  31. 0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges
  32. 0000000000000000 l d .debug_info 0000000000000000 .debug_info
  33. 0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev
  34. 0000000000000000 l d .debug_line 0000000000000000 .debug_line
  35. 0000000000000000 l d .debug_str 0000000000000000 .debug_str
  36. 0000000000000000 l df *ABS* 0000000000000000 crtstuff.c
  37. 0000000000600e20 l O .jcr 0000000000000000 __JCR_LIST__
  38. 0000000000400460 l F .text 0000000000000000 deregister_tm_clones
  39. 0000000000400490 l F .text 0000000000000000 register_tm_clones
  40. 00000000004004d0 l F .text 0000000000000000 __do_global_dtors_aux
  41. 000000000060102c l O .bss 0000000000000001 completed.6355
  42. 0000000000600e18 l O .fini_array 0000000000000000 __do_global_dtors_aux_fini_array_entry
  43. 00000000004004f0 l F .text 0000000000000000 frame_dummy
  44. 0000000000600e10 l O .init_array 0000000000000000 __frame_dummy_init_array_entry
  45. 0000000000000000 l df *ABS* 0000000000000000 pass_parm.c
  46. 0000000000000000 l df *ABS* 0000000000000000 crtstuff.c
  47. 0000000000400810 l O .eh_frame 0000000000000000 __FRAME_END__
  48. 0000000000600e20 l O .jcr 0000000000000000 __JCR_END__
  49. 0000000000000000 l df *ABS* 0000000000000000
  50. 0000000000600e18 l .init_array 0000000000000000 __init_array_end
  51. 0000000000600e28 l O .dynamic 0000000000000000 _DYNAMIC
  52. 0000000000600e10 l .init_array 0000000000000000 __init_array_start
  53. 00000000004006c4 l .eh_frame_hdr 0000000000000000 __GNU_EH_FRAME_HDR
  54. 0000000000601000 l O .got.plt 0000000000000000 _GLOBAL_OFFSET_TABLE_
  55. 0000000000400670 g F .text 0000000000000002 __libc_csu_fini
  56. 0000000000601028 w .data 0000000000000000 data_start
  57. 000000000060102c g .data 0000000000000000 _edata
  58. 0000000000400674 g F .fini 0000000000000000 _fini
  59. 0000000000000000 F *UND* 0000000000000000 printf@@GLIBC_2.2.5
  60. 0000000000000000 F *UND* 0000000000000000 __libc_start_main@@GLIBC_2.2.5
  61. 0000000000601028 g .data 0000000000000000 __data_start
  62. 0000000000000000 w *UND* 0000000000000000 __gmon_start__
  63. 0000000000400688 g O .rodata 0000000000000000 .hidden __dso_handle
  64. 0000000000400680 g O .rodata 0000000000000004 _IO_stdin_used
  65. 0000000000400600 g F .text 0000000000000065 __libc_csu_init
  66. 0000000000601030 g .bss 0000000000000000 _end
  67. 0000000000400430 g F .text 0000000000000000 _start
  68. 000000000060102c g .bss 0000000000000000 __bss_start
  69. 000000000040057b g F .text 0000000000000076 main
  70. 000000000040051d g F .text 000000000000005e test_pass_parm
  71. 0000000000601030 g O .data 0000000000000000 .hidden __TMC_END__
  72. 00000000004003c8 g F .init 0000000000000000 _init

显示目标文件各个段的头部摘要信息:

  1. [root@localhost test]# objdump -h pass_parm
  2. pass_parm 文件格式 elf64-x86-64
  3. 节:
  4. Idx Name Size VMA LMA File off Algn
  5. 0 .interp 0000001c 0000000000400238 0000000000400238 00000238 2**0
  6. CONTENTS, ALLOC, LOAD, READONLY, DATA
  7. 1 .note.ABI-tag 00000020 0000000000400254 0000000000400254 00000254 2**2
  8. CONTENTS, ALLOC, LOAD, READONLY, DATA
  9. 2 .note.gnu.build-id 00000024 0000000000400274 0000000000400274 00000274 2**2
  10. CONTENTS, ALLOC, LOAD, READONLY, DATA
  11. 3 .gnu.hash 0000001c 0000000000400298 0000000000400298 00000298 2**3
  12. CONTENTS, ALLOC, LOAD, READONLY, DATA
  13. 4 .dynsym 00000060 00000000004002b8 00000000004002b8 000002b8 2**3
  14. CONTENTS, ALLOC, LOAD, READONLY, DATA
  15. 5 .dynstr 0000003f 0000000000400318 0000000000400318 00000318 2**0
  16. CONTENTS, ALLOC, LOAD, READONLY, DATA
  17. 6 .gnu.version 00000008 0000000000400358 0000000000400358 00000358 2**1
  18. CONTENTS, ALLOC, LOAD, READONLY, DATA
  19. 7 .gnu.version_r 00000020 0000000000400360 0000000000400360 00000360 2**3
  20. CONTENTS, ALLOC, LOAD, READONLY, DATA
  21. 8 .rela.dyn 00000018 0000000000400380 0000000000400380 00000380 2**3
  22. CONTENTS, ALLOC, LOAD, READONLY, DATA
  23. 9 .rela.plt 00000030 0000000000400398 0000000000400398 00000398 2**3
  24. CONTENTS, ALLOC, LOAD, READONLY, DATA
  25. 10 .init 0000001a 00000000004003c8 00000000004003c8 000003c8 2**2
  26. CONTENTS, ALLOC, LOAD, READONLY, CODE
  27. 11 .plt 00000030 00000000004003f0 00000000004003f0 000003f0 2**4
  28. CONTENTS, ALLOC, LOAD, READONLY, CODE
  29. 12 .plt.got 00000008 0000000000400420 0000000000400420 00000420 2**3
  30. CONTENTS, ALLOC, LOAD, READONLY, CODE
  31. 13 .text 00000242 0000000000400430 0000000000400430 00000430 2**4
  32. CONTENTS, ALLOC, LOAD, READONLY, CODE
  33. 14 .fini 00000009 0000000000400674 0000000000400674 00000674 2**2
  34. CONTENTS, ALLOC, LOAD, READONLY, CODE
  35. 15 .rodata 00000044 0000000000400680 0000000000400680 00000680 2**3
  36. CONTENTS, ALLOC, LOAD, READONLY, DATA
  37. 16 .eh_frame_hdr 0000003c 00000000004006c4 00000000004006c4 000006c4 2**2
  38. CONTENTS, ALLOC, LOAD, READONLY, DATA
  39. 17 .eh_frame 00000114 0000000000400700 0000000000400700 00000700 2**3
  40. CONTENTS, ALLOC, LOAD, READONLY, DATA
  41. 18 .init_array 00000008 0000000000600e10 0000000000600e10 00000e10 2**3
  42. CONTENTS, ALLOC, LOAD, DATA
  43. 19 .fini_array 00000008 0000000000600e18 0000000000600e18 00000e18 2**3
  44. CONTENTS, ALLOC, LOAD, DATA
  45. 20 .jcr 00000008 0000000000600e20 0000000000600e20 00000e20 2**3
  46. CONTENTS, ALLOC, LOAD, DATA
  47. 21 .dynamic 000001d0 0000000000600e28 0000000000600e28 00000e28 2**3
  48. CONTENTS, ALLOC, LOAD, DATA
  49. 22 .got 00000008 0000000000600ff8 0000000000600ff8 00000ff8 2**3
  50. CONTENTS, ALLOC, LOAD, DATA
  51. 23 .got.plt 00000028 0000000000601000 0000000000601000 00001000 2**3
  52. CONTENTS, ALLOC, LOAD, DATA
  53. 24 .data 00000004 0000000000601028 0000000000601028 00001028 2**0
  54. CONTENTS, ALLOC, LOAD, DATA
  55. 25 .bss 00000004 000000000060102c 000000000060102c 0000102c 2**0
  56. ALLOC
  57. 26 .comment 0000002d 0000000000000000 0000000000000000 0000102c 2**0
  58. CONTENTS, READONLY
  59. 27 .debug_aranges 00000030 0000000000000000 0000000000000000 00001059 2**0
  60. CONTENTS, READONLY, DEBUGGING
  61. 28 .debug_info 000001ae 0000000000000000 0000000000000000 00001089 2**0
  62. CONTENTS, READONLY, DEBUGGING
  63. 29 .debug_abbrev 0000007c 0000000000000000 0000000000000000 00001237 2**0
  64. CONTENTS, READONLY, DEBUGGING
  65. 30 .debug_line 0000004c 0000000000000000 0000000000000000 000012b3 2**0
  66. CONTENTS, READONLY, DEBUGGING
  67. 31 .debug_str 000000d6 0000000000000000 0000000000000000 000012ff 2**0
  68. CONTENTS, READONLY, DEBUGGING

linux 命令之 objdump 简单使用的更多相关文章

  1. 重学Python - Day 06 - python基础 -> linux命令行学习 -- 简单基础命令学习

    学习资源 虚拟机工具:VMWare 12 linux :Ubuntu 14 或者CentOS 6 PS:ubuntu用远程连接工具的设置方法 step 1: 输入sudo apt-get instal ...

  2. 小白的linux笔记7:批量运行复杂的linux命令组合——BASH简单使用法

    linux的BASH就相当于windows下的BAT文件,可以批处理命令.比如写好一个python脚本后,需要在运行时候加参数,但这个参数又不想每次输入,就可以用BASH的方式写好整条命令,然后直接运 ...

  3. linux命令之strace简单使用

    strace是什么 strace是一个可用于诊断.调试和教学的Linux用户空间跟踪器.我们用它来监控用户空间进程和内核的交互,比如系统调用.信号传递.进程状态变更等. 使用方式 strace 使用帮 ...

  4. linux命令 screen的简单使用

    在远程命令行下某些长时间的操作,一旦网络出现故障,后果可能会很严重,在这种情况下可以使用screen命令来解决.screen可以创建一个session,在不小心断开以后还可以继续恢复session保存 ...

  5. Linux命令之---which简单介绍

    命令简介 which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果.也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的 ...

  6. Linux命令行及Vim简单学习记录

    Linux命令行 1.打开命令行 Ctrl+Alt+t 2.目录 显示当前目录的文件列表 ls 跳转至当前目录中的x文件夹 cd x 返回根目录 cd 3.文件 新建文件1.cpp touch ./1 ...

  7. linux中几个简单的系统命令(还有一些其他杂项命令)

    linux中几个简单的系统命令,其他命令接触到了在补充. 1.ps命令:(process status),提供对进程的一次性查看.以及执行ps命令时那个时刻的进程信息 格式:ps[参数] -e 此参数 ...

  8. Linux02 /Linux命令简单使用

    Linux02 /Linux命令简单使用 目录 Linux02 /Linux命令简单使用 1. 远程连接Linux 2. 目录相关操作 3. 简单命令 1. 远程连接Linux 远程连接工具 Xshe ...

  9. Linux命令系列之ls——原来最简单的ls这么复杂

    Linux命令系列之ls--原来最简单的ls这么复杂 ls命令应该是我们最常用的命令之一了,但是我们可能容易忽略那些看起来最简单的东西. 简介 ls命令的使用格式如下 ls [选项] [具体的文件] ...

随机推荐

  1. Linux中用systemctl命令管理服务

    systemctl start foo.service 启动服务systemctl restart foo.service 重启服务systemctl stop foo.service 停止服务sys ...

  2. 十三、$.ajax、模态/非模态框、window.open()、href属性、submit()等提交请求优劣及问题解决方法

    1. $.ajax提交请求进行数据更新,并通过回调进行有效提示 function updateAudit(dispacher, control) { var currentpage = documen ...

  3. emWin 模拟器环境搭建

    转载http://www.nxpic.org/module/forum/thread-609329-1-1.html 这个模拟器工程在Segger官网下载:https://www.segger.com ...

  4. 《跟老齐学Python:从入门到精通》齐伟(编著)epub+mobi+azw3

    内容简介 <跟老齐学Python:从入门到精通>是面向编程零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步应用.以比较轻快的风格,向零基础的学习者介绍一门时下比较流 ...

  5. 39数组中只出现一次的数字+判断的时候一定加上括号,&的优先级低于!=

    题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.     思路:记住位运算的基本操作,与或非,异或,异或是两个数相同则为0,不同为1,理解为加法运 ...

  6. php 实现店铺装修4

    /** * @title 发布装修的店铺 * @example FlagShipShopDecorate.fabu? 调试参数:{"username":"17721355 ...

  7. python内置函数三

    ord()  函数 和 chr()  相反   chr() 是将数字转换成assci码     ord() 是将字符串转换成assci码 显示 pow() 函数  pow(x,y,z)  表示x**y ...

  8. git客户端出现libpng warning: iCCP: known incorrect sRGB profile

    在关闭gitk窗口的时候,会出现一系列的  libpng warning: iCCP: known incorrect sRGB profilelibpng warning: iCCP: known  ...

  9. 白手起家Django项目发布上篇_linux centos 环境部署

    在项目发布之前,首先准备好我们编写好的Django项目,这个我们在之后博客有写,大家可以去看, 首先,先开始安装linux服务器,作为Django项目的发布服务器.以Vmware虚拟机为例子,大家也可 ...

  10. PLCsim 软件模拟OB86故障

    用上一节 组态DP主站与标准从站的方法 组态了网络 实现了 将profibus –dp 标准从站 ET200M 下 输入地址为IW2 接口的状态 读取到 主机 DP-315-2DP 的QW0 变量以来 ...