Frage

ich ein Problem auftreten, wenn das Lesen von Informationen aus einer ausführbaren Datei in Linux abgeladen werden. Die Informationen sind wie folgt:

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

Ich habe zwei Fragen:

  1. Was bedeutet die Adresse 804a0ea und 804a0f4 bedeuten? die virtuelle Adresse im Adressraum des Prozesses?
  2. Was bedeutet das ... bedeuten? wie kann ich Anweisung an Adresse 804a0f0 bekommen?

Vielen Dank im Voraus.

Weitere Informationen rund um diesen Teil des Codes:

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

Hope jemand kann mir eine Hand: -).

War es hilfreich?

Lösung

Die globale Offset-Tabelle verweist nicht auf Code, es zu Daten zeigen (HRM ... Offsets, tatsächlich). So versucht es sehr sinnvoll Code gibt nicht auseinander zu nehmen. (Sie können tatsächlich die Offsets finden, indem Sie auf den Codewerten suchen. 0804a014 ... 080487a6).

... in der Regel ein Bündel von 0'en bedeuten sind in den Stream.

Andere Tipps

  1. Kopieren Sie nur den Assembler-Code in den Texteditor
  2. Auf dem ersten Leitungstyp Haupt: (Montag für main ())
  3. und speichern Sie die Datei als * .s
  4. Öffnen Sie das Terminal und geben Sie gcc -s -o zu kompilieren oder geben Terminal GDB und dann das Layout asm Typ und dann drucken
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top