Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to use objdump to disassemble under Linux

2025-03-26 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/01 Report--

Editor to share with you how to use objdump for disassembly under Linux. I hope you will get something after reading this article. Let's discuss it together.

The objdump command is a disassembly object file or executable command under Linux that allows you to learn more about the additional information that binaries may contain in a readable format.

1 objdump disassembly exampl

Source file main.c:

/ * main.c * / # include 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 } 1234567891011121314151617181920211.1 display main.c assembly code gcc-S-o main.s main.c1

Assembler file main.s

.file "main.c" .text .globl swap .type swap, @ functionswap:.LFB0: .cfi _ startproc pushq% rbp .cfi _ def_cfa_offset 16 .cfi _ offset 6,-16 movq% rsp,% rbp .cfi _ def_cfa_register 6 movq% rdi,-24 (% rbp) movq% rsi,-32 (% rbp) movq-24 (% rbp) % rax... 123456789101112131415161.2 object file disassembly gcc-c-o main.o main.cobjdump-s-d main.o > main.o.txt12

The disassembly result of the target file main.o is output to the file main.o.txt disassembly and displays the source code.

Gcc-g-c-o main.o main.cobjdump-S-d main.o > main.o.txt12

Display the source code and display the line number

Objdump-j. Text-ld-C-S main.o > main.o.txt11.3 executable disassemble gcc-o main main.cobjdump-s-d main > main.txt12

Disassembly also displays the source code

Gcc-g-o main main.cobjdump-S-d main > main.txt121.4 objdump disassembly common parameter objdump-d: disassemble the code snippet; objdump-S: disassemble the code snippet and display the disassembly code and source code alternately. The-g parameter is needed when compiling, that is, debugging information is required. Objdump-C: reverse parsing C++ symbolic name objdump-l: insert file name and line number objdump-j section into the disassembly code: disassemble only the specified section2 objdump help information

Output objdump help information: objdump-- help or man objdump

Usage: objdump Display information from object. 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 @ Read options from-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 names The STYLE, if specified, can be `auto', `gnu', `lucid', `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 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 depth or 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 ihexobjdump: 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 usewith the-M switch (multiple options Should be separated by commas): x86-64 Disassemble in 64bit mode i386 Disassemble in 32bit mode i8086 Disassemble in 16bit mode att Display instruction in AT&T syntax intel Display instruction in Intel syntax att-mnemonic Display instruction in AT&T mnemonic intel-mnemonic Display instruction in Intel mnemonic addr64 Assume 64bit address size addr32 Assume 32bit address size addr16 Assume 16bit address size data32 Assume 32bit data size data16 Assume 16bit data size suffix Always display instruction suffix in AT&T syntaxReport bugs to. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

After reading this article, I believe you have a certain understanding of "how to use objdump for disassembly under Linux". If you want to know more about it, you are welcome to follow the industry information channel. Thank you for reading!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report