资源简介
windows后台监听键盘事件,使用hook(钩子)做的,记得先编hook.dll,再去编示例程序,hook.dll,会把监听到的按键写到hook文件夹下面的log.txt文件里面
代码片段和文件信息
#include
#include
#include
#include “resource.h“
#pragma comment(lib“DbgHelp.lib“)
//---------------------------用户界面部分-------------------------------------------------
BOOL CALLBACK DialogProc(HWND hWnd UINT uMsg WPARAM wParam LPARAM lParam);
BOOL OnHook();
BOOL OffHook();
BOOL EnablePrivilege();
int WINAPI WinMain(HINSTANCE hInstance HINSTANCE hPrevInstance LPSTR lpCmdLine int nShowCmd)
{
HWND hWnd;
MSG msg;
// 创建窗体
hWnd = CreateDialog(hInstance MAKEINTRESOURCE(IDD_DIALOG) NULL DialogProc);
ShowWindow(hWnd SW_SHOW);
// 消息循环
while (GetMessage(&msg NULL 0 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
// 对话框消息出来程序
BOOL CALLBACK DialogProc(HWND hWnd UINT uMsg WPARAM wParam LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG: // 初始化对话框:
EnablePrivilege();
break;
case WM_COMMAND: // 点击按钮
switch (LOWORD(wParam))
{
case IDC_BUTTON_ON: // 点击挂钩按钮
OnHook();
break;
case IDC_BUTTON_OFF: // 点击脱钩按钮
OffHook();
break;
default:
break;
}
break;
case WM_CLOSE: // 关闭窗口
DestroyWindow(hWnd);
break;
case WM_DESTROY: // 窗口销毁
PostQuitMessage(0);
break;
}
return FALSE;
}
//---------------------------------------------------钩子部分------------------------------------------------------------
typedef LRESULT(CALLBACK *pCallWndProc)(int WPARAM LPARAM);
HHOOK hHook;
BOOL OnHook() // 挂钩
{
// 加载钩子dll中的假Windows消息循环
HMODULE hDll = LoadLibrary(TEXT(“hookdll.dll“));
pCallWndProc CallWndProc = (pCallWndProc)GetProcAddress(hDll “CallWndProc“);
//// 创建淄博热力进程
//TCHAR szFileName[MAX_PATH];
//ZeroMemory(&szFileName MAX_PATH * sizeof(TCHAR));
//GetCurrentDirectory(MAX_PATH szFileName);
//_tcscat_s(szFileName TEXT(“\\App\\app.exe“));
//STARTUPINFO si;
//ZeroMemory(&si sizeof(si));
//si.cb = sizeof(si);
//PROCESS_INFORMATION pi;
//ZeroMemory(&pi sizeof(pi));
//CreateProcess(szFileName TEXT(“ --enable-npapi --enable-eloamPlugin“) NULL NULL FALSE 0 NULL NULL &si &pi);
////WaitForSingleobject(pi.hProcess INFINITE);
// 挂钩
hHook = SetWindowsHookExW(WH_KEYBOARD_LL CallWndProc GetModuleHandle(TEXT(“hookdll.dll“)) 0);
int error = GetLastError();
char message[100] = ““;
char buf[50] = ““;
_itoa_s(error buf 10);
strcat_s(message “挂钩!错误码:“);
strcat_s(message buf);
MessageBoxA(NULL message “钩子“ MB_OK);
return TRUE;
}
BOOL OffHook() // 脱钩
{
UnhookWindowsHookEx(hHook);
MessageBox(NULL TEXT(“脱钩成功!“) TEXT(“钩子“) MB_OK);
return TRUE;
}
// -----------------------------------------提升权限-------------------------------------------------------------------
BOOL EnablePrivilege()
{
HANDLE hToken;
if (OpenProcessToken(GetCurrentProcess() TOKEN_ADJUST_PRIVILEGES &hToken))
{
TOKEN_PRIVILEGES tkp;
LookupPrivilegeValue(NULL SE_DEBUG_NAME &tkp.Privileges[0].Luid);//修改进程权限
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken FALSE &tkp sizeo
- 上一篇:icp C++实现包含测试数据
- 下一篇:《C语言库函数速查手册》
相关资源
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- usb键盘(MyUSB_HID_KEIL)
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- windows hook 框架(detours )
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
评论
共有 条评论