DLL注入有多种技术,程序中使用WINDOWS消息钩子技术,涉及到一下windows API:
LoadLibrary:载入DLL;
GetProcAddress:根据名称获取DLL中的函数;
SetWindowsHookEx:安装钩子。
注入DLL到进程中,我们定义一个SetHook函数。
void _stdcall SetHook()
{
HWND hWndGame;//获取句柄
hwndGame=::FindWindow(NULL,GAME_WIN_NAME);
//获取进程ID和窗口线程ID
DWORD dwProcessId, dwThreadId;
dwThreadId=::GetWindowThreadProcessId(hWndGame,&dwProcessId);
//安装钩子
g_hHook=::SetWindowsHookEx(WH_KEYBOARD, //键盘钩子
KeyBoardProc, //钩子过程
GetModuleHandle(_T("pvz.dll")),//钩子函数所在的模块
dwThreadId);//窗口线程ID
}