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) :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 Push 0 Push Offset MsgBox Caption Push Offset MsgBoxText Push 0 Call MessageBox ; demande 4 arguments
Cela ne fonctionne pas. Immunity me donne l'erreur suivante :
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
"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.
Partager