返回顶部
首页 > 资讯 > 操作系统 >Linux下如何使用objdump进行反汇编
  • 447
分享到

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

2023-06-27 13:06:08 447人浏览 泡泡鱼
摘要

小编给大家分享一下linux下如何使用objdump进行反汇编,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件

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

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

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

1 objdump反汇编示例

源文件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进行反汇编”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网操作系统频道,感谢各位的阅读!

--结束END--

本文标题: Linux下如何使用objdump进行反汇编

本文链接: https://lsjlt.com/news/311081.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux下如何使用objdump进行反汇编
    小编给大家分享一下Linux下如何使用objdump进行反汇编,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件...
    99+
    2023-06-27
  • C/C++程序链接与反汇编工具objdump如何使用
    这篇文章主要介绍“C/C++程序链接与反汇编工具objdump如何使用”,在日常操作中,相信很多人在C/C++程序链接与反汇编工具objdump如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C/C++...
    99+
    2023-07-05
  • C/C++程序链接与反汇编工具objdump的使用介绍
    目录链接阶段1.重定位2.解析引用3.链接示例程序构建过程的第二个阶段就是链接,链接过程输入的是目标文件的集合。每个目标文件可以被看作单个源代码文件的二进制存储版本,需要为程序内存映...
    99+
    2023-02-03
    C++程序链接 C++ objdump C++反汇编
  • Linux下如何使用ASP进行异步编程?
    ASP(Active Server Pages)是一种基于服务器端的脚本技术,可以用来构建动态的网站和Web应用程序。在ASP中,异步编程可以帮助我们提高Web应用程序的性能和响应速度。本文将介绍如何在Linux操作系统下使用ASP进行异...
    99+
    2023-10-16
    异步编程 linux numpy
  • Linux 环境下如何使用 PHP 进行同步编程?
    PHP 是一种非常流行的服务器端脚本语言,它在互联网应用领域被广泛使用。在某些情况下,我们需要在 PHP 中实现同步编程以达到一些特定的目的。本文将介绍如何在 Linux 环境下使用 PHP 进行同步编程。 一、进程与线程 在讨论同步编程...
    99+
    2023-10-29
    同步 linux spring
  • java如何进行反编译
    反编译的过程与编译刚好相反,就是将已编译好的编程语言还原到未编译的状态,也就是找出程序语言的源代码。就是将机器看得懂的语言转换成程序员可以看得懂的语言。Java语言中的反编译一般指将class文件转换成java文件。Java常用反编译工具本...
    99+
    2017-09-06
    java
  • Linux系统如何使用汇编语言
    这篇文章的内容主要围绕Linux系统如何使用汇编语言进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!汇编语言是一种比较早的语言,是用一些容易理解和记忆...
    99+
    2023-06-28
  • Linux下如何使用JMeter进行压力测试
    这篇文章主要为大家展示了“Linux下如何使用JMeter进行压力测试”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何使用JMeter进行压力测试”这篇文章吧。JMeter是Apa...
    99+
    2023-06-27
  • Linux下如何使用bmon进行网络监视
    小编给大家分享一下Linux下如何使用bmon进行网络监视,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!bmon是系统中一个基于文本,简单但非常强大的网络监视和调...
    99+
    2023-06-27
  • Linux下如何使用grep命令进行匹配
    小编给大家分享一下Linux下如何使用grep命令进行匹配,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!grep命令以名称为依据从运行进程队列中查找进程,并显示查...
    99+
    2023-06-27
  • Linux下如何进行OpenSSL的安装与使用
    这篇文章主要为大家分析了Linux下如何进行OpenSSL的安装与使用的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Linux下如何进行OpenSSL的安装...
    99+
    2023-06-28
  • 如何在Linux上使用Java IDE进行编程?
    在Linux上使用Java IDE进行编程是程序员们常见的操作,Java IDE可以帮助程序员更加高效地编写Java代码。在本文中,我们将介绍如何在Linux上使用Java IDE进行编程,以及如何使用一些常用的Java IDE来提高编程效...
    99+
    2023-06-01
    linux ide 学习笔记
  • Unix 系统下如何使用数组进行编程?
    数组是一种非常常见的数据结构,它是一种用来存储一组相同类型的数据的集合。在 Unix 系统下,使用数组进行编程可以让我们更方便地处理数据,同时提高编程效率。本文将介绍如何在 Unix 系统下使用数组进行编程,并提供一些实用的代码示例。 一...
    99+
    2023-10-24
    数组 unix numpy
  • 如何在Linux环境下使用Python进行异步编程和打包
    在Linux环境下使用Python进行异步编程和打包是一项非常重要的技能,特别是在现代Web应用程序中,异步编程已经成为了必不可少的一部分。本文将介绍。 一、异步编程 在Python中,异步编程是通过asyncio模块来实现的。asynci...
    99+
    2023-09-05
    linux 异步编程 打包
  • 如何利用DOSBox运行汇编
    这篇文章主要介绍了如何利用DOSBox运行汇编,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。第一步:下载好相关文件,文件我放在下面链接里:资源文件提取码:edtx第二步,将m...
    99+
    2023-06-29
  • 在Linux的命令行中如何使用BitTorrent进行下载
    本篇内容主要讲解“在Linux的命令行中如何使用BitTorrent进行下载”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在Linux的命令行中如何使用BitTorrent进行下载”吧!如果你喜...
    99+
    2023-06-13
  • Linux 下如何使用 Java 对象进行重定向?
    在 Linux 下,Java 应用程序常常需要进行文件的输入输出操作,而在实际应用中,我们经常需要将输出结果重定向到文件中,以便后续的处理。本文将介绍如何使用 Java 对象进行重定向操作,并给出相关的代码实例。 一、使用 System....
    99+
    2023-10-10
    重定向 linux 对象
  • Linux下如何使用split对文件进行切分
    这篇文章主要介绍Linux下如何使用split对文件进行切分,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!split可以将一个大文件分割成多个小文件,有时候需要将问卷分割成更小的片段,比如提高可读性,生成日志。合久必...
    99+
    2023-06-27
  • Linux下如何使用jenkins进行自动化部署
    这篇文章主要介绍Linux下如何使用jenkins进行自动化部署,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Jenkins是用Java语言编写的主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽...
    99+
    2023-06-28
  • Linux下如何使用cryptsetup对磁盘进行加密
    这篇文章主要介绍Linux下如何使用cryptsetup对磁盘进行加密,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!cryptsetup是linux下的一个分区加密工具,cryptsetup是分区级别的加密,比文件系...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作