Winapi GetAsyncKeyState在系统启动时不工作
今天,我正在构建一个简单的键盘记录器应用程序(不,不,不,不,不,不是为了你所想的…)。我使用的是GetAsyncKeyState(我知道我应该使用SetWindowsHookEx,但这方面的好教程不多——我很喜欢WinApi),在autostart上启动程序时遇到问题。我正在将它添加到适当的注册表中,一切正常(程序在启动时启动),但GetAsyncKeyState无法读取任何键(如果我手动启动它,它就会正常工作)。缩短代码:Winapi GetAsyncKeyState在系统启动时不工作,winapi,registry,windows-7-x64,Winapi,Registry,Windows 7 X64,今天,我正在构建一个简单的键盘记录器应用程序(不,不,不,不,不,不是为了你所想的…)。我使用的是GetAsyncKeyState(我知道我应该使用SetWindowsHookEx,但这方面的好教程不多——我很喜欢WinApi),在autostart上启动程序时遇到问题。我正在将它添加到适当的注册表中,一切正常(程序在启动时启动),但GetAsyncKeyState无法读取任何键(如果我手动启动它,它就会正常工作)。缩短代码: HWND Stealth; if(!AllocConsole()){
HWND Stealth;
if(!AllocConsole()){
Sleep(1000*5);
}
while((Stealth = FindWindowA("ConsoleWindowClass", NULL))==NULL){
Sleep(1000*5);
}
//ShowWindow(Stealth,0);
char i;
while (keylogger->working){
for(i = 8; i <= 190; i++){
if (GetAsyncKeyState(i) == -32767){
cout << i << endl; // No output here
}}}
HWND隐身;
如果(!alloconsole()){
睡眠(1000*5);
}
while((隐形=FindWindowA(“ConsoleWindowClass”,NULL))==NULL){
睡眠(1000*5);
}
//显示窗口(隐形,0);
char i;
同时(键盘记录器->工作){
for(i=8;iGetAsyncKeyState()仅适用于调用进程的键盘状态。如果您打算在其他进程中捕获击键,则需要使用SetWindowsHookEx()相反,您的钩子必须实现为DLL,这样才能将其注入其他进程。您没有告诉我们您是如何从windows资源管理器启动恶意软件程序的。我很困惑。首先,您说您正在使用自动启动。现在您说您是从资源管理器启动的。是哪一个?我知道您是asking我是如何以正常方式启动它的-但如果它用于autostart,我只需重新启动计算机-正如我认为我应该测试它在autostart中的工作方式:)我不知道你在说什么这难道不意味着这根本不应该工作吗?如果从windows资源管理器手动启动,它实际上可以工作-当它与windows一起启动时,它停止工作(通过autostart)