2010-03-30 4 views
1

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

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 

Надежда кто-нибудь может дать мне руку :-)

+0

Я думаю, вам нужно добавить немного больше информации. – Johan

ответ

1

global offset table не указывает на код, это указывает на данных (HRM .. смещения, на самом деле). Поэтому, пытаясь разобрать его, он не даст очень значимого кода. (вы действительно можете найти, какие смещения, посмотрев на значения кода. 0804a014, ... 080487a6).

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

+0

Я узнал об этом вскоре после публикации этого вопроса. С тех пор, как я пришел сюда, я не знаю, как закрыть нить :-). Все же разрешите поблагодарить вас. Кстати, делает ли адрес 0x0804a014 виртуальным адресом в адресном пространстве процесса? –

2
  1. Копирование только ассемблерный код в текстовый редактор
  2. На первой линии типа основной: (сборочные для основной())
  3. И сохраните файл как * .s
  4. Открыть терминал и типа НКУ -s -o компилировать или введите в терминальную GDB , а затем введите макет ассемблер и введите затем распечатать
Смежные вопросы