2010-03-30 8 views
1

Je rencontre un problème lors de la lecture des informations extraites d'un fichier exécutable dans Linux. L'information est la suivante:Comment obtenir des informations de objdump

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. que signifie ...? comment puis-je obtenir une 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 :-)

+0

Je pense que vous avez besoin d'ajouter un peu plus d'informations. – Johan

Répondre

1

Le global offset table ne pointe pas au code, il pointe vers les données (HRM .. compensations, en fait). Donc essayer de le démonter ne donnera pas un code très significatif. (vous pouvez réellement trouver quels décalages en regardant les valeurs de code 0804a014, ... 080487a6).

Les ... signifient généralement un groupe de 0 dans le flux.

+0

Je l'ai reconnu peu de temps après avoir posté cette question. Depuis que je viens ici, je ne sais pas comment fermer le fil :-). Merci tout de même. En passant, adresse 0x0804a014 l'adresse virtuelle dans l'espace d'adressage du processus? –

2
  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 en tant que * .s
  4. Ouvrir le terminal et tapez -s gcc -o pour compiler ou tapez dans le terminal gdb et puis tapez la mise en page asm et puis tapez imprimer
Questions connexes