日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

每天一个linux命令(70):objdump 命令

發布時間:2024/1/18 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每天一个linux命令(70):objdump 命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 objdump反匯編示例

源文件main.c:

/* main.c */ #include <stdio.h>void swap(int* first, int* second) {int temp = *first;*first = *second;*second = temp; }int main(void) {int a = 10;int b = 20;printf("a = %d; b = %d;\n", a, b);swap(&a, &b);printf("a = %d; b = %d;\n", a, b);return 0; }

1.1 顯示main.c的匯編代碼

gcc -S -o main.s main.c

匯編文件main.s

.file "main.c".text.globl swap.type swap, @function swap: .LFB0:.cfi_startprocpushq %rbp.cfi_def_cfa_offset 16.cfi_offset 6, -16movq %rsp, %rbp.cfi_def_cfa_register 6movq %rdi, -24(%rbp)movq %rsi, -32(%rbp)movq -24(%rbp), %rax...

1.2 目標文件反匯編

gcc -c -o main.o main.c objdump -s -d main.o > main.o.txt

目標文件main.o的反匯編結果輸出到文件main.o.txt?
反匯編同時顯示源代碼

gcc -g -c -o main.o main.c objdump -S -d main.o > main.o.txt

顯示源代碼同時顯示行號

objdump -j .text -ld -C -S main.o > main.o.txt

1.3 可執行文件反匯編

gcc -o main main.c objdump -s -d main > main.txt

反匯編同時顯示源代碼

gcc -g -o main main.c objdump -S -d main > main.txt

1.4 objdump反匯編常用參數

  • objdump -d <file(s)>: 將代碼段反匯編;
  • objdump -S <file(s)>: 將代碼段反匯編的同時,將反匯編代碼與源代碼交替顯示,編譯時需要使用-g參數,即需要調試信息;
  • objdump -C <file(s)>: 將C++符號名逆向解析
  • objdump -l <file(s)>: 反匯編代碼中插入文件名和行號
  • objdump -j section <file(s)>: 僅反匯編指定的section

2 objdump幫助信息

輸出objdump幫助信息:?
objdump --help?或者?man objdump

Usage: objdump <option(s)> <file(s)>Display information from object <file(s)>.At least one of the following switches must be given:-a, --archive-headers Display archive header information-f, --file-headers Display the contents of the overall file header-p, --private-headers Display object format specific file header contents-P, --private=OPT,OPT... Display object format specific contents-h, --[section-]headers Display the contents of the section headers-x, --all-headers Display the contents of all headers-d, --disassemble Display assembler contents of executable sections-D, --disassemble-all Display assembler contents of all sections-S, --source Intermix source code with disassembly-s, --full-contents Display the full contents of all sections requested-g, --debugging Display debug information in object file-e, --debugging-tags Display debug information using ctags style-G, --stabs Display (in raw form) any STABS info in the file-W[lLiaprmfFsoRt] or--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=gdb_index,=trace_info,=trace_abbrev,=trace_aranges,=addr,=cu_index]Display DWARF info in the file-t, --syms Display the contents of the symbol table(s)-T, --dynamic-syms Display the contents of the dynamic symbol table-r, --reloc Display the relocation entries in the file-R, --dynamic-reloc Display the dynamic relocation entries in the file @<file> Read options from <file>-v, --version Display this program's version number-i, --info List object formats and architectures supported-H, --help Display this informationThe following switches are optional:-b, --target=BFDNAME Specify the target object format as BFDNAME-m, --architecture=MACHINE Specify the target architecture as MACHINE-j, --section=NAME Only display information for section NAME-M, --disassembler-options=OPT Pass text OPT on to the disassembler-EB --endian=big Assume big endian format when disassembling-EL --endian=little Assume little endian format when disassembling--file-start-context Include context from start of file (with -S)-I, --include=DIR Add DIR to search list for source files-l, --line-numbers Include line numbers and filenames in output-F, --file-offsets Include file offsets when displaying information-C, --demangle[=STYLE] Decode mangled/processed symbol namesThe STYLE, if specified, can be `auto', `gnu',`lucid', `arm', `hp', `edg', `gnu-v3', `java'or `gnat'-w, --wide Format output for more than 80 columns-z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling--start-address=ADDR Only process data whose address is >= ADDR--stop-address=ADDR Only process data whose address is <= ADDR--prefix-addresses Print complete address alongside disassembly--[no-]show-raw-insn Display hex alongside symbolic disassembly--insn-width=WIDTH Display WIDTH bytes on a single line for -d--adjust-vma=OFFSET Add OFFSET to all displayed section addresses--special-syms Include special symbols in symbol dumps--prefix=PREFIX Add PREFIX to absolute paths for -S--prefix-strip=LEVEL Strip initial directory names for -S--dwarf-depth=N Do not display DIEs at depth N or greater--dwarf-start=N Display DIEs starting with N, at the same depthor deeper--dwarf-check Make additional dwarf internal consistency checks. objdump: supported targets: elf64-x86-64 elf32-i386 elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex objdump: supported architectures: i386 i386:x86-64 i386:x64-32 i8086 i386:intel i386:x86-64:intel i386:x64-32:intel l1om l1om:intel k1om k1om:intel pluginThe following i386/x86-64 specific disassembler options are supported for use with the -M switch (multiple options should be separated by commas):x86-64 Disassemble in 64bit modei386 Disassemble in 32bit modei8086 Disassemble in 16bit modeatt Display instruction in AT&T syntaxintel Display instruction in Intel syntaxatt-mnemonicDisplay instruction in AT&T mnemonicintel-mnemonicDisplay instruction in Intel mnemonicaddr64 Assume 64bit address sizeaddr32 Assume 32bit address sizeaddr16 Assume 16bit address sizedata32 Assume 32bit data sizedata16 Assume 16bit data sizesuffix Always display instruction suffix in AT&T syntax Report bugs to <http://bugzilla.redhat.com/bugzilla/>.

3 參考資料

[1]?objdump反匯編用法示例?
[2]?objdump命令的使用?
[3]?GNU Binary Utilities: objdump - Sourceware?
[4]?stackoverflow - objdump

總結

以上是生活随笔為你收集整理的每天一个linux命令(70):objdump 命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。