Assembly 如何从objdump获取信息

Assembly 如何从objdump获取信息,assembly,binutils,objdump,Assembly,Binutils,Objdump,在linux中读取从可执行文件中转储的信息时,我遇到了一个问题。 资料如下: 804a0ea: 04 08 add $0x8, %al ... 804a0f4: a6 cmpsb %es:(%edi),%ds:(%esi) 我有两个问题: 地址804a0ea和804a0f4是什么意思?进程地址空间中的虚拟地址 什么是。。。什么意思?如何在地址804a0f0获取指令 提前谢谢 有关这部分代码的更多信息: Disassembly of

在linux中读取从可执行文件中转储的信息时,我遇到了一个问题。 资料如下:

804a0ea:  04 08            add $0x8, %al
     ...
804a0f4:  a6               cmpsb %es:(%edi),%ds:(%esi)
我有两个问题:

  • 地址804a0ea和804a0f4是什么意思?进程地址空间中的虚拟地址
  • 什么是。。。什么意思?如何在地址804a0f0获取指令
  • 提前谢谢

    有关这部分代码的更多信息:

    Disassembly of section .got.plt:
    
        0804a0e8 <_GLOBAL_OFFSET_TABLE_>:
         804a0e8:       14 a0                   adc    $0xa0,%al
         804a0ea:       04 08                   add    $0x8,%al
                ...
         804a0f4:       a6                      cmpsb  %es:(%edi),%ds:(%esi)
         804a0f5:       87 04 08                xchg   %eax,(%eax,%ecx,1)
         804a0f8:       b6 87                   mov    $0x87,%dh
         804a0fa:       04 08                   add    $0x8,%al
         804a0fc:       c6 87 04 08 d6 87 04    movb   $0x4,-0x7829f7fc(%edi)
         804a103:       08 e6                   or     %ah,%dh
         804a105:       87 04 08                xchg   %eax,(%eax,%ecx,1)
         804a108:       f6 87 04 08 06 88 04    testb  $0x4,-0x77f9f7fc(%edi)
         804a10f:       08 16                   or     %dl,(%esi)
         804a111:       88 04 08                mov    %al,(%eax,%ecx,1)
         804a114:       26 88 04 08             mov    %al,%es:(%eax,%ecx,1)
         804a118:       36 88 04 08             mov    %al,%ss:(%eax,%ecx,1)
         804a11c:       46                      inc    %esi
    
    节.got.plt的分解:
    0804a0e8:
    804a0e8:14 a0 adc$0xa0,%al
    804a0ea:04 08添加$0x8,%al
    ...
    804a0f4:a6 cmpsb%es:(%edi),%ds:(%esi)
    804a0f5:87 04 08 xchg%eax,(%eax,%ecx,1)
    804a0f8:b6 87 mov$0x87,%dh
    804a0fa:04 08添加$0x8,%al
    804a0fc:c6 87 04 08 d6 87 04 movb$0x4,-0x7829f7fc(%edi)
    804a103:08 e6或%ah,%dh
    804a105:87 04 08 xchg%eax,(%eax,%ecx,1)
    804a108:f6 87 04 08 06 88 04测试B$0x4,-0x77f9f7fc(%edi)
    804a10f:08 16或%dl,(%esi)
    804a111:88 04 08 mov%al,(%eax,%ecx,1)
    804a114:26880408 mov%al,%es:(%eax,%ecx,1)
    804a118:36 88 04 08 mov%al,%ss:(%eax,%ecx,1)
    804a11c:46 inc%esi
    
    希望有人能帮我一把。:-

    这不是指向代码,而是指向数据(实际上是hrm…偏移量)。因此,试图反汇编它不会给出非常有意义的代码。(通过查看代码值.0804a014,…080487a6,您实际上可以找到哪些偏移)

    这个。。。通常表示流中有一群0

  • 仅将汇编代码复制到文本编辑器
  • 在第一行中,键入main:(main()的程序集)
  • 并将文件另存为*.s
  • 打开终端并键入gcc-s-o进行编译 或输入终端gdb 然后键入布局asm,然后键入并打印

  • 我想你需要补充一点信息。我在发布这个问题后不久就意识到了这一点。由于我刚到这里,我不知道如何关闭线程:-)。还是谢谢你。顺便问一下,地址0x0804a014是进程地址空间中的虚拟地址吗?