安装全局消息钩子实现dll窗体程序注入

安装全局消息钩子实现dll窗体程序注入安装全局消息钩子实现 dll 窗体程序注入

说明{

     通过设置全局消息钩子来实现dll注入,然后窗体有相关消息请求的时候就会自动加载注入dll,
然后在入口处做处理就可以了。注入方式简单很多,比代码注入和lsp等注入都简单,就不解释了。
这个也可以传递不同的劫持类型来进行键盘按键记录等。
}
注意{

    1.dll注入期间注入程序不可以退出,否则dll内核句柄有可能被释放。
    2.注意32位和64位注入问题
















}

DLL调用 /* HMODULE h = LoadLibrary(L"xx.dll"); _SetHook SetHook = (_SetHook)GetProcAddress(h,"SetHook"); _UnHook UnHook = (_UnHook)GetProcAddress(h,"UnHook"); SetHook(); Sleep(10000); UnHook(); CloseHandle(h); */ 

//DLL相关代码 #include 
   
     #include 
    
      #include 
     
       #pragma comment(lib,"psapi.lib") #pragma data_seg("Yrrehs") HHOOK HT = NULL; #pragma data_seg() HINSTANCE DLLhinst = NULL; LRESULT CALLBACK CProc(int nCode,WPARAM wParam,LPARAM lParam){ return CallNextHookEx(HT,nCode,wParam,lParam); } //安装钩子 extern "C" __declspec(dllexport) BOOL SetHook(){ HT = SetWindowsHookEx(WH_CALLWNDPROC,CProc,DLLhinst,0); if(HT == NULL){ return false; } return true; } //卸载钩子 extern "C" __declspec(dllexport) BOOL UnHook(){ BOOL HM_BOOL = FALSE; if(HT != NULL){ HM_BOOL = UnhookWindowsHookEx(HT); } return HM_BOOL; } //获得进程名 wchar_t* GetProcessName(DWORD processID){ HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,processID); wchar_t *procName = new wchar_t[MAX_PATH]; GetModuleFileNameEx(hProcess,NULL,procName,MAX_PATH); CloseHandle(hProcess); return procName; } //获得进程名 wchar_t* GetProcessName(wchar_t *FileName){ size_t len = wcslen(FileName); size_t i = len-1; for(;i>=0;i--){ if(FileName[i] == L'\\'){ break; } } wchar_t *temp = FileName + i + 1; return temp; } BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD fdwReason,LPVOID lpvReserved){ DLLhinst = hinstDll; if(DLL_PROCESS_ATTACH == fdwReason){ wchar_t *procName = GetProcessName(GetCurrentProcessId()); if(_wcsicmp(L"xxx.exe",GetProcessName(procName))==0){ //XXXXXX } } if(DLL_PROCESS_DETACH == fdwReason){ } return TRUE; } 
      
     
   






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177662.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午6:59
下一篇 2026年3月26日 下午7:00


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号