欧美激情aaaa_伊人久久久大香线蕉综合直播_日韩在线卡一卡二_亚洲成人人体

objdump

顯示二進制文件信息

補充說明

objdump命令 是用查看目標文件或者可執行的目標文件的構成的gcc工具。

選項

-a --archive-headers 
# 顯示檔案庫的成員信息,類似ls -l將lib*.a的信息列出。 

-b bfdname --target=bfdname 
# 指定目標碼格式。這不是必須的,objdump能自動識別許多格式,比如: 

objdump -b oasys -m vax -h fu.o 
# 顯示fu.o的頭部摘要信息,明確指出該文件是Vax系統下用Oasys編譯器生成的目標文件。objdump -i將給出這里可以指定的目標碼格式列表。 

-C --demangle 
# 將底層的符號名解碼成用戶級名字,除了去掉所開頭的下劃線之外,還使得C++函數名以可理解的方式顯示出來。 
--debugging 
-g 
# 顯示調試信息。企圖解析保存在文件中的調試信息并以C語言的語法顯示出來。僅僅支持某些類型的調試信息。有些其他的格式被readelf -w支持。 

-e --debugging-tags 
# 類似-g選項,但是生成的信息是和ctags工具相兼容的格式。 
--disassemble 
-d 
# 從objfile中反匯編那些特定指令機器碼的section。 

-D --disassemble-all 
# 與 -d 類似,但反匯編所有section. 

--prefix-addresses 
# 反匯編的時候,顯示每一行的完整地址。這是一種比較老的反匯編格式。 

-EB 
-EL 
--endian={big|little} 
# 指定目標文件的小端。這個項將影響反匯編出來的指令。在反匯編的文件沒描述小端信息的時候用。例如S-records. 

-f 
--file-headers 
顯示objfile中每個文件的整體頭部摘要信息。 

-h 
--section-headers 
--headers 
顯示目標文件各個section的頭部摘要信息。 

-H 
--help 
簡短的幫助信息。 

-i 
--info 
顯示對于 -b 或者 -m 選項可用的架構和目標格式列表。 

-j name
--section=name 
僅僅顯示指定名稱為name的section的信息 

-l
--line-numbers 
用文件名和行號標注相應的目標代碼,僅僅和-d、-D或者-r一起使用使用-ld和使用-d的區別不是很大,在源碼級調試的時候有用,要求編譯時使用了-g之類的調試編譯選項。 

-m machine 
--architecture=machine 
指定反匯編目標文件時使用的架構,當待反匯編文件本身沒描述架構信息的時候(比如S-records),這個選項很有用??梢杂?i選項列出這里能夠指定的架構. 

--reloc 
-r 
顯示文件的重定位入口。如果和-d或者-D一起使用,重定位部分以反匯編后的格式顯示出來。 

--dynamic-reloc 
-R 
顯示文件的動態重定位入口,僅僅對于動態目標文件意義,比如某些共享庫。 

-s 
--full-contents 
顯示指定section的完整內容。默認所有的非空section都會被顯示。 

-S 
--source 
盡可能反匯編出源代碼,尤其當編譯的時候指定了-g這種調試參數時,效果比較明顯。隱含了-d參數。 

--show-raw-insn 
反匯編的時候,顯示每條匯編指令對應的機器碼,如不指定--prefix-addresses,這將是缺省選項。 

--no-show-raw-insn 
反匯編時,不顯示匯編指令的機器碼,如不指定--prefix-addresses,這將是缺省選項。 

--start-address=address 
從指定地址開始顯示數據,該選項影響-d、-r和-s選項的輸出。 

--stop-address=address 
顯示數據直到指定地址為止,該項影響-d、-r和-s選項的輸出。 

-t 
--syms 
顯示文件的符號表入口。類似于nm -s提供的信息 

-T 
--dynamic-syms 
顯示文件的動態符號表入口,僅僅對動態目標文件意義,比如某些共享庫。它顯示的信息類似于 nm -D|--dynamic 顯示的信息。 

-V 
--version 
版本信息 

--all-headers 
-x 
顯示所可用的頭信息,包括符號表、重定位入口。-x 等價于-a -f -h -r -t 同時指定。 

-z 
--disassemble-zeroes 
一般反匯編輸出將省略大塊的零,該選項使得這些零塊也被反匯編。 

@file 可以將選項集中到一個文件中,然后使用這個@file選項載入。

實例

首先,在給出后面大部分測試所基于的源代碼以及編譯指令。 源代碼如下:?

root@localhost [test]# nl mytest.cpp 
void printTest() {
    char a;
    a = 'a';
}

void printTest2() {
int a = 2;
a+=2;
} 

對以上源代碼進行編譯,如下:?

[root@localhost test]# g++ -c -g mytest.cpp 

這里,生成的文件是mytest.o,為了方便測試包含了調試的信息,對可執行文件的測試,顯示的結果類似。?

**查看當前使用的objdump的版本號:?**

[root@localhost test]# objdump -V 
GNU objdump 2.17.50.0.6-14.el5 20061020 
Copyright 2005 free Software Foundation, Inc. 
This program is free software; you may redistribute it under the terms of 
the GNU General Public License.  This program has absolutely no warranty. 

**查看檔案庫文件中的信息:?**

[root@localhost test]# objdump -a libmy2.a 
In archive libmy2.a: 
myfile.o:     file format elf32-i386 
rwxrwxrwx 0/0   2724 Nov 16 16:06 2009 myfile.o 
mytest.o:     file format elf32-i386 
rw-r--r-- 0/0    727 Jul 13 15:32 2011 mytest.o 

*這里,libmy2.a是一個使用ar命令將多個.o目標文件打包而生成的靜態庫。命令的輸出類似ar -tv,相比較ar -tv輸出如下:?**

[root@localhost test]# ar -tv libmy2.a 
rwxrwxrwx 0/0   2724 Nov 16 16:06 2009 myfile.o 
rw-r--r-- 0/0    727 Jul 13 15:32 2011 mytest.o 

顯示可用的架構和目標結構列表:?

[root@localhost test]# objdump -i 
BFD header file version 2.17.50.0.6-14.el5 20061020 
elf32-i386 
(header little endian, data little endian) 
  i386 
a.out-i386-linux 
(header little endian, data little endian) 
  i386 
efi-app-ia32 
(header little endian, data little endian) 
  i386 
elf64-x86-64 
(header little endian, data little endian) 
  i386 
elf64-little 
(header little endian, data little endian) 
  i386 
elf64-big 
(header big endian, data big endian) 
  i386 
elf32-little 
(header little endian, data little endian) 
  i386 
elf32-big 
(header big endian, data big endian) 
  i386 
srec 
(header endianness unknown, data endianness unknown) 
  i386 
symbolsrec 
(header endianness unknown, data endianness unknown) 
  i386 
tekhex 
(header endianness unknown, data endianness unknown) 
  i386 
binary 
(header endianness unknown, data endianness unknown) 
  i386 
ihex 
(header endianness unknown, data endianness unknown) 
  i386 
trad-core 
(header endianness unknown, data endianness unknown) 

              elf32-i386 a.out-i386-linux efi-app-ia32 elf64-x86-64 
          i386 elf32-i386 a.out-i386-linux efi-app-ia32 elf64-x86-64 

              elf64-little elf64-big elf32-little elf32-big srec symbolsrec 
          i386 elf64-little elf64-big elf32-little elf32-big srec symbolsrec 

              tekhex binary ihex trad-core 
          i386 tekhex binary ihex --------- 

這里,顯示的信息是相對于 -b 或者 -m 選項可用的架構和目標格式列表。?

**顯示mytest.o文件中的text段的內容:?**

[root@localhost test]# objdump --section=.text -s mytest.o 
mytest.o:     file format elf32-i386 
Contents of section .text: 
0000 5589e583 ec10c645 ff61c9c3 5589e583  U......E.a..U... 
0010 ec10c745 fc020000 008345fc 02c9c3    ...E......E.... 

這里注意,不能單獨使用-j或者--section,例如objdump --section=.text mytest.o是不會運行成功的。?

**反匯編mytest.o中的text段內容,并盡可能用源代碼形式表示:?**

[root@localhost test]# objdump -j .text -S mytest.o 
mytest.o:     file format elf32-i386 
Disassembly of section .text: 
00000000 <_Z9printTestv>: 
void printTest() 
   0:   55                      push   %ebp 
   1:   89 e5                   mov    %esp,%ebp 
   3:   83 ec 10                sub    $0x10,%esp 
{ 
        char a; 
        a = 'a'; 
   6:   c6 45 ff 61             movb   $0x61,0xffffffff(%ebp) 
} 
   a:   c9                      leave  
   b:   c3                      ret    

000000c <_Z10printTest2v>: 
void printTest2() 
   c:   55                      push   %ebp 
   d:   89 e5                   mov    %esp,%ebp 
   f:   83 ec 10                sub    $0x10,%esp 
{ 
        int a = 2; 
  12:   c7 45 fc 02 00 00 00    movl   $0x2,0xfffffffc(%ebp) 
        a+=2; 
  19:   83 45 fc 02             addl   $0x2,0xfffffffc(%ebp) 
} 
  1d:   c9                      leave  
  1e:   c3                      ret    

這里注意,不能單獨使用-j或者--section,例如objdump -j .text mytest.o是不會運行成功的。另外-S命令對于包含調試信息的目標文件,顯示的效果比較好,如果編譯時沒有指定g++的-g選項,那么目標文件就不包含調試信息,那么顯示效果就差多了。?

**反匯編出mytest.o的源代碼:?**

[root@localhost test]# objdump -S mytest.o 
mytest.o:     file format elf32-i386 

Disassembly of section .text: 

00000000 <_Z9printTestv>: 
void printTest() 
   0:   55                      push   %ebp 
   1:   89 e5                   mov    %esp,%ebp 
   3:   83 ec 10                sub    $0x10,%esp 
{ 
        char a; 
        a = 'a'; 
   6:   c6 45 ff 61             movb   $0x61,0xffffffff(%ebp) 
} 
   a:   c9                      leave  
   b:   c3                      ret    

0000000c <_Z10printTest2v>: 
void printTest2() 
   c:   55                      push   %ebp 
   d:   89 e5                   mov    %esp,%ebp 
   f:   83 ec 10                sub    $0x10,%esp 
{ 
       int a = 2; 
  12:   c7 45 fc 02 00 00 00    movl   $0x2,0xfffffffc(%ebp) 
        a+=2; 
  19:   83 45 fc 02             addl   $0x2,0xfffffffc(%ebp) 
} 
  1d:   c9                      leave  
  1e:   c3                      ret    

這里,尤其當編譯的時候指定了-g這種調試參數時,反匯編的效果比較明顯。隱含了-d參數。?

**顯示文件的符號表入口:?**

[root@localhost test]# objdump -t mytest.o 
mytest.o:     file format elf32-i386 

SYMBOL TABLE: 
00000000 l    df *ABS*  00000000 mytest.cpp 
00000000 l    d  .text  00000000 .text 
00000000 l    d  .data  00000000 .data 
00000000 l    d  .bss   00000000 .bss 
00000000 l    d  .debug_abbrev  00000000 .debug_abbrev 
00000000 l    d  .debug_info    00000000 .debug_info 
00000000 l    d  .debug_line    00000000 .debug_line 
00000000 l    d  .debug_frame   00000000 .debug_frame 
00000000 l    d  .debug_loc     00000000 .debug_loc 
00000000 l    d  .debug_pubnames        00000000 .debug_pubnames 
00000000 l    d  .debug_aranges 00000000 .debug_aranges 
00000000 l    d  .note.GNU-stack        00000000 .note.GNU-stack 
00000000 l    d  .comment       00000000 .comment 
00000000 g     F .text  0000000c _Z9printTestv 
00000000         *UND*  00000000 __gxx_personality_v0 
0000000c g     F .text  00000013 _Z10printTest2v 

這里,輸出的信息類似nm -s命令的輸出,相比較之下,nm命令的輸出如下:?

[root@localhost test]# nm -s mytest.o 
0000000c T _Z10printTest2v 
00000000 T _Z9printTestv 
         U __gxx_personality_v0 

**顯示文件的符號表入口,將底層符號解碼并表示成用戶級別:?**

[root@localhost test]# objdump -t -C mytest.o 
mytest.o:     file format elf32-i386 
SYMBOL TABLE: 
00000000 l    df *ABS*  00000000 mytest.cpp 
00000000 l    d  .text  00000000 .text 
00000000 l    d  .data  00000000 .data 
00000000 l    d  .bss   00000000 .bss 
00000000 l    d  .debug_abbrev  00000000 .debug_abbrev 
00000000 l    d  .debug_info    00000000 .debug_info 
00000000 l    d  .debug_line    00000000 .debug_line 
00000000 l    d  .debug_frame   00000000 .debug_frame 
00000000 l    d  .debug_loc     00000000 .debug_loc 
00000000 l    d  .debug_pubnames        00000000 .debug_pubnames 
00000000 l    d  .debug_aranges 00000000 .debug_aranges 
00000000 l    d  .note.GNU-stack        00000000 .note.GNU-stack 
00000000 l    d  .comment       00000000 .comment 
00000000 g     F .text  0000000c printTest() 
00000000         *UND*  00000000 __gxx_personality_v0 
0000000c g     F .text  00000013 printTest2() 

這里,和沒-C相比,printTest2函數可讀性增加了。?

**反匯編目標文件的特定機器碼段:?**

[root@localhost test]# objdump -d mytest.o 
mytest.o:     file format elf32-i386 
Disassembly of section .text: 

00000000 <_Z9printTestv>: 
   0:   55                      push   %ebp 
   1:   89 e5                   mov    %esp,%ebp 
   3:   83 ec 10                sub    $0x10,%esp 
   6:   c6 45 ff 61             movb   $0x61,0xffffffff(%ebp) 
   a:   c9                      leave  
  b:   c3                      ret    

0000000c <_Z10printTest2v>: 
   c:   55                      push   %ebp 
   d:   89 e5                   mov    %esp,%ebp 
   f:   83 ec 10                sub    $0x10,%esp 
  12:   c7 45 fc 02 00 00 00    movl   $0x2,0xfffffffc(%ebp) 
  19:   83 45 fc 02             addl   $0x2,0xfffffffc(%ebp) 
  1d:   c9                      leave  
  1e:   c3                      ret    

這里,對text段的內容進行了反匯編。?

**反匯編特定段,并將匯編代碼對應的文件名稱和行號對應上:?**

[root@localhost test]# objdump -d -l mytest.o
mytest.o:     file format elf32-i386 
Disassembly of section .text: 

00000000 <_Z9printTestv>: 
_Z9printTestv(): 
/root/test/04_libraryTest/mytest.cpp:1 
   0:   55                      push   %ebp 
   1:   89 e5                   mov    %esp,%ebp 
   3:   83 ec 10                sub    $0x10,%esp 
/root/test/04_libraryTest/mytest.cpp:4 
   6:   c6 45 ff 61             movb   $0x61,0xffffffff(%ebp) 
/root/test/04_libraryTest/mytest.cpp:5 
   a:   c9                      leave  
   b:   c3                      ret    

0000000c <_Z10printTest2v>: 
_Z10printTest2v(): 
/root/test/04_libraryTest/mytest.cpp:6 
   c:   55                      push   %ebp 
   d:   89 e5                   mov    %esp,%ebp 
   f:   83 ec 10                sub    $0x10,%esp 
/root/test/04_libraryTest/mytest.cpp:8 
  12:   c7 45 fc 02 00 00 00    movl   $0x2,0xfffffffc(%ebp) 
/root/test/04_libraryTest/mytest.cpp:9 
  19:   83 45 fc 02             addl   $0x2,0xfffffffc(%ebp) 
/root/test/04_libraryTest/mytest.cpp:10 
  1d:   c9                      leave  
  1e:   c3                      ret    

這里,項"-d"從objfile中反匯編那些特定指令機器碼的section,而使用"-l"指定用文件名和行號標注相應的目標代碼,僅僅和-d、-D或者-r一起使用,使用-ld和使用-d的區別不是很大,在源碼級調試的時候有用,要求編譯時使用了-g之類的調試編譯選項。?

**顯示目標文件各個段的頭部摘要信息:?**

[root@localhost test]# objdump -h mytest.o 
mytest.o:     file format elf32-i386 

Sections: 
Idx Name          Size      VMA       LMA       File off  Algn 
  0 .text         0000001f  00000000  00000000  00000034  2**2 
                  CONTENTS, ALLOC, LOAD, readonly, CODE 
  1 .data         00000000  00000000  00000000  00000054  2**2 
                  CONTENTS, ALLOC, LOAD, DATA 
  2 .bss          00000000  00000000  00000000  00000054  2**2 
                  ALLOC 
  3 .debug_abbrev 00000046  00000000  00000000  00000054  2**0 
                  CONTENTS, READONLY, DEBUGGING 
  4 .debug_info   000000ed  00000000  00000000  0000009a  2**0 
                  CONTENTS, RELOC, READONLY, DEBUGGING 
  5 .debug_line   0000003e  00000000  00000000  00000187  2**0 
                  CONTENTS, RELOC, READONLY, DEBUGGING 
  6 .debug_frame  00000044  00000000  00000000  000001c8  2**2 
                  CONTENTS, RELOC, READONLY, DEBUGGING 
  7 .debug_loc    00000058  00000000  00000000  0000020c  2**0 
                  CONTENTS, READONLY, DEBUGGING 
  8 .debug_pubnames 0000002f  00000000  00000000  00000264  2**0 
                  CONTENTS, RELOC, READONLY, DEBUGGING 
  9 .debug_aranges 00000020  00000000  00000000  00000293  2**0 
                  CONTENTS, RELOC, READONLY, DEBUGGING 
10 .comment      0000002e  00000000  00000000  000002b3  2**0 
                  CONTENTS, READONLY 
11 .note.GNU-stack 00000000  00000000  00000000  000002e1  2**0 
                  CONTENTS, READONLY 

這里,更多的內容參見man objdump中的這個選項。

欧美激情aaaa_伊人久久久大香线蕉综合直播_日韩在线卡一卡二_亚洲成人人体
欧美精品一级二级| 天天综合网天天综合色| 亚洲国产wwwccc36天堂| 国内精品伊人久久久久av一坑| www.亚洲精品| 欧美精品一区二区三区蜜臀| 亚洲一区在线视频| 不卡一区二区三区四区| 久久综合色播五月| 水蜜桃久久夜色精品一区的特点| 成人一区在线观看| 精品国产三级a在线观看| 午夜精品久久久久久不卡8050| 成人手机电影网| 26uuu亚洲| 久久国产精品72免费观看| 欧美精品第一页| 天堂精品中文字幕在线| 色婷婷精品久久二区二区蜜臂av| 国产亚洲va综合人人澡精品| 国产一区二区中文字幕| 欧美成人精精品一区二区频| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美性做爰猛烈叫床潮| 国产精品免费视频观看| 丁香婷婷综合激情五月色| 26uuu亚洲综合色欧美| 狠狠网亚洲精品| 日韩精品中文字幕一区二区三区 | 欧美在线免费视屏| 国产精品国产馆在线真实露脸 | 欧美日韩高清一区二区| 一级特黄大欧美久久久| 在线观看日韩电影| 一区二区高清视频在线观看| 91久久一区二区| 亚洲一区视频在线| 欧美久久久影院| 蜜臀av性久久久久av蜜臀妖精| 欧美一区二区久久久| 麻豆精品视频在线观看视频| 欧美www视频| 国产在线视视频有精品| 亚洲国产精品成人综合| 成人网在线播放| 亚洲精品亚洲人成人网在线播放| 91国产免费观看| 日韩av电影免费观看高清完整版在线观看 | 亚洲二区在线视频| 欧美日韩精品欧美日韩精品| 免费成人美女在线观看| 久久久久久电影| 成人国产电影网| 亚洲综合自拍偷拍| 最好看的中文字幕久久| 一本大道久久a久久精二百| 亚洲一区在线播放| 26uuu成人网一区二区三区| 成人亚洲一区二区一| 亚洲国产综合色| 精品国产一区二区三区久久久蜜月 | 337p粉嫩大胆噜噜噜噜噜91av| 九九在线精品视频| 国产精品成人免费在线| 欧美日韩精品电影| 国产传媒一区在线| 亚洲一区二区三区自拍| 欧美精品一区二区三区蜜臀| 91九色02白丝porn| 国产综合一区二区| 亚洲一区二区三区美女| 久久一区二区视频| 欧美视频中文一区二区三区在线观看| 久久99国内精品| 亚洲图片欧美激情| 欧美成人官网二区| 一本一道综合狠狠老| 久久激情综合网| 亚洲一二三区在线观看| 国产网站一区二区三区| 欧美剧在线免费观看网站| 国产精品中文有码| 日韩成人av影视| 亚洲欧美日韩一区| 国产色91在线| 555夜色666亚洲国产免| 91丝袜国产在线播放| 黄网站免费久久| 日本特黄久久久高潮| 一区二区中文字幕在线| 亚洲精品一线二线三线无人区| 色视频成人在线观看免| 国产99一区视频免费| 久久精品国产澳门| 性欧美疯狂xxxxbbbb| 亚洲免费在线看| 国产精品久久久久aaaa樱花| 国产日韩欧美一区二区三区乱码 | 日本伊人精品一区二区三区观看方式| 国产免费观看久久| 久久综合国产精品| 日韩精品一区二区三区在线播放| 欧美人与z0zoxxxx视频| 欧美在线视频你懂得| 在线观看亚洲精品| 91色乱码一区二区三区| k8久久久一区二区三区| 风流少妇一区二区| 成人动漫一区二区在线| 成人av电影免费观看| 成人自拍视频在线观看| 国产v综合v亚洲欧| 国产91精品一区二区麻豆亚洲| 国产精品一区免费在线观看| 国产真实乱对白精彩久久| 狠狠色丁香久久婷婷综| 国产麻豆视频一区二区| 国产精品综合一区二区三区| 国产精品资源在线观看| 成人精品免费视频| 一本久久a久久精品亚洲| 99精品欧美一区二区三区小说| 成人精品免费视频| 91黄视频在线| 欧美日韩国产小视频| 日韩一区二区在线看片| 精品国产免费视频| 国产精品国产a| 亚洲一区在线视频| 男女视频一区二区| 国产精品自拍在线| 91热门视频在线观看| 欧美三级日韩三级国产三级| 欧美精品一级二级三级| 26uuu久久综合| 最新国产の精品合集bt伙计| 亚洲a一区二区| 国产高清不卡一区二区| 99久精品国产| 欧美另类变人与禽xxxxx| 久久久99精品免费观看不卡| 国产精品麻豆一区二区| 亚洲电影你懂得| 韩国欧美国产一区| 色综合天天综合网天天看片 | 成人app软件下载大全免费| 91官网在线免费观看| 欧美精品自拍偷拍| 国产欧美日韩另类一区| 亚洲一卡二卡三卡四卡| 国产尤物一区二区在线| jizz一区二区| 日韩欧美成人午夜| 亚洲男帅同性gay1069| 美女视频黄 久久| av亚洲精华国产精华| 欧美一区二区久久| 亚洲精品日韩一| 国产在线精品一区二区三区不卡| 91精品福利在线| 国产欧美日韩卡一| 蜜桃在线一区二区三区| 色综合视频一区二区三区高清| 精品少妇一区二区三区在线视频| 中文字幕av一区二区三区高| 日韩经典中文字幕一区| 99久久免费精品高清特色大片| 日韩女优av电影| 亚洲国产综合色| 99久久精品99国产精品| 久久久久久一级片| 日韩高清在线一区| 欧美性做爰猛烈叫床潮| 国产精品第五页| 狠狠狠色丁香婷婷综合久久五月| 欧美日韩亚洲不卡| 亚洲日本丝袜连裤袜办公室| 国产精品77777竹菊影视小说| 3d成人动漫网站| 亚洲永久精品大片| 成人精品视频一区二区三区| 久久综合网色—综合色88| 日本亚洲一区二区| 欧美肥妇bbw| 亚洲午夜精品网| 在线观看日韩高清av| 亚洲天堂网中文字| 成人免费视频国产在线观看| 精品粉嫩aⅴ一区二区三区四区| 天天免费综合色| 欧美视频三区在线播放| 一区二区三区精品久久久| a4yy欧美一区二区三区| 日本一区二区视频在线| 国产成人av自拍| 国产精品热久久久久夜色精品三区| 国产精品一区二区视频| 久久久九九九九| 成人午夜伦理影院| 中文字幕字幕中文在线中不卡视频|