IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

Opcode A3 (mov)


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre du Club Avatar de Array
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 210
    Points : 55
    Points
    55
    Par défaut Opcode A3 (mov)
    Bonjour,

    J'ai une question... à propos de l'instruction "mov".
    En ce moment j'ai une fonction de hooking au sein d'un processus...

    Soit ce code...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    E8 39 6A 02 00                                call    sub_1DC6CC0
    A3 84 61 13 02                                mov   dword_2136184, eax
    Je me demandais... comme l'opcode du mov est ici A3... comment retrouver l'addresse du dword_2136184 ???

    Selon une référence en opcode...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A3	movl eax,moffs32	2	Move EAX to (seg:offset)	movl %eax,farmem32
    Est-ce que la séquence après A3 (i.e. 84 61 13 02) est en fait un "jump" (une addresse relative) ou quoi encore? C'est l'essence de ma question...

    Autrement dit, pour obtenir l'addresse réelle, dois-je additionner 84611302 à l'addresse même de l'instruction mov, ou simplement utiliser 84611302 ?

    Et si je dois faire une addition, à partir de quelle byte la faire? À la prochaine instruction après le mov, après le byte A3 ou après le début de l'instruction mov? Je ne sais pas trop...

    Merci,
    Array

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 620
    Points
    23 620
    Par défaut
    Hello,

    N'oublie pas qu'Intel travaille en Little Endian.

    « 84 61 13 02 », ça donne « 2 13 61 84 » remis dans le bon ordre, ce qui est bien l'offset indiqué par l'étiquette « dword_2136184 » générée automatiquement.

    Après, cet offset est relatif au segment de données, en mode réel comme en mode protégé, ou à zéro en flat mode.

Discussions similaires

  1. Lecture MOV et DIVX
    Par jc44 dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 10/01/2006, 17h09
  2. [ARM] Comment utiliser l'opération MOV
    Par maxliem dans le forum Autres architectures
    Réponses: 5
    Dernier message: 27/07/2005, 14h24
  3. [NASM][Win] Invalid combination of opcode and operands
    Par Arnaudv6 dans le forum x86 32-bits / 64-bits
    Réponses: 12
    Dernier message: 17/06/2005, 09h07
  4. [Débutant] Les opcodes sur les différents processeurs
    Par loverdose dans le forum Assembleur
    Réponses: 11
    Dernier message: 03/02/2005, 13h32
  5. Centrino : quel Assembleur ? Opcodes 16-32-64 bits
    Par Arnaudv6 dans le forum Assembleur
    Réponses: 16
    Dernier message: 14/01/2004, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo