// 卸载钩子BOOL UnSetGlobalHook(){ if (g_hHook) { UnhookWindowsHookEx(g_hHook); } return TRUE;}
// 共享内存#pragma data_seg("mydata")HHOOK g_hHook = NULL;#pragma data_seg()#pragma comment(linker, "/SECTION:mydata,RWS")


BOOL InjectDll(DWORD dwPid, CHAR szDllName[]){ BOOL bRet = TRUE; HMODULE hDll = NULL; pFnSetGlobalHook SetGlobalHook = NULL; pFnUnSetGlobalHook UnSetGlobalHook = NULL; hDll = LoadLibrary(szDllName); if (hDll == NULL) { ShowError("LoadLibrary"); bRet = FALSE; goto exit; } SetGlobalHook = (pFnSetGlobalHook)GetProcAddress(hDll, "SetGlobalHook"); if (SetGlobalHook == NULL) { ShowError("GetProcAddress SetGlobalHook"); bRet = FALSE; goto exit; } if (!SetGlobalHook()) { printf("钩子安装失败\n"); bRet = FALSE; goto exit; } printf("钩子安装成功,按回车卸载钩子\n"); system("pause"); UnSetGlobalHook = (pFnUnSetGlobalHook)GetProcAddress(hDll, "UnSetGlobalHook"); if (UnSetGlobalHook == NULL) { ShowError("GetProcAddress UnSetGlobalHook"); bRet = FALSE; goto exit; } if (UnSetGlobalHook()) { printf("已将全局钩子卸载\n"); }exit: return bRet;}
8、实验结果

本文地址:网络知识频道 https://www.hkm168.com/jiqiao/927373_4.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!



相关阅读








