Pregunta

Me encuentro con un problema cuando la información de la lectura vierten hacia fuera de un archivo ejecutable en Linux. La información es la siguiente:

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

Tengo dos preguntas:

  1. ¿qué hace el 804a0ea dirección y 804a0f4 media? la dirección virtual en el espacio de direcciones del proceso?
  2. lo que hace la media ...? ¿Cómo puedo obtener instrucción en la dirección 804a0f0?

Gracias de antemano.

Más información en torno a esta parte del código:

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 esperanza alguien me puede dar una mano: -).

¿Fue útil?

Solución

El tabla de desplazamiento mundial no está apuntando al código, que está apuntando a los datos de gestión de recursos humanos (... compensaciones, en realidad). Por lo que intentar desmontarlo no dará un código muy significativa. (En realidad se puede encontrar que compensa al mirar los valores de código. 0804a014, ... 080487a6).

El ... por lo general significa un montón de 0'S están en la corriente.

Otros consejos

  1. Copiar sólo el código de montaje para el editor de texto
  2. En el primer tipo línea principal: (montaje para main ())
  3. y guarde el archivo como * .s
  4. Abrir el terminal y el tipo gcc -s -o para compilar o escriba en gdb terminal de y escriba asm disposición y el tipo a continuación, imprimir
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top