Question

Je rencontre un problème lors de la lecture d'informations déversées à partir d'un fichier exécutable sous Linux. L'information se présente comme suit:

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

J'ai deux questions:

  1. qu'est-ce que l'804a0ea adresse et 804a0f4 signifie? l'adresse virtuelle dans l'espace d'adressage du processus?
  2. qu'est-ce que la ... ça veut dire? comment puis-je obtenir l'instruction à l'adresse 804a0f0?

Merci d'avance.

Plus d'informations dans cette partie du code:

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

quelqu'un Hope peut me donner un coup de main: -.)

Était-ce utile?

La solution

Le table d'offset global ne pointe pas au code, il pointe vers les données (HRM ... décalages, en fait). Donc, en essayant de démonter il ne donnera pas un code très significatif. (Vous pouvez réellement trouver ce qui compense en regardant les valeurs de code. 0804a014 ... 080487a6).

... signifie généralement un tas de 0 sont de dans le flux.

Autres conseils

  1. Copiez uniquement le code assembleur à l'éditeur de texte
  2. Sur le premier type de ligne principale: (assemblage pour principal ())
  3. et enregistrez le fichier comme * .s
  4. Ouvrez le terminal et le type gcc -s -o pour compiler ou taper dans le terminal GDB et puis tapez la mise en page asm et puis tapez imprimer
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top