Как получить информацию от objdump - PullRequest
1 голос
/ 30 марта 2010

Я сталкиваюсь с проблемой при чтении информации, выгружаемой из исполняемого файла в Linux. Информация следующая:

804a0ea:  04 08            add $0x8, %al
     ...
804a0f4:  a6               cmpsb %es:(%edi),%ds:(%esi)

У меня два вопроса:

  1. что означают адреса 804a0ea и 804a0f4? виртуальный адрес в адресном пространстве процесса?
  2. что значит ...? как получить инструкцию по адресу 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

Надеюсь, кто-нибудь может мне помочь. :-)

Ответы [ 2 ]

2 голосов
/ 14 мая 2011
  1. Копировать только код сборки в текстовый редактор
  2. В первой строке введите main: (сборка для main ())
  3. И сохраните файл как * .s
  4. Откройте терминал и наберите gcc -s -o для компиляции или введите в терминале GDB а затем наберите layout asm и напечатайте
1 голос
/ 31 марта 2010

Глобальная таблица смещений не указывает на код, она указывает на данные (на самом деле ... смещения). Так что попытка разобрать его не даст очень значимого кода. (Вы можете узнать, какие смещения, посмотрев на значения кода. 0804a014, ... 080487a6).

Обычно ... означает, что в потоке находится группа из 0.

...