Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité de passage
    Inscrit en
    août 2011
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : août 2011
    Messages : 13
    Points : 3
    Points
    3

    Par défaut Differencier les call rel16 et rel32 avec ptrace

    Bonjour,

    Je me sers de ptrace pour recenser les instructions CALL.
    Pour ce faire, je dumpe les registres et récupère l'instruction suivante grâce au registre RIP (64 bits). Du coup, dans le cas d'une instruction CALL (rel12 ou rel32), je récupère l'opcode 0xe8 suivi de l'offset de la prochaine instruction.

    J'aimerais donc savoir comment je peux différencier les call rel16 des call rel32.

    Merci.

  2. #2
    Membre actif
    passe le balais et l'aspirateur
    Inscrit en
    mars 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 28

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : mars 2008
    Messages : 160
    Points : 189
    Points
    189

    Par défaut

    avant (sur les processeur non 64bit d'intel j'entend) ça dépendait du mode du segment de code executé (16 ou 32 bit)

    si on souhaitait faire un call16 sur un segment executé en 32 bit il fallait mettre un préfixe a l'instruction (0x66 ou 0x67 je ne sais plus de mémoire, a vérifier) et pareille si on voulait faire un call32 sur un segment executé en mode 16bit


    grosso modo toute les instruction fonctionnait comme ça (pas seulement les call) il y avait deux préfixe, un pour changer la taille des données utilisé et un autre pour changer la taille des adressages utilisé

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
  •