API WIN32 - Hook

Le
nigo
--

Salut, je commence seulement à programmer avec l'api et j'ai voulu
comprendre comment créer un hook clavier basique.
J'ai lu le tutoriel http://tcharles.developpez.com/simul/#hooks et j'ai
essayé de créer un keylogger basique. Mais ca ne fonctionne pas. Voici le
code :

Code de la Dll :

Code :

FILE *memo; // Fichier dans lequel j'enregistre les touches tappées
par l'utilisateur
HHOOK HookClavier;
HINSTANCE HInst;

//Procédure du Hook
LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
memo = fopen("C:\hook.txt", "a"); // Ouverture du fichier dans
lequel j'enregistre les touches tappées par l'utilisateur

if(wParam == WM_KEYDOWN)
{
fprintf(memo, "%c", toascii((int) lParam));
}

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


// Fonction qui active le hook
void ActiveHook()
{
HookClavier = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC) HookProc, HInst,
0);
}


// Désactive le hook
void EndHook()
{
UnhookWindowsHookEx(HookClavier);
}


// Fonction principale (exportée par la dll)
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
lpCmdLine, int nCmdShow )
{
HInst = hInstance;
int i;
i = 1;

ActiveHook();
while(i)
{ // boucle infinie. Je n'ai pas mis de condition pour la fin
du hook car je n'arrive déjà pas à l'activer.
}

EndHook();
return 0;
}
/Fin du Code


Voici ensuite le code de l'executable :
Code :

#include "stdafx.h"
#include "stdlib.h"
#include "windows.h"
#include "windowsx.h"

void main()
{
typedef void (WINAPI *DLL_Function_TestFunction) (void);
DLL_Function_TestFunction WinMain; // handle de la
farproc de la dll
HMODULE hDLL; // handle de
la dll


hDLL = LoadLibrary("C:\temp\hookClavier.dll");
WinMain = (DLL_Function_TestFunction)GetProcAddress(hDLL,"WinMain");
if (WinMain!=NULL) // Jusque là, ca marche, et la dll est chargée, et
la fonction aussi ( enfin, elles sont non-nulles ).
{
WinMain();
system("pause");
}
}

/Fin du Code

Voilà, si quelqu'un peut passer minutes pour m'engueuler pour la façon dont
je code comme un sale et me dire où sont les principales erreurs, ce serait
super sympa.

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian ASTOR
Le #9744361
nigo wrote:

Salut, je commence seulement à programmer avec l'api et j'ai voulu
comprendre comment créer un hook clavier basique.



Il faut utiliser un Shared Data Segment
Un vieil ex. que j'avais posté : http://tinyurl.com/ytofnr
Sinon, pour éviter la DLL, faire un Low Level Hook (WH_KEYBOARD_LL)
nigo
Le #9744351
Merci pour ton lien, j'ai regardé le code, je commence à le lire, mais il y
a quelque chose que je ne comprends pas :
=> Qu'est-ce que le Shared Data Segment ( une zone de mémoire partagée, ca,
j'ai compris, mais plus précisément ? )
=> A quoi ca sert concrètement ?
=> Comment l'utiliser ?

Si quelqu'un a un tuto ( en français, si possible, sinon, on fera
avec )...
Merci.

"Christian ASTOR" news: 47d59348$0$21146$
nigo wrote:

Salut, je commence seulement à programmer avec l'api et j'ai voulu
comprendre comment créer un hook clavier basique.



Il faut utiliser un Shared Data Segment
Un vieil ex. que j'avais posté : http://tinyurl.com/ytofnr
Sinon, pour éviter la DLL, faire un Low Level Hook (WH_KEYBOARD_LL)


nigo
Le #9744341
D'autre part, quels headers sont utilisés ici ? Parce qu'à la compilation,
j'ai les erreurs suivantes :

c:Documents and SettingsNicolasMes documentsHook
dllhookClavierhookClavier.cpp(96): error C2086: 'int HOOKDLL_API' :
redefinition

c:Documents and SettingsNicolasMes documentsHook
dllhookClavierhookClavier.cpp(96): error C2144: syntax error : 'int'
should be preceded by ';'

c:Documents and SettingsNicolasMes documentsHook
dllhookClavierhookClavier.cpp(82): error C2146: syntax error : missing ';'
before identifier 'LRESULT'

c:Documents and SettingsNicolasMes documentsHook
dllhookClavierhookClavier.cpp(82): error C2501: 'HOOKDLL_API' : missing
storage-class or type specifiers

c:Documents and SettingsNicolasMes documentsHook
dllhookClavierhookClavier.cpp(96): error C2501: 'HOOKDLL_API' : missing
storage-class or type specifiers




"nigo" fr48qg$9qd$
Merci pour ton lien, j'ai regardé le code, je commence à le lire, mais il
y a quelque chose que je ne comprends pas :
=> Qu'est-ce que le Shared Data Segment ( une zone de mémoire partagée,
ca, j'ai compris, mais plus précisément ? )
=> A quoi ca sert concrètement ?
=> Comment l'utiliser ?

Si quelqu'un a un tuto ( en français, si possible, sinon, on fera
avec )...
Merci.

"Christian ASTOR" news: 47d59348$0$21146$
nigo wrote:

Salut, je commence seulement à programmer avec l'api et j'ai voulu
comprendre comment créer un hook clavier basique.



Il faut utiliser un Shared Data Segment
Un vieil ex. que j'avais posté : http://tinyurl.com/ytofnr
Sinon, pour éviter la DLL, faire un Low Level Hook (WH_KEYBOARD_LL)






Christian ASTOR
Le #9744331
nigo wrote:

=> Qu'est-ce que le Shared Data Segment ( une zone de mémoire partagée, ca,
j'ai compris, mais plus précisément ? )



KB125677
Publicité
Poster une réponse
Anonyme