저는 C#에서 가상 키보드로 정렬 할 수있는 빠른 도구를 작성하고 있습니다. 현재 SendKeys을 사용 중입니다. Keyloggers가 열쇠를 붙잡을 지 알고 싶기 때문에 this code을 찾았지만 mfc가 설치되어 있지 않아서 컴파일 할 수없고 실행도 안됩니다.글로벌 키보드 후크 스파이?
Keyloggers로 SendKeys를 기록한 경우 키를 어떻게 만들 수 있습니까? 내 코드를 테스트하기 위해 단일 exe에서 실행되는 코드 (아래의 스 니펫)?
#include <Windows.h>
static UINT uMsg = 0;
static HWND hWndMain = 0;
static HHOOK hKeyHook = NULL ;
#pragma data_seg()
HINSTANCE hInstance = 0;
HOOKPROC lpfnHookProc = 0;
LRESULT __stdcall KeyboardFunc (int nCode, WPARAM wParam, LPARAM lParam)
{
BOOL bPassToChain;
char szDebug [100];
// Check for exception cases...
if (nCode < 0)
return (CallNextHookEx (hKeyHook, nCode, wParam, lParam));
if (nCode == HC_NOREMOVE)
return (CallNextHookEx (hKeyHook, nCode, wParam, lParam));
switch (wParam)
{
case VK_F2:
wsprintf (szDebug, "F2 key message, lparam = 0x%X\n", lParam);
OutputDebugString (szDebug);
// only send on keydown, not keyup (autorepeat)
if (HIWORD (lParam) & 0xC000)
{
OutputDebugString ("F2 Keyup\n");
}
else
{
wsprintf (szDebug, "Sending F2 keydown message %d to hwnd 0x%X\n",
uMsg, hWndMain);
OutputDebugString (szDebug);
PostMessage (hWndMain, uMsg, 0, 0);
}
bPassToChain = FALSE;
break;
default :
bPassToChain = TRUE ;
break ;
}
if (bPassToChain)
return (CallNextHookEx (hKeyHook, nCode, wParam, lParam));
else
return TRUE ; // We have processed this key
}
BOOL __stdcall InstallExampleKeyboardHook (HWND hWnd, UINT uMyMsg)
{
hWndMain = hWnd ;
uMsg = uMyMsg;
lpfnHookProc = (HOOKPROC) KeyboardFunc ;
hKeyHook = SetWindowsHookEx (WH_KEYBOARD, lpfnHookProc, hInstance, NULL);
if (hKeyHook)
return TRUE ;
else
return FALSE ;
}
: 모듈 핸들을 얻을, 당신은 이런 식으로 뭔가가 필요합니다. 그러나 나는 어떤 msg 이벤트도 얻지 못한다 :/ –
글쎄, SetWindowsHookEx를 사용하는 LL 키보드 후크 어플리케이션을 작성한 적이 있었고 완벽하게 디버거가되었다. 그냥 VS 디버거에서 실행하고 KeyboardFunc에 중단 점을 넣어 - 아무 문제가 작동합니다. –
@ acidzombie24의 경우, 메시지 루프가있는 WinMain이 필요합니다. 그렇지 않으면 프로그램을 시작한 후에 프로그램이 immediaelly를 종료하기 때문입니다. –