功能
不用多说了,注入进去,给任意的程序/游戏添加热键
视频测试:
代码
使用方法,创建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
【软件安全逆向社区介绍】

![表情[youhengheng]-学技术网](https://www.52xuejishu.com/wp-content/themes/zibll/img/smilies/youhengheng.gif)

