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 :

problème pour "Call address"


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut problème pour "Call address"
    Bonjour à tous,

    Je commence l'assembleur depuis peu et j'ai une question probablement EASY!, peut etre pourriez vous me donner un coup de main.

    Je cherche à appeler la fonction MessageBoxA qui se trouve dans user32.dll, mais non pas en écrivant (ce qui fonctionne cependant parfaitement) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Push 0
    Push Offset MsgBox Caption
    Push Offset MsgBoxText
    Push 0
    Call MessageBox ; demande 4 arguments
    mais en donnant directement l'adresse de MessageBox. En utilisant un debugger (immunity), je trouve que l'adresse de MessageBox est 767C5E31H, du coup je m'attendais à ce que le code suivant fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Push 0
    Push Offset MsgBoxCaption
    Push Offset MsgBoxText
    Push 0
    Mov Ecx, 767C5E31H
    Call Ecx
    Cela ne fonctionne pas. Immunity me donne l'erreur suivante :
    "Don't know how to step because memory at adresse 767C5E31 is not readable. Try to change EIP or pass exception to program"

    Du coup je me demande pourquoi il n'est pas possible d'aller jusqu'à l'adresse demandée.

    ps : je suis sous windows 8 (64bits) et j'utilise masm32 ainsi que easycode.

    En vous remerciant de votre aide.

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Rebonjour à tous.

    J'ai finalement réussi à répondre à mon problème. Il faut d'abord trouver l'adresse de kernel32.dll, puis utiliser LoadLibraryA et GetProcAddress pour charger user32.dll et pouvoir faire un "call" sur l'adresse de MessageBox.

    Si ça intéresse quelqu'un, je peux fournir mon code.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/09/2007, 16h57
  2. Problème sur Request.ServerVariables("QUERY_STRING"
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 25/03/2005, 11h47

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