线程键盘钩子实例-游戏窗口中呼出外挂(VC、SDK)

本文介绍了一个使用DLL注入技术实现在游戏中进行键盘HOOK的方法。通过编写C++代码实现DLL文件,该DLL能够监听F10按键并在按下时弹出对话框。此外,还提供了一个EXE文件作为注入器来启动HOOK。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

///
//GameDll.cpp
//生成DLL文件
//
#include <windows.h> #include "resource.h" HHOOK hkGame; int CALLBACK DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch(uMsg) { case WM_CLOSE: { MessageBox(0,"关闭对话框",0,0); EndDialog(hDlg,0); } break; } return 0; } LRESULT CALLBACK KeyboardProc( int code, // hook code WPARAM wParam, // virtual-key code LPARAM lParam // keystroke-message information ) { if (code<0) return CallNextHookEx(hkGame,code,wParam,lParam); if (wParam==VK_F10 && lParam&0x40000000) { MessageBox(0,"F10被按下",0,0); DialogBox(GetModuleHandle("GameDll.dll"),MAKEINTRESOURCE(IDD_DIALOG1),FindWindow(NULL,"MyGame"),DlgProc); //第一个参数也可以写作:(HMODULE)LoadLibrar("GameDll.dll") return 1; } return 0; } extern "C" __declspec(dllexport) void StartHook() { DWORD TID=GetWindowThreadProcessId(FindWindow(NULL,"MyGame"),NULL); if (!TID) { MessageBox(0,"没打开游戏!",0,MB_OK); return; } hkGame=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("GameDll.dll"),TID); if (!hkGame) MessageBox(0,"HOOK失败!",0,MB_OK); }

 

// EXE.cpp : Defines the entry point for the application.
//注入器

#include "stdafx.h"
#include "resource.h"
#pragma comment(lib,"GameDll.lib")

__declspec(dllimport) void StartHook();

int CALLBACK DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_CLOSE:
        EndDialog(hDlg,0);
        break;
    case WM_COMMAND:
        {
            if (LOWORD(wParam)==IDB_HOOK)
            {
                StartHook();
            }
        }
        break;
    }
    return 0;
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
     // TODO: Place code here.
    return DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DlgProc);
}

转载于:https://www.cnblogs.com/littleevil/archive/2012/05/31/2527304.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值