+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Discussion: Opcode A3 (mov)

  1. #1
    Nouveau Membre du Club Avatar de Array
    Inscrit en
    juillet 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 23

    Informations forums :
    Inscription : juillet 2007
    Messages : 210
    Points : 27
    Points
    27

    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 :
    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 :
    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
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 484
    Points : 14 014
    Points
    14 014

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •