给任意程序添加快捷热键的DLL代码

功能

不用多说了,注入进去,给任意的程序/游戏添加热键

视频测试:

代码

使用方法,创建dll项目,粘贴编译可用

如何注入?导入表注入/劫持注入即可,内部视频均有讲解。

#include <windows.h>

// 热键 ID
#define HOTKEY_ID 1

// 线程句柄
static HANDLE g_hThread = NULL;
// 是否退出标志
static bool g_bRunning = true;

// 测试函数导出
extern "C" __declspec(dllexport) int TestFuction1()
{
	MessageBoxA(NULL, "导出函数!", "提示", MB_OK);
	return 0;
}

// 将来要调用的自己的函数
void myfunc()
{
	__asm
	{
		mov eax, 0x402FD0 //函数地址
		call eax //功能call的调用
	}
}

// 热键监视线程
DWORD WINAPI HotkeyThread(LPVOID)
{
	// 注册全局热键 F5
	if (!RegisterHotKey(NULL, HOTKEY_ID, 0, VK_F5))
	{
		MessageBoxA(NULL, "注册热键失败 (可能权限不够或热键已被占用)", "HotkeyDLL", MB_ICONERROR);
		return 0;
	}

	MSG msg;
	while (g_bRunning && GetMessage(&msg, NULL, 0, 0))
	{
		if (msg.message == WM_HOTKEY && msg.wParam == HOTKEY_ID)
		{
			//MessageBoxA(NULL, "F5 pressed!", "HotkeyDLL", MB_OK | MB_ICONINFORMATION);
			myfunc();
		}
	}

	UnregisterHotKey(NULL, HOTKEY_ID);
	return 0;
}

// DLL 入口函数
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID)
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
		g_bRunning = true;
		// 创建热键监视线程
		g_hThread = CreateThread(NULL, 0, HotkeyThread, NULL, 0, NULL);
		break;

	case DLL_PROCESS_DETACH:
		g_bRunning = false;
		// 向线程发送一个空消息,促使它退出
		PostThreadMessage(GetThreadId(g_hThread), WM_QUIT, 0, 0);
		if (g_hThread)
		{
			WaitForSingleObject(g_hThread, 1000);
			CloseHandle(g_hThread);
			g_hThread = NULL;
		}
		break;
	}
	return TRUE;
}

加入我们的软件安全逆向社区,从0学起!老师精心指导!干货满满!

详情戳我:https://flowus.cn/share/e35138ad-7dbe-4390-bdcb-886540fe32f4?code=7U33KP
【软件安全逆向社区介绍】

请登录后发表评论