千家信息网

Linux下如何使用objdump进行反汇编

发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,小编给大家分享一下Linux下如何使用objdump进行反汇编,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以
千家信息网最后更新 2025年02月21日Linux下如何使用objdump进行反汇编

小编给大家分享一下Linux下如何使用objdump进行反汇编,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

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

1 objdump反汇编示例

源文件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;}123456789101112131415161718192021
1.1 显示main.c的汇编代码
gcc -S -o main.s main.c1

汇编文件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   ...12345678910111213141516
1.2 目标文件反汇编
gcc -c -o main.o main.cobjdump -s -d main.o > main.o.txt12

目标文件main.o的反汇编结果输出到文件main.o.txt 反汇编同时显示源代码

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

显示源代码同时显示行号

objdump -j .text -ld -C -S main.o > main.o.txt1
1.3 可执行文件反汇编
gcc -o main main.cobjdump -s -d main > main.txt12

反汇编同时显示源代码

gcc -g -o main main.cobjdump -S -d main > main.txt12
1.4 objdump反汇编常用参数
  • objdump -d: 将代码段反汇编;
  • objdump -S: 将代码段反汇编的同时,将反汇编代码与源代码交替显示,编译时需要使用-g参数,即需要调试信息;
  • objdump -C: 将C++符号名逆向解析
  • objdump -l: 反汇编代码中插入文件名和行号
  • objdump -j section: 仅反汇编指定的section

2 objdump帮助信息

输出objdump帮助信息: objdump --help 或者 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', `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 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


看完了这篇文章,相信你对"Linux下如何使用objdump进行反汇编"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

文件 代码 信息 同时 源代码 目标 参数 命令 更多 篇文章 行号 帮助 输出 二进制 号名 完了 常用 文件名 格式 源文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器由谁来管理员 区块链大带宽防护服务器 湛江分布式服务器咨询 不断拓展网络安全合作深度 马鞍山专业模具软件开发费用 淘宝软件开发诈骗 匡尚互联网科技有限公司 涵盖专业文献的数据库有什么 小学生网络安全发言稿 黄冈敬秆网络技术有限公司 abap创建数据库表索引 虎丘区信息化网络技术费用是多少 西安复华网络技术有限公 浦东新区辅助软件开发报价方案 腾讯客服里面说的服务器是什么 数据库sql语言 数据库最大的天文软件 国外对网络安全的研究 mysql数据库安全审计策略 sql查询表所在数据库 工业外包软件开发 移动软件开发前端 数据库查询去掉0 博山微信小程序软件开发报价 小学生网络安全发言稿 安徽互联网软件开发大概要多少钱 上海自动化软件开发预算 网络安全产品的原理 浦东新区软件开发包括哪些 我的数据服务器
0