C 键盘挂钩
我试着用c语言编写一个程序,对一些键盘键的使用情况进行统计分析。 首先,我想使用全局钩子创建一个键盘记录器,并将其记录到文件中 以下是我编写的代码的第一部分:C 键盘挂钩,c,windows,winapi,dll,keyboard-hook,C,Windows,Winapi,Dll,Keyboard Hook,我试着用c语言编写一个程序,对一些键盘键的使用情况进行统计分析。 首先,我想使用全局钩子创建一个键盘记录器,并将其记录到文件中 以下是我编写的代码的第一部分: #include <stdio.h> #include <Windows.h> HHOOK hook; LRESULT CALLBACK hook_proc(int nCode, WPARAM wParam, LPARAM lParam) { if (wParam == WM_KEYDOWN)
#include <stdio.h>
#include <Windows.h>
HHOOK hook;
LRESULT CALLBACK hook_proc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (wParam == WM_KEYDOWN)
{
KBDLLHOOKSTRUCT kbdstruct = *((KBDLLHOOKSTRUCT*)lParam);
char ch = kbdstruct.vkCode;
printf("%c", ch);
}
return CallNextHookEx(hook, nCode, wParam, lParam);
}
void main()
{
MSG msg;
hook = SetWindowsHookEx(WH_KEYBOARD_LL, HOOKPROC(hook_proc), NULL, 0);
while (GetMessage(&msg, NULL, 0, 0))
{
}
}
#包括
#包括
钩;
LRESULT回调hook_proc(int-nCode、WPARAM-WPARAM、LPARAM-LPARAM)
{
if(wParam==WM_KEYDOWN)
{
KBDLLHOOKSTRUCT kbdstruct=*((KBDLLHOOKSTRUCT*)LPRAM);
char ch=kbdstruct.vkCode;
printf(“%c”,ch);
}
返回CallNextHookEx(hook、nCode、wParam、lParam);
}
void main()
{
味精;
hook=SetWindowsHookEx(WH\u-KEYBOARD\u-LL,HOOKPROC(hook\u-proc),NULL,0);
while(GetMessage(&msg,NULL,0,0))
{
}
}
SetWindowHookEx
中的第二个参数应该指向外部DLL中的钩子过程。这很好,为什么只打印虚拟代码呢。如何将其转换为“常规密钥”,而不使用每个虚拟密钥的开关盒?有没有有效的方法WH\u键盘LL
(见上文)。至于钥匙本身,KBDLLHOOKSTRUCT
仅提供虚拟钥匙和扫描代码。要将它们转换为字符,请使用、或WH\u KEYBOARD\u LL
不需要DLL。见上文C语言中没有键盘。这个问题似乎有三个问题。因此,我认为它是“太宽”。1:操作系统必须进入您的程序,以便进行HookGePoC()调用。只有当主线程可以安全地中断以进行调用时,它才会这样做。GetMessage()是解决此问题的通用解决方案。2:WH_KEYBOARD\u LL很特别,它不需要DLL。我以前也遇到过第二个问题(在编写我自己的间谍程序时),到目前为止,我发现的最优雅的解决方案是。。。实现您自己的键盘驱动程序,并以某种方式通过编程将其放入客户端系统(或受害者系统:D)。如果你懂俄语,那么我可以给你一些俄语教程的链接。
while()
的无限性是什么?