begin process at 2012 02 12 12:34:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > HOOK DLL - LE HOOK FACILE (POUR VB6)

HOOK DLL - LE HOOK FACILE (POUR VB6)


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :hook, api, vb6, setwindowshookex Niveau :Débutant Date de création :07/03/2007 Date de mise à jour :09/03/2007 09:26:01 Vu / téléchargé :12 128 / 734

Auteur : Renfield

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note


 Description

Bonjour,

Je ne poste que très rarement ailleurs que sur VbFrance.
Je vous propose ici une dll C qui a pour but d'utiliser facilement le hook dans des applis (principalement en VB6).
En effet, pour pouvoir effectuer des hook globaux, il faut un dll (je ne vous apprend rien ^^)

les messages résultants du/des hooks installés sont transférés a une fenetre du client (via SendMessage).
subtilité cependant, le message recu est :

WM_USER + nCode

où nCode est le parametre eponyme dans la fontion de gestion du hook (voir la doc de ces procédures, sur MSDN)



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

07 mars 2007 16:32:55 :
pointeurs remplacés par index de tableaux.
07 mars 2007 17:11:02 :
Ajout de tests (handles, allocation mémoire, etc)
08 mars 2007 09:18:38 :
Différents points corrigés.
09 mars 2007 09:26:01 :
Mappage (deux "niveaux") de CBT_CREATEWND. C'est en fait ce seul point qui m'a motivé a faire cette DLL... mais je me suis dit que je pouvais généraliser la chose.

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

 Sources en rapport avec celle ci

Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip HOOK SOURIS SUR TASKBAR (WIN32) par BruNews
Source avec Zip HOOK FENETRE par LordBob

Commentaires et avis

Commentaire de Renfield le 07/03/2007 14:16:16 administrateur CS

J'aurais besoin d'aide, par contre...

je me suis arrangé pour que plusieurs exe clients puissent se servir simultanément de la dll.
seul gros bémol : si le premier client lancé est fermé, le hook s'arrete :/
je ne comprends pas vraiment pourquoi.

Commentaire de xabiotxoa64 le 07/03/2007 17:07:55

Bonjour, pratique comme dll. Tu devrais mettre à disposition un prog test qui fait appel à ta dll. Pour l'arrêt de ton hook il est probable qu'il faille chercher la raison dans le fait que tu initialises ton hook (SetWindowsHookEx) avec l'instance de ton premier client, mais ce n'est qu'une piste, pas du tout sur de moi.
Merci pour ton travail.

Commentaire de Renfield le 07/03/2007 17:15:33 administrateur CS

j'uploaderai un exe de test depuis chez moi...
si j'en met un, ca ne passe pas la sécurité du proxy ^^

Commentaire de xabiotxoa64 le 07/03/2007 17:31:58

Zippe le, ou nomme le avec une extention *.txt que l'on se fera un plaisir de renommer.

Commentaire de Renfield le 07/03/2007 18:49:17 administrateur CS

Code imprimé, relu et corrigé dans le train.

je pense avoir trouvé une piste pour me débloquer...

Commentaire de cotmar le 08/03/2007 09:06:21

Bonjour,

Est ce que quelqu'un pourrait expliquer ce qu'est le hook s'il vous plait ?

Par avance merci.

Marco (alias "p'tite t^te" :p).

Commentaire de Renfield le 08/03/2007 09:28:53 administrateur CS

Zip mis a jour, probleme corrigé.
manque encore un client de test (et des commentaires)

COTMAR, tu y verras sans doute plus clair avec un exe de test...
en attendant, tu as la doc :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/hooks/hookreference/hookfunctions/cbtproc.asp

et une petite intro :
Le hook, en fait, c'est un procédé qui permet de recevoir des messages suite a differentes actions systeme.
par exemple,
- la création/destruction de fenetre (WH_CBT)
- les actions clavier ou souris (WH_KEYBOARD_LL par exemple)
- etc

on peut cibler un process précis (pas possible depuis cette dll), ou cibler tout le systeme. pour 'hooker' le systeme, il faut passer par une dll, lauqelle pouvant ainsi être mappée convenablement.

ici, la dll est interfacables grace au deux fonctions Initialize et Terminate.

les messages sont renvoyés tel quels.
seule différence notable, le parametre nCode des messages, il vous faudra soustraire WM_USER :

long MsgProc(long hWnd, long uMsg, WPARAM wParam,LPARAM lParam)Dim sBuffer As String
    switch(uMsg - WM_USER)
        case HCBT_CREATEWND:
            // Ce message avertit de la creation d'une fenetre. le handle de celle-ci est le wParam (voir doc concernant CBTProc sur MSDN)

Commentaire de Renfield le 08/03/2007 13:35:48 administrateur CS

je suis en train de réorganiser l'architecture de la chose.
en effet, les parametres sont mappés dans l'espace mémoire de l'appli cliente, mais sur un seul niveau.
WH_CBT, par exemple, possède une structure pointée dans la structure pointée par lParam... ce qui pose un soucis.

Commentaire de Renfield le 09/03/2007 09:26:37 administrateur CS

ZIP mis à jour avec la gestion du CBT_CREATEWND.

j'ai également commenté le code.

Commentaire de lol55 le 07/10/2007 15:11:37 10/10

Super ça marche parfaitement ! :)

Commentaire de Renfield le 07/10/2007 17:54:10 administrateur CS

content de voir que tu t'en soit sortit sans exemple ^^

Commentaire de maxgwen le 29/02/2008 15:32:32

Bonjour tres belles dll moi je cherche a la faire marché sous visual basic un tlb aurai aiter simpa avec car la je me casse la tete , pour le debut ces pas trop compliquer pour l acrochage
Private Declare Function Initialize Lib "HookLIB.dll" (ByVal vhCallBackWnd As Long, ByVal vidHookType As Long) As Integer
Private Declare Function Terminate Lib "HookLIB.dll" (ByVal ProcesHook As Long) As Long

    Process = Initialize(Me.hwnd, WH_CALLWNDPROC)
    Terminate Process

pour sa pa bien dure apres avoir faite le hook ces pour le recuperer que sa me bloque donc merci par avance  a toute ame charitable qui prendrai le temp de m aider ......

Commentaire de Renfield le 29/02/2008 15:41:29 administrateur CS

gaffe:
Private Declare Function Initialize Lib "HookLIB.dll" (ByVal vhCallBackWnd As Long, ByVal vidHookType As Long) As Long

dans le Initialize, tu donnes le hWnd d'une fenetre qui recevra les notifications. comme décris en haut:
"les messages résultants du/des hooks installés sont transférés a une fenetre du client (via SendMessage).
subtilité cependant, le message recu est :

WM_USER + nCode

où nCode est le parametre eponyme dans la fontion de gestion du hook (voir la doc de ces procédures, sur MSDN)"



il te faut être capable (subclassing) d'intercepter lesdits messages.

http://www.vbfrance.com/codes/MODULE-SUBCLASSER_38442.aspx

Commentaire de maxgwen le 29/02/2008 16:20:12

Merci pour ta reponse donc si jai bien compris apres le hoock accrocher on fait du subclassing simple avec la dll user32   les fonction SetWindowLongA & CallWindowProcA  , pour SetWindowLongA je mais quelle parametre pour le handle celui de mon programme ou celui du programme hoocker ? ... merci encore pour cette reponse rapide  

Commentaire de Renfield le 29/02/2008 16:29:51 administrateur CS

celui de la fenetre que tu subclasses
c'est elle qui sera avertie des hooks

Commentaire de FREMYCOMPANY le 04/05/2008 17:36:50

Je suis actuellement en train de faire une application VB.NET qui doit hooker sur la création de fenêtre.

Seulement voila je n'y arrives pas à le faire (en DotNet, impossible de récupérer le "hMod" car DotNet ne load pas une DLL, vu qu'il est compilé "Just-In-Time".

Je dois donc me tourner vers une DLL externe, comme la tienne.
Seulement, je ne sais pas comment la compiler.

Pourrais-tu m'expliquer comment faire ou m'envoyer la DLL complié via mail (f r e m y c o m p a n y (A) y a h o o . f r) ?

Et, tant que j'y suis, peux-tu me confirmer la marche à suivre ?
==> Déclarer mes fonctions avec Declare Sub/Function
==> Appeler Initialize avec le Handle de ma window
==> Recevoir les appels WndProc sur ma window et soustraire WM_USER pour obtenir le type de hook (si c'est un hook)
==> Appeler Terminate sur le FormClosing de ma window

Merci d'avance,
Fremy

Commentaire de Renfield le 16/03/2011 11:36:04 administrateur CS

Même soucis que toi, FREMYCOMPANY, sous C#.
Le hhok ne peut etre lancé depuis une appli .Net, apparement...

du coup, suffit de se faire un Launcher ; une appli qui lancera le hook a ta place :

(C++)

#include <windows.h>

inline __declspec(naked) unsigned int __fastcall bnatoui(char *szsrc) { // Merci à BruNews
  __asm {
    xor     edx, edx
    xor     eax, eax
nbrLoop:
    mov     dl, [ecx]
    cmp     dl, '0'
    jb      short nbrStop
    cmp     dl, '9'
    ja      short nbrStop
    lea     eax, [eax+eax*4]
    sub     dl, '0'
    add     eax, eax
    inc     ecx
    add     eax, edx
    jmp     short nbrLoop
nbrStop:
    ret     0
  }
}

typedef int __stdcall Initialize(unsigned int, int);
typedef void __stdcall Terminate(int);

#pragma comment(linker, "/entry:main")
void main() {
char* command = GetCommandLineA();
char* c = command + strlen(command);
while(*(--c)!=' ');
c++;
unsigned int hWnd = bnatoui(c);
if (hWnd) {
HMODULE hLib = LoadLibraryA("I:\\Papyrus-Intranet\\Core\\HookLib.dll");
if (hLib) {
int h = ((Initialize*)GetProcAddress(hLib, "Initialize"))(hWnd, WH_CBT);
MSG msg;
while(1)
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
if(msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
((Terminate*)GetProcAddress(hLib, "Terminate"))(h);
}
}
}




Ici, je me suis fait un truc taillé pour mon besoin : un hook CBT...
on lance l'appli en donnant le Handle de la fenetre de retour (.Net) en parametre.

_Spy = Process.Start(@"E:\LaunchHook.exe", Handle.ToString());

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Question Injection DLL et Hook [ par Taron31 ] Bonjour, je me pose une question conernant la fonction SetWindowsHookEx, notamment concernant l'injection de la DLL. J'ai en effet un programme de hoo Hook API GetProcAddress [ par NeoUmbrella ] Salut, voila j'ai cod&#233; une dll qui a pour but de trouver toutes les fonctions charg&#233;es via l'API GetProcAddress. Pour ca j'ai fais un hook g SetWindowsHookEx avec programme service [ par Taron31 ] Bonjour, j'ai une question concernant le fonction SetWindowsHookEx. En effet un ami à moi l'utilise dans son programme pour faire un hook d'inactivité API Hooking & accés mémoire [ par simtiers ] Salut !Voilà, j'essaie de faire un API Hooking sur Virtual PC pour le rendre transportable sur une clé USB.Le but est en fait de traiter tous ses appe est ce une api? [ par tezca_system ] Bonjour,je cherche un moyen de verifier le nom de mon executable lors de sa propre executio [api]ecriture dans fichier [ par shadow1779 ] Bonsoir,je suis en train de terminer un code pour modifier des settings de server de jeu en direct en utilisant WriteFile, a chaque fois je fais un sp programmation API win32 [ par poulpixx ] salut a tous,j'aimerai savoir si il n'existerai pas un bon tutorial pour apprendre la programmation windows(API WIN32).merci d'avance. TabControl Win32 API [ par ymca2003 ] Bonjour tout le mondeDans un TabControl, lorsqu'il y a plein d'onglets, on peut mettre l'option multiline. Ce que je trouve aga&#231;ant avec cette op COLLER - API Windows [ par banane_rose ] COLLER ... &#231;a fait 10 minutes que je cherche je trouve toujours rien ................ (pr&#233;cision: je veux coller du texte dans un edit) help Valeurs des variables d'un process (hook ou OCR) [ par microalexx ] Bonjour, Je cherche depuis un moment le moyen de r&#233;cup&#233;rer la liste des variables+valeurs d'un process cible. (sachant que les noms des


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 4,555 sec (3)

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