Domanda

ho incontrato un problema durante la lettura dati scaricati fuori da un file eseguibile in linux. L'informazione è il seguente:

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

Ho due domande:

  1. Che cosa significa il 804a0ea indirizzo e 804a0f4 significano? l'indirizzo virtuale nello spazio degli indirizzi del processo?
  2. Che cosa fa il ... significa? come posso ottenere istruzione a indirizzo 804a0f0?

Grazie in anticipo.

Maggiori informazioni intorno a questa parte di codice:

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

La speranza qualcuno può darmi una mano: -).

È stato utile?

Soluzione

Il tabella correzioni globale non è orientata al codice, è indicando i dati (HRM ... offset, in realtà). Quindi, cercare di smontarlo non darà codice molto significativo. (Si può effettivamente trovare che compensa, guardando i valori di codice. 0804a014, ... 080487a6).

Il ... di solito significa un mucchio di 0 sono nel flusso.

Altri suggerimenti

  1. Copia solo il codice assembly per l'editor di testo
  2. Al primo tipo linea principale: (assemblaggio per main ())
  3. e salvare il file come un .s *
  4. Apri terminale e digitare gcc -o -s per compilare o digitare terminale gdb e quindi digitare il layout asm e digitare quindi stampare
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top