Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : [Nasm - Alink - WIn32] Probleme avec SetWindowsHookEx [ Système d'exploitation / Windows ] (jean84)

lundi 3 décembre 2007 à 22:34:08 | [Nasm - Alink - WIn32] Probleme avec SetWindowsHookEx

jean84

Salut à tous ;)
Je me permet de poser une chtite question car après avoir passé du temps à chercher la réponse à mon problème, bah j'ai toujours pas trouvé...
Alors voila : je code un programme afin de mieux comprendre les hooks. J'ai un programme en 2 parties : une partie dll écrite en ASM (assemblée avec nasm) et l'autre écrite en C (même si pour l'instant le programme de test est en ASM en fait).
A l'assemblage et au linkage, tout va bien. Mais à l'éxécution, j'ai une splendide erreur du style "Le point d'entrée de procédure SetWindowsHookEx est introuvable dans la bibliothèque de liaisons dynamique USER32.dll"

Voici le code en question (tout est simplifie, je veux juste faire appelle à la fonction donc il manque encore pas mal de choses) :

; Section externes
[EXTERN MessageBoxA]
[EXTERN SetWindowsHookEx]

; Section des imports
[IMPORT MessageBoxA user32.dll]
[IMPORT SetWindowsHookEx user32.dll]

; Section des exportations des fonctions presentes dans la dll
[GLOBAL TestFunc]
[GLOBAL SetHook]
[EXPORT TestFunc]
[EXPORT SetHook]

[SEGMENT CODE USE32 CLASS=CODE]
    ..start
        mov eax, 1
        ret 12

    ; Fonction de test
    TestFunc
        push dword 0
        push dword MsgTitle
        push dword MsgText
        push dword 0
        call [MessageBoxA]
        ret
       
    ; Mise en place du crochet clavier
    SetHook:
        push dword 0
        push dword KeyboardHookProc
        push dword 2 ; WH_KEYBOARD = 2
        call [SetWindowsHookEx]
       
        ; Verification
        cmp eax, 0
            jmp __HOOK_FAILED__
        jmp __HOOK_SUCCESS__
       
        __HOOK_FAILED__:
            push dword 0
            push dword MsgFailed
            push dword MsgTitle
            push dword 0
            jmp __END__
           
        __HOOK_SUCCESS__:
            push dword 0
            push dword MsgGood
            push dword MsgTitle
            push dword 0
            mov dword [HandleHook], eax
            jmp __END__
           
        __END__:
        ret
       
    ; Fonction CallBack
    KeyboardHookProc:   
        ret
       
[SEGMENT DATA USE32 CLASS=DATA]
    MsgTitle    db    "DLL", 0
    MsgText        db    "En bref voici du texte a l'interieur de ma DLL", 10, 13, "Ici je saute une ligne ;-)", 0
    MsgFailed    db    "Echec de la mise en place du hook", 0
    MsgGood        db  "Hook En place ;-)", 0

[SEGMENT BSS USE32 CLASS=BSS]
    HandleHook    resd    1

Pour info, la fonction Test marche impec' et il semble que SetHook également mais à l'appel de la fonction SetWindowsHookEx(), tout foire :s

Si quelqu'un pouvait m'aider sa serait super

Merki ++

mardi 4 décembre 2007 à 08:24:51 | Re : [Nasm - Alink - WIn32] Probleme avec SetWindowsHookEx

Nasman

Bonjour jean84,

Ne serait-ce pas parce que le nom de la fonction de hook devrait être SetWindowsHookExA ou SetWindowsHookExW.
Tels sont les deux noms exportés de user32.dll (Win2000).

A+


mardi 4 décembre 2007 à 08:53:44 | Re : [Nasm - Alink - WIn32] Probleme avec SetWindowsHookEx

Nasman

>jean84,
Aussi une chose: Tu utilises SetWindowsHookEx(AouW) avec 3 paramètres seulement. Si cette fonction marche avec 3 paramètres (ce dont je doute) tu auras tôt ou tard un plantage du type violation privilège.

Après il y aura quelques optimisations possibles du code...

A+


mardi 4 décembre 2007 à 19:15:44 | Re : [Nasm - Alink - WIn32] Probleme avec SetWindowsHookEx

jean84

Hello

Bon pour le A ou W, ça ne fonctionne pas, alink me renvoi une erreur de type "unresolved SetWindowsHookEx". J'ai bien essayé de changer le prototype de la fonction dans la section import mais ça n'a rien changé...
Pour les paramètres je vais voir, c'est peut être ça qui foire (j'en doute mes bons).

Pour les optimisations du code, je sais c'est moche mais la je bidouille le code. Une fois que tout fonctionnera comme je le souhaite, je reprendrai totu depuis le début ;)

Merci d'avoir répondu :)



Cette discussion est classé dans : dll, dword, hook, push, setwindowshookex


Répondre à ce message

Sujets en rapport avec ce message

LecteurEstDvd asm inline [ par AlexMAN ] Bonjour, Voila j'ai un ptit pb au nivo, je pense, de l'appel de la fonction DeviceIoControl, le code : //Fonction Cint __stdcall LecteurEstDvd(char *p BeginPaint code débutant [ par TRAX44 ] Bonjour, le problème est tout simple je comprends absolument pas ce qui marche pas. Le "programme" est censé créer une fenêtre est afficher du texte e ça marche pas, aide ... [ par iscalibar ] Bonjour, j'ai un petit probleme, j'ai ecris un program pour le compilateur masm32 qui ne fai que afficher une fenetre, mai malheureusement ça marche p Ecrire registre valeur dword32 [ par goldofff ] Bonjour,j'ai créé un petit prog en assembleur avec winasm qui me permet de créer une clef dans ma base de registre jusque là tout va bien.maintenant j Erreur bizarre : MessageBox affiche du texte en japonais [ par epineurien ] Bonjour à tous !J'ai quelques problêmes avec visual studio C++. Quand j'utilise une MessageBox le texte apparait ... en japonais. J'ai désactivé le su Arguments d une fonction dans une DLL [ par MOUSSAOUIAAZIZ ] Salut;J'aimerais savoir si il est possible de trouver la liste d'arguments variables d'une fonction dans une bibliothèque de liens dynamiques (DL Traitement message WM_PAINT [ par AlexMAN ] Bonsoir, je vous explike : j'ai une dialog box modeless, mon pb c ke lors de l'affichage de la boite de dialogue, celle ci prend en fond la fenetre se Probleme de dll! (arguments...) [ par BlackWizzard ] salut les pro!voila, G une fonction contenu dans une dll mais cette fonction, je ne sait pas comment lui ajouter des arguments...voici un extrait du c [URGENT] Passer des arguments a une DLL [ par BlackWizzard ] Bonjours, je voudrai creer un dll en asm (ce qui est fait) mais je n'arrive pas a passer des arguments a la seul fonction de cette dll.imaginons le co Fonction DLL avec arguments [ par Arnotic ] Bonjour, J'ai une DLL avec une fonction qui prend 2 arguments (en C (char*, int). Lorsque je la charge j'ai aucun problème mais lors de l'appel à


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.