• 1 objdump反汇编示例
    • 1.1 显示```main.c```的汇编代码
    • 1.2 目标文件反汇编
    • 1.3 可执行文件反汇编
    • 1.4 objdump反汇编常用参数
  • 2 objdump帮助信息
  • 3 参考资料

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

————————————————
原文链接:https://blog.csdn.net/wwchao2012/article/details/79980514

objdump(Linux)反汇编命令使用指南相关推荐

  1. linux gcc反汇编,objdump(Linux)反汇编命令使用指南

    1 objdump反汇编示例 1.1 显示main.c的汇编代码 1.2 目标文件反汇编 1.3 可执行文件反汇编 1.4 objdump反汇编常用参数 2 objdump帮助信息 3 参考资料 1 ...

  2. Linux文件命令精通指南(三)(转)

    Linux文件命令精通指南(三)(转) 查看和查找文件 文件过滤器 用来读取文件内容和在文件内容上执行操作的命令有时被称为 1y滤器.sed 和 awk 命令是两个滤波器的例子,因为在以前的 OTN ...

  3. Linux文件命令精通指南(二)(转)

    Linux文件命令精通指南(二)(转) 文件处理命令 剖析一个文件列表 ls 命令用来查看用户有执行权限的任意目录中的文件列表,该命令有许多有趣的选项.例如: $ ls -liah * 22684 - ...

  4. Linux Find 命令精通指南

    作者:Sheryl Calish Linux find 命令是所有 Linux 命令中最有用的一个,同时也是最混乱的一个.它很难,因为它的语法与其他 Linux 命令的标准语法不同.但是,它很强大,因 ...

  5. linux rm 命令详解,Linux rm命令使用指南

    Linux系统的众多命令中,rm命令主要用于删除文件,下面小编就来详解介绍下Linux系统的rm命令,希望对初学者有一定的帮助. 名称:rm 使用权限:所有使用者 使用方式:rm [options] ...

  6. 玩转Linux:常用命令实例指南

  7. 高级 Linux 命令精通指南

    原文出处 http://www.oracle.com/technetwork/cn/server-storage/linux/part1-093824-zhs.html Technorati 标签: ...

  8. linux bash命令_Ultimate Linux命令行指南-Full Bash教程

    linux bash命令 Welcome to our ultimate guide to the Linux Command Line. This tutorial will show you so ...

  9. Linux之curl命令用法指南学习

    Linux之curl命令用法指南学习 前言 常用参数 命令样例 其他 参考链接 前言 应用场景 工作中经常需要用到curl命令在测试或生产服务器中测试第三方接口,尤其是一些内外网接口.判断线上接口信息 ...

最新文章

  1. 记计算机三级网络技术考试经历(附题库)
  2. C语言中return的各种用法
  3. 防火墙设置导致服务器站点打开,服务器、网站、环境配置全正常网站打不开原来是系统防火墙造成的...
  4. Linux 账户信息显示和实现账户安全
  5. 系统辨识与自适应控制
  6. ubuntu 、emacs中使用翻译功能
  7. vue中点击打开新的页面window.open()
  8. k3cloud怎样使金额字段显示金额符号
  9. Android程序员简历
  10. Excel中实现跨表数据有效性
  11. 互联网 HR 黑话大全,太真实了!
  12. cocos2d-x 添加启动数字输入法的功能
  13. 10G 网络变压器 10GBASE-T与1000Base-T区别
  14. debug - 用Procmon记录目标程序启动后的操作
  15. 小程序 身份认证服务器,如何实现微信小程序与.net core应用服务端的无状态身份验证...
  16. 计算机动画基本概念,计算机三维动画基本概念简介
  17. AOV和AOE之间的区别和联系
  18. 四月中旬了,都快要五月份了
  19. D-荧光素丨荧光素酶(Luciferase)常用底物
  20. [Mysql] CONCAT函数 | CONCAT_WS函数

热门文章

  1. 利用ArcGIS做一张三调土地利用现状图
  2. C语言学习--求圆面积和求正方体的体积 ,平均数---2022.9.3
  3. 核密度估计(二维、三维)
  4. 【redis前传】集思广益之quicklist,取其精华去其糟粕
  5. Elasticsearch8系列【2】Windows环境安装ES8
  6. 兼或Inclusive or 和 异或exclusive or
  7. android自动秒杀脚本,gg修改器执行脚本按键代码秒杀安卓
  8. 基于面向对象的权限管理系统设计与实现[1]
  9. 支付宝免密代扣签约SDK后台拼接(JAVA代码)
  10. 免费分享我的匿名邮件群发系统,可匿名发送: 163 126 139 gmail qq 21cn 263 及各类企业级邮件