精华内容
下载资源
问答
  • 2021-05-10 05:46:51

    一、简介

    objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。

    二、选项

    三、实例

    1)显示文件头信息

    objdump -f test

    2)显示Section Header信息

    objdump -h test

    3)显示全部Header信息

    objdump -x test

    4)显示全部Header信息,并显示对应的十六进制文件代码

    objdump -s test

    5)输出目标文件的符号表

    objdump -t obj

    6)输出目标文件的所有段概述

    objdump -h obj

    7)反汇编test中的需要执行指令的那些section

    objdump -d test

    8)反汇编test中的所有section

    objdump -D test

    9)反汇编出源码(指定section)

    objdump -Slj .text obj

    10)对任意二进制文件进行反汇编

    objdump -D -b binary -m i386 a.bin

    【笔记】objdump命令的使用

    ---恢复内容开始--- objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍: objdump -f test 显示t ...

    objdump命令

    0x00 objdump命令是Linux下的反汇编目标文件或者可执行文件的命令 0x01 objdump -f   显示test的文件头信息 $ objdump -f levellevel: file ...

    linux常用命令--开发调试篇

    前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题.本文将简单介绍一下这些命令. 示例程序 我们用一个小程序,来 ...

    objdump命令解析

    [objdump] 相关链接: 实例分析objdump反汇编用法 - 在路上 - CSDN博客  https://blog.csdn.net/u012247418/article/details/80 ...

    Linux 常用命令:开发调试篇

    前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题.本文将简单介绍一下这些命令. 示例程序 我们用一个小程序,来 ...

    linux grep命令

    linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...

    Linux常用命令(一)

    Linux常用命令 1. pwd查看当前路径(Print Working Directory)    [root@CentOS ~]# pwd/root 2. cd .. 返回上一级 .. 表示上一级 ...

    Linux下命令行安装weblogic10.3.6

    Linux下命令行安装weblogic10.3.6 一.安装前准备工作: 1.创建用户useradd weblogic;创建用户成功linux系统会自动创建一个和用户名相同的分组,并将该用户分到改组中 ...

    Linux paste命令

    Linux paste命令用于合并文件的列. paste指令会把每个文件以列对列的方式,一列列地加以合并. 语法 paste [-s][-d ][--help][--versi ...

    随机推荐

    Think twice before doing~

    1.遇到任何矛盾,对事不对人. 2.接到朋友等人的求助电话后,一定要先问清楚对方有什么事情,然后再告诉他(她)能不能帮她(他). 3.如果没有十足的把握和必要,就不要轻易说假话. 4.少提自己的私事, ...

    android stuido build 慢的解决办法

    Enable Offline Work: Click File -> Settings. Search for "gradle" and click in Offline w ...

    java笔记 chapter1 java是什么,能干什么,有什么,特点,开发环境

    一,java是什么 二,java能干什么 三,java有什么 四,java的特点 五,java的三大特性:虚拟机,垃圾回收和代码安全 六,构建JSE开发环境:下载安装jdk和配置环境变量 七,编写并运 ...

    hdu 4289 最小割,分拆点为边

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2609 #include #incl ...

    zookeeper系列之异步通知模式-Watcher

    1 watcher种类和事件种类 Watcher种类 1. zookeeper实例化时注入的默认Watcher 2. dataWatchers 一个Map

    JVM-1.编译

    目录 一.编译器概述 二.编译器组成 三.示例 四.深入理解JVM中的编译器 五.语法糖 六.补充     一.编译器概述 1.编译器实质 编译器的实质是将一种语言规范转化为另一种语言规范:由人容易理 ...

    【菜鸟入门】安装配置eclipse 并编写运行第一个Java程序

    不得不吐槽一下,安装配置这eclipse真是太费劲了...下面总结一下,以便下次再安装 本人 win10系统,64位机 一.在官网下载eclipse安装包 文件名:eclipse-inst-win64 ...

    关于six.with_metaclass(ABCMeta, object)的理解

    在学习Python过程中,看到了生成虚基类的方式, class PeopleBase(six.with_metaclass(ABCMeta, object)): @abstractmethod def ...

    我们一起学习WCF 第六篇文件传输

    原文  http://www.cnblogs.com/LipeiNet/p/4653830.html   前言:文件的输出我们并不陌生,但是今天我写的是用wcf模式进行文件传输,我觉得一大好处就是能进 ...

    linux ubuntu R 无法安装rggobi包的原因及解决方案

    错误信息 Package'libxml-2.0',requiredby'ggobi',notfound     错误原因 ggobi缺乏libxml依赖 解决方案 sudo apt install l ...

    更多相关内容
  • 1、反汇编的原理&为什么需要反汇编 ARM-linux-objdump -D led.elf > led_elf.dis objdump是gcc工具链中的反汇编工具,作用是由编译链接好的elf 格式的可执行程序,来反过来得到汇编源代码。 -D表示反汇编。 >...
  • linux-objdump

    2018-04-07 10:54:00
    ObjDump 1. Synopsis ----------------------------------------------------------------------------------- ObjDump is a small Java framework that dumps any Java object to a string. 2. Usage ---------...
  • objDump是一个轻量级JAVA程序,可以把任何JAVA对象转换为字符串。经常用于反编译bin文件。
  • gcc工具:Linux-objdump

    2018-07-07 14:10:47
    Linux-objdump是gcc工具,用来查看编译后目标文件的组成
  • linux objdump binary file

    2020-10-27 09:27:13
    编译出objdump二进制文件,可以直接使用,用于反汇编; 修改权限:chmod +x objdump 使用示例:objdump -d a.out(gcc编译出的可执行文件)
  • antiwasm:Web程序集objdump

    2021-03-21 11:32:27
    WebAssembly(WIP)的objdump。 当前用法: antiwasm [args] --filename [file.wasm] 当前参数: --help :显示帮助。 --debug :调试模式。 --verbose :详细模式。 --pedantic : --pedantic模式
  • objdump

    千次阅读 2019-12-18 11:08:21
    文章目录1 objdump1.1 反汇编1.2 查看目标文件中的详细段信息 1 objdump 1.1 反汇编 反汇编文件: objdump -d func.o 。 反汇编文件,并查看汇编到源码的映射: objdump -S func.o 。注意,这个时候我们是不能将...

    1 objdump

    1.1 反汇编

    反汇编文件: objdump -d func.o
    在这里插入图片描述

    反汇编文件,并查看汇编到源码的映射: objdump -S func.o 。编译时需要给出-g,即需要调试信息。另外需要注意,这个时候我们是不能将源文件也就是func.c删除的,否则将不能显示汇编语句对应的C代码。
    在这里插入图片描述
    我们还可以使用-M选项,用来指明CPU架构(跟汇编风格有关),比如objdump -d -M intel -S main.o

    1.2 查看目标文件中的详细段信息

    查看目标文件中的详细段信息: objdump -h test.out

    在这里插入图片描述
    objdump -h的输出说明:
    在这里插入图片描述
    可执行程序是如何加载到内存中的?
    三个重要的概念:虚存地址(VMA)、加载地址(LMA)、运行地址

    桌面环境 :test.out(可执行文件),执行test.out会为其创建一个进程。首先会分配虚存,然后将相应的段加载到段所对应的虚存地址,这个虚存地址是在编译时确定的。这个虚存地址也就是加载目标地址,是终点的地址,简称加载地址。 最后执行应用程序。运行地址是指实地址。

    嵌入式环境:源代码交叉编译得到test.bin,然后烧写到device的flash中。当flash为nandflash时,由于nand flash 只能存储代码不能执行代码,所以需要将代码从flash加载到ram中。 从flash的地址将代码拷贝到ram中,这个地址就叫加载地址,指的是起点。vma不等于lma ,这里的运行地址为实地址;当flash为norflash时, 代码可以直接在norflash中执行, 加载地址就是运行地址,虚存地址可能没有。

    上面对于虚存地址(VMA)、加载地址(LMA)、运行地址得理解估计是错得,等后面厉害了,再来更新相关的概念吧!


    参考资料:

    1. 嵌入式操作系统原理课
    展开全文
  • objdump,gnu 开发工具包中的反汇编调试工具,详细描述objdump的调试定位方式,只要是gcc编译都可以参照使用,当应用程序或者共享库发生异常时,利用objdump的调试定位方式可以事半功倍。
  • 转储SC DumpSC是一个简单的bash脚本,可使用objdump从二进制文件中提取Shellcode并复制到剪贴板上,以备将来注入 用法: bash dumpsc.sh <binary>
  • objdump命令

    2022-04-30 14:01:11
    参考:objdump(Linux)反汇编命令使用指南_wang.wenchao的博客-CSDN博客_objdump反汇编命令 1 objdump反汇编示例 源文件main.c: /* main.c */ #include <stdio.h> void swap(int* first, int* second){ ...

    参考:objdump(Linux)反汇编命令使用指南_wang.wenchao的博客-CSDN博客_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的汇编代码

    aarch64-linux-gnu-gcc  -S -o main.s main.c

    汇编文件main.s

          .arch armv8-a
        .file    "main.c"
        .text
        .align    2
        .global    swap
        .type    swap, %function
    swap:
    .LFB0:
        .cfi_startproc
        sub    sp, sp, #32
        .cfi_def_cfa_offset 32
        str    x0, [sp, 8]
        str    x1, [sp]
        ldr    x0, [sp, 8]
        ldr    w0, [x0]
        str    w0, [sp, 28]
        ldr    x0, [sp]
        ldr    w1, [x0]
        ldr    x0, [sp, 8]
        str    w1, [x0]
        ldr    x0, [sp]
        ldr    w1, [sp, 28]
        str    w1, [x0]
        nop
        add    sp, sp, 32
        .cfi_def_cfa_offset 0
        ret
        .cfi_endproc
    .LFE0:
        .size    swap, .-swap
        .section    .rodata
        .align    3
    .LC0:
        .string    "a = %d; b = %d;\n"
        .text
        .align    2
        .global    main
        .type    main, %function
    main:
    .LFB1:
        .cfi_startproc
        stp    x29, x30, [sp, -32]!
        .cfi_def_cfa_offset 32
        .cfi_offset 29, -32
        .cfi_offset 30, -24
        mov    x29, sp
        mov    w0, 10
        str    w0, [sp, 28]
        mov    w0, 20
        str    w0, [sp, 24]
        ldr    w0, [sp, 28]
        ldr    w1, [sp, 24]
        mov    w2, w1
        mov    w1, w0
        adrp    x0, .LC0
        add    x0, x0, :lo12:.LC0
        bl    printf
        add    x1, sp, 24
        add    x0, sp, 28
        bl    swap
        ldr    w0, [sp, 28]
        ldr    w1, [sp, 24]
        mov    w2, w1
        mov    w1, w0
        adrp    x0, .LC0
        add    x0, x0, :lo12:.LC0
        bl    printf
        mov    w0, 0
        ldp    x29, x30, [sp], 32
        .cfi_restore 30
        .cfi_restore 29
        .cfi_def_cfa_offset 0
        ret
        .cfi_endproc
    .LFE1:
        .size    main, .-main
        .ident    "GCC: (GNU) 10.2.1 20200907 [ revision ce3001ff1d734e0763a1a5e434272bf89df1fe06]"
        .section    .note.GNU-stack,"",@progbits
       

    1.2 目标文件反汇编

    aarch64-linux-gnu-gcc  -c -o main.o main.c
    aarch64-linux-gnu-objdump -s -d main.o > main.o.txt


    main.o:     file format elf64-littleaarch64

    Contents of section .text:
     0000 ff8300d1 e00700f9 e10300f9 e00740f9  ..............@.
     0010 000040b9 e01f00b9 e00340f9 010040b9  ..@.......@...@.
     0020 e00740f9 010000b9 e00340f9 e11f40b9  ..@.......@...@.
     0030 010000b9 1f2003d5 ff830091 c0035fd6  ..... ........_.
     0040 fd7bbea9 fd030091 40018052 e01f00b9  .{......@..R....
     0050 80028052 e01b00b9 e01f40b9 e11b40b9  ...R......@...@.
     0060 e203012a e103002a 00000090 00000091  ...*...*........
     0070 00000094 e1630091 e0730091 00000094  .....c...s......
     0080 e01f40b9 e11b40b9 e203012a e103002a  ..@...@....*...*
     0090 00000090 00000091 00000094 00008052  ...............R
     00a0 fd7bc2a8 c0035fd6                    .{...._.        
    Contents of section .rodata:
     0000 61203d20 25643b20 62203d20 25643b0a  a = %d; b = %d;.
     0010 00                                   .               
    Contents of section .comment:
     0000 00474343 3a202847 4e552920 31302e32  .GCC: (GNU) 10.2
     0010 2e312032 30323030 39303720 5b207265  .1 20200907 [ re
     0020 76697369 6f6e2063 65333030 31666631  vision ce3001ff1
     0030 64373334 65303736 33613161 35653433  d734e0763a1a5e43
     0040 34323732 62663839 64663166 6530365d  4272bf89df1fe06]
     0050 00                                   .               
    Contents of section .eh_frame:
     0000 10000000 00000000 017a5200 04781e01  .........zR..x..
     0010 1b0c1f00 14000000 18000000 00000000  ................
     0020 40000000 00410e20 4e0e0000 20000000  @....A. N... ...
     0030 30000000 00000000 68000000 00410e20  0.......h....A.
     0040 9d049e03 58dedd0e 00000000 00000000  ....X...........

    Disassembly of section .text:

    0000000000000000 <swap>:
       0:    d10083ff     sub    sp, sp, #0x20
       4:    f90007e0     str    x0, [sp, #8]
       8:    f90003e1     str    x1, [sp]
       c:    f94007e0     ldr    x0, [sp, #8]
      10:    b9400000     ldr    w0, [x0]
      14:    b9001fe0     str    w0, [sp, #28]
      18:    f94003e0     ldr    x0, [sp]
      1c:    b9400001     ldr    w1, [x0]
      20:    f94007e0     ldr    x0, [sp, #8]
      24:    b9000001     str    w1, [x0]
      28:    f94003e0     ldr    x0, [sp]
      2c:    b9401fe1     ldr    w1, [sp, #28]
      30:    b9000001     str    w1, [x0]
      34:    d503201f     nop
      38:    910083ff     add    sp, sp, #0x20
      3c:    d65f03c0     ret

    0000000000000040 <main>:
      40:    a9be7bfd     stp    x29, x30, [sp, #-32]!
      44:    910003fd     mov    x29, sp
      48:    52800140     mov    w0, #0xa                       // #10
      4c:    b9001fe0     str    w0, [sp, #28]
      50:    52800280     mov    w0, #0x14                      // #20
      54:    b9001be0     str    w0, [sp, #24]
      58:    b9401fe0     ldr    w0, [sp, #28]
      5c:    b9401be1     ldr    w1, [sp, #24]
      60:    2a0103e2     mov    w2, w1
      64:    2a0003e1     mov    w1, w0
      68:    90000000     adrp    x0, 0 <swap>
      6c:    91000000     add    x0, x0, #0x0
      70:    94000000     bl    0 <printf>
      74:    910063e1     add    x1, sp, #0x18
      78:    910073e0     add    x0, sp, #0x1c
      7c:    94000000     bl    0 <swap>
      80:    b9401fe0     ldr    w0, [sp, #28]
      84:    b9401be1     ldr    w1, [sp, #24]
      88:    2a0103e2     mov    w2, w1
      8c:    2a0003e1     mov    w1, w0
      90:    90000000     adrp    x0, 0 <swap>
      94:    91000000     add    x0, x0, #0x0
      98:    94000000     bl    0 <printf>
      9c:    52800000     mov    w0, #0x0                       // #0
      a0:    a8c27bfd     ldp    x29, x30, [sp], #32
      a4:    d65f03c0     ret

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

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


    main.o:     file format elf64-littleaarch64


    Disassembly of section .text:

    0000000000000000 <swap>:
    /* main.c */
    #include <stdio.h>

    void swap(int* first, int* second){
       0:    d10083ff     sub    sp, sp, #0x20
       4:    f90007e0     str    x0, [sp, #8]
       8:    f90003e1     str    x1, [sp]
        int temp = *first;
       c:    f94007e0     ldr    x0, [sp, #8]
      10:    b9400000     ldr    w0, [x0]
      14:    b9001fe0     str    w0, [sp, #28]
        *first = *second;
      18:    f94003e0     ldr    x0, [sp]
      1c:    b9400001     ldr    w1, [x0]
      20:    f94007e0     ldr    x0, [sp, #8]
      24:    b9000001     str    w1, [x0]
        *second = temp;
      28:    f94003e0     ldr    x0, [sp]
      2c:    b9401fe1     ldr    w1, [sp, #28]
      30:    b9000001     str    w1, [x0]
    }
      34:    d503201f     nop
      38:    910083ff     add    sp, sp, #0x20
      3c:    d65f03c0     ret

    0000000000000040 <main>:

    int main(void){
      40:    a9be7bfd     stp    x29, x30, [sp, #-32]!
      44:    910003fd     mov    x29, sp
        int a = 10;
      48:    52800140     mov    w0, #0xa                       // #10
      4c:    b9001fe0     str    w0, [sp, #28]
        int b = 20;
      50:    52800280     mov    w0, #0x14                      // #20
      54:    b9001be0     str    w0, [sp, #24]

        printf("a = %d; b = %d;\n", a, b);
      58:    b9401fe0     ldr    w0, [sp, #28]
      5c:    b9401be1     ldr    w1, [sp, #24]
      60:    2a0103e2     mov    w2, w1
      64:    2a0003e1     mov    w1, w0
      68:    90000000     adrp    x0, 0 <swap>
      6c:    91000000     add    x0, x0, #0x0
      70:    94000000     bl    0 <printf>
        swap(&a, &b);
      74:    910063e1     add    x1, sp, #0x18
      78:    910073e0     add    x0, sp, #0x1c
      7c:    94000000     bl    0 <swap>
        printf("a = %d; b = %d;\n", a, b);
      80:    b9401fe0     ldr    w0, [sp, #28]
      84:    b9401be1     ldr    w1, [sp, #24]
      88:    2a0103e2     mov    w2, w1
      8c:    2a0003e1     mov    w1, w0
      90:    90000000     adrp    x0, 0 <swap>
      94:    91000000     add    x0, x0, #0x0
      98:    94000000     bl    0 <printf>

        return 0;
      9c:    52800000     mov    w0, #0x0                       // #0
    }
      a0:    a8c27bfd     ldp    x29, x30, [sp], #32
      a4:    d65f03c0     ret

    显示源代码同时显示行号

    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帮助信息

    aarch64-linux-gnu-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
          --disassemble=<sym>  Display assembler contents from <sym>
      -S, --source             Intermix source code with disassembly
          --source-comment[=<txt>] Prefix lines of source code with <txt>
      -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[lLiaprmfFsoORtUuTgAckK] or
      --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,
              =frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,
              =gdb_index,=trace_info,=trace_abbrev,=trace_aranges,
              =addr,=cu_index,=links,=follow-links]
                               Display DWARF info in the file
      --ctf=SECTION            Display CTF info from SECTION
      -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 information

    展开全文
  • objdump -d 或 -D 创建的 x86/x64 反汇编文件的 vim 语法
  • linux objdump

    2021-05-16 13:28:54
    linux objdump概述:objdump有点象那个快速查看之流的工具,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。对于一般只想让自己程序跑起来的程序员,这个命令没有更多意义,对于想进一步了解...

    linux objdump概述:

    objdump有点象那个快速查看之流的工具,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。对于一般只想让自己程序跑起来的程序

    员,这个命令没有更多意义,对于想进一步了解系统的程序员,应该掌握这种工具,至少你可以自己写写shellcode了,或者看看人家给的exploit

    中的shellcode是什么东西。

    目录:

    ★ 测试练习前的准备工作

    ★ Redhat 6.0 objdump命令的man手册

    ★ objdump应用举例(待增加)

    ★ 相关命令

    ★ 测试练习前的准备工作

    cp /usr/lib/libpcap.a /home/scz/src

    nm -s libpcap.a | more

    ar tv libpcap.a

    ar xv libpcap.a inet.o

    nm -s inet.o

    关于nm -s的显示请自己man nm查看

    ★ Redhat 6.0 objdump命令的man手册

    objdump - 显示二进制文件信息

    objdump

    [-a] [-b bfdname |

    --target=bfdname] [-C] [--debugging]

    [-d] [-D]

    [--disassemble-zeroes]

    [-EB|-EL|--endian={big|little}] [-f]

    [-h] [-i|--info]

    [-j section | --section=section]

    [-l] [-m machine ] [--prefix-addresses]

    [-r] [-R]

    [-s|--full-contents] [-S|--source]

    [--[no-]show-raw-insn] [--stabs] [-t]

    [-T] [-x]

    [--start-address=address] [--stop-address=address]

    [--adjust-vma=offset] [--version] [--help]

    objfile...

    --archive-headers

    -a 显示档案库的成员信息,与 ar tv 类似

    objdump -a libpcap.a 和 ar -tv libpcap.a 显示结果比较比较显然这个选项没有什么意思。

    --adjust-vma=offset

    When

    dumping information, first add offset to all the section addresses.

    This is useful if the section addresses do not correspond to the symbol

    table, which can happen when putting sections at particular addresses

    when using a format which can not represent section addresses, such as

    a.out.

    -b bfdname

    --target=bfdname

    指定目标码格式。这不是必须的,objdump能自动识别许多格式,

    比如:objdump -b oasys -m vax -h fu.o

    显示fu.o的头部摘要信息,明确指出该文件是Vax系统下用Oasys

    编译器生成的目标文件。objdump -i将给出这里可以指定的

    目标码格式列表

    --demangle

    -C 将底层的符号名解码成用户级名字,除了去掉所有开头的下划线之外,还使得C++函数名以可理解的方式显示出来。

    --debugging

    显示调试信息。企图解析保存在文件中的调试信息并以C语言的语法显示出来。仅仅支持某些类型的调试信息。

    --disassemble

    -d 反汇编那些应该还有指令机器码的section

    --disassemble-all

    -D 与 -d 类似,但反汇编所有section

    --prefix-addresses

    反汇编的时候,显示每一行的完整地址。这是一种比较老的反汇编格式。显示效果并不理想,但可能会用到其中的某些显示,自己可以对比。

    --disassemble-zeroes

    一般反汇编输出将省略大块的零,该选项使得这些零块也被反汇编。

    -EB

    -EL

    --endian={big|little}

    这个选项将影响反汇编出来的指令。

    little-endian就是我们当年在dos下玩汇编的时候常说的高位在高地址,x86都是这种。

    --file-headers

    -f 显示objfile中每个文件的整体头部摘要信息。

    --section-headers

    --headers

    -h 显示目标文件各个section的头部摘要信息。

    --help 简短的帮助信息。

    --info

    -i 显示对于 -b 或者 -m 选项可用的架构和目标格式列表。

    --section=name

    -j name 仅仅显示指定section的信息

    --line-numbers

    -l 用文件名和行号标注相应的目标代码,仅仅和-d、-D或者-r一起使用使用-ld和使用-d的区别不是很大,在源码级调试的时候有用,要求编译时使用了-g之类的调试编译选项。

    --architecture=machine

    -m machine

    指定反汇编目标文件时使用的架构,当待反汇编文件本身没有描述架构信息的时候(比如S-records),这个选项很有用。可以用-i选项列出这里能够指定的架构

    --reloc

    -r 显示文件的重定位入口。如果和-d或者-D一起使用,重定位部分以反汇编后的格式显示出来。

    --dynamic-reloc

    -R 显示文件的动态重定位入口,仅仅对于动态目标文件有意义,比如某些共享库。

    --full-contents

    -s 显示指定section的完整内容。

    objdump --section=.text -s inet.o | more

    --source

    -S 尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,效果比较明显。隐含了-d参数。

    --show-raw-insn

    反汇编的时候,显示每条汇编指令对应的机器码,除非指定了

    --prefix-addresses,这将是缺省选项。

    --no-show-raw-insn

    反汇编时,不显示汇编指令的机器码,这是指定 --prefix-addresses

    选项时的缺省设置。

    --stabs

    Display

    the contents of the .stab, .stab.index, and .stab.excl sections from an

    ELF file. This is only useful on systems (such as Solaris 2.0) in which

    .stab debugging symbol-table entries are carried in an ELF section. In

    most other file formats, debugging symbol-table entries are interleaved

    with linkage symbols, and are visible in the --syms output.

    --start-address=address

    从指定地址开始显示数据,该选项影响-d、-r和-s选项的输出。

    --stop-address=address

    显示数据直到指定地址为止,该选项影响-d、-r和-s选项的输出。

    --syms

    -t 显示文件的符号表入口。类似于nm -s提供的信息

    --dynamic-syms

    -T 显示文件的动态符号表入口,仅仅对动态目标文件有意义,比如某些

    共享库。它显示的信息类似于 nm -D|--dynamic 显示的信息。

    --version 版本信息

    objdump --version

    --all-headers

    -x 显示所有可用的头信息,包括符号表、重定位入口。-x 等价于

    -a -f -h -r -t 同时指定。

    objdump -x inet.o

    参看 nm(1)

    ★ objdump应用举例(待增加)

    /*

    g++ -g -Wstrict-prototypes -Wall -Wunused -o objtest objtest.c

    */

    #include

    #include

    int main ( int argc, char * argv[] )

    {

    execl( "/bin/sh", "/bin/sh", "-i", 0 );

    return 0;

    }

    g++ -g -Wstrict-prototypes -Wall -Wunused -o objtest objtest.c

    objdump -j .text -Sl objtest | more

    /main(查找)

    08048750 :

    main():

    /home/scz/src/objtest.c:7

    */

    #include

    #include

    int main ( int argc, char * argv[] )

    {

    8048750: 55 pushl %ebp

    8048751: 89 e5 movl %esp,%ebp

    /home/scz/src/objtest.c:8

    execl( "/bin/sh", "/bin/sh", "-i", 0 );

    8048753: 6a 00 pushl $0x0

    8048755: 68 d0 87 04 08 pushl $0x80487d0

    804875a: 68 d3 87 04 08 pushl $0x80487d3

    804875f: 68 d3 87 04 08 pushl $0x80487d3

    8048764: e8 db fe ff ff call 8048644 8048769: 83 c4 10 addl $0x10,%esp

    /home/scz/src/objtest.c:9

    return 0;

    804876c: 31 c0 xorl %eax,%eax

    804876e: e

    b 04 jmp 8048774

    8048770: 31 c0 xorl %eax,%eax

    8048772: eb 00 jmp 8048774

    /home/scz/src/objtest.c:10

    }

    8048774: c9 leave

    8048775: c3 ret

    8048776: 90 nop

    如果说上面还不够清楚,可以用下面的命令辅助一下:

    objdump -j .text -Sl objtest --prefix-addresses | more

    objdump -j .text -Dl objtest | more

    去掉调试编译选项重新编译

    g++ -O3 -o objtest objtest.c

    objdump -j .text -S objtest | more

    08048778 :

    main():

    8048778: 55 pushl %ebp

    8048779: 89 e5 movl %esp,%ebp

    804877b: 6a 00 pushl $0x0

    804877d: 68 f0 87 04 08 pushl $0x80487f0

    8048782: 68 f3 87 04 08 pushl $0x80487f3

    8048787: 68 f3 87 04 08 pushl $0x80487f3

    804878c: e8 db fe ff ff call 804866c 8048791: 31 c0 xorl %eax,%eax

    8048793: c9 leave

    8048794: c3 ret

    8048795: 90 nop

    与前面-g编译后的二进制代码比较一下,有不少区别。

    至于如何写shellcode、如何理解别人给出的shellcode,请参看华中站系统安全版精华区中的"如何写自己的shellcode"

    ★ 相关命令

    man objcopy

    man nm

    man gdb | dbx | sdb

    阅读(3219) | 评论(0) | 转发(1) |

    展开全文
  • Ubuntu20.04手动安装binutils objdump、arm-linux-objdump: command not found、bash: hello.s: Permission denied
  • objdump命令解析

    2020-09-27 14:52:11
    objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。 选项 –archive-headers -a 显示档案库的成员信息,类似ls -l将lib*.a的信息列出。 -b bfdname –target=bfdname 指定目标码格式。这不是必须的,...
  • readelf 和 objdump 例子详解及区别

    千次阅读 2020-06-22 16:53:49
    readelf 和 objdump 例子详解及区别1. readelf - 查看elf文件的信息1. readelf 命令+代码例子详解1.1 readelf -s simple.o //--symbols 显示符号表段中的项1.2 readelf -h simple.o //显示elf文件开始的文件头信息....
  • objdump工具用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。 常用参数说明 -f 显示文件头信息 -D 反汇编所有section (-d反汇编特定section) -h 显示目标文件各个...
  • 文章目录 概述 参数 实例 objdump反汇编用法示例 参考 概述 objdump可以干什么? objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。 ...
  • nm-objdump 个人和实现。 细节 我在 EPITECH (2010-2011) 的第二年实现了一个有趣的小项目,以了解有关目标文件的更多信息。 该项目是为在 Linux (Fedora) 上编译和运行而开发的。 用法 运行 Makefile 来编译两个可...
  • objdump是用查看目标文件或者可执行的目标文件的构成的工具。 2、参数 选项 详细选项 描述 -a --archive-headers 显示档案库的成员信息,类似 ls -l ...
  • 安装objdump

    千次阅读 2021-08-23 18:38:10
    objdump是binutils下的工具 所以我们要下载binutils这个包 下面给出地址http://ftp.gnu.org/gnu/binutils/ 我下载的是2.37.tar.gz 下载后解压缩,然后进入解压后文件所在的那个目录下,执行下列命令 ./configure ...
  • objdump和gcc命令简单入门前言GCC的使用GCC介绍其他可选参数objdump使用objdump反汇编常用参数objdump使用例子 前言 objdump是用于查看目标文件的命令行工具,常配合另一个命令行工具gcc使用。通过objdump查看汇编...
  • objdump 指令使用

    2022-05-20 11:27:50
    windows环境下objdump 指令使用,本集成在"C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2020-q4-major\arm-none-eabi\bin\objdump.exe" 添加只环境变量里面即可使用objdump指令;可以查看.o .a .elf文件...
  • Linux 命令(57)—— objdump 命令

    千次阅读 2019-03-05 21:00:50
    1.简介 objdump用于查看目标文件或可执行文件信息。
  • GDB与objdump

    2021-12-21 11:27:16
    objdump简介 一些做二进制拆弹实验的预备知识 GDB简介 ¢GDB(GNU symbolic debugger)是一个功能很强大的调试器。它是一个受通用公共许可证即GPL保护的自由软件。 ¢GDB可以调试一个程序,包括让程序在你希望的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,170
精华内容 10,868
关键字:

objdump