begin process at 2010 03 17 00:06:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Système d'exploitation

 > 

Windows

 > 

[Nasm - Alink - WIn32] Probleme avec SetWindowsHookEx


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[Nasm - Alink - WIn32] Probleme avec SetWindowsHookEx

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ée 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 [FASM]Traduction program C to ASM [ par The Red Man ] je suis completement new in ASM :J'aimerai savoir je pourrai traduire ce bout de C en ASM, j'ai essayé déjà ça compile pas avec :include "win32ax.inc" en quel langage est ecrit ce programme [ par jedilu ] bonjouren quel language est ecrit ce programme car j'ai un probleme pour le lancermerci00629DE5   AE               SCAS BYTE PTR ES:[EDI]00629DE6   9E DLL Load Comment ? [ par belette321 ] Je me demandais comment je fait pour charger un DLL. Il parrait que sa prend pas plus que quelque ligne alor merci d'avence ... 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,203 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales