监视程序运行得钩子程序

老是觉得钩子很深奥,最近研究了一下,这是我得代码,可以监视哪些程序被运行以及被销毁。

这是钩子得头文件

#ifndef EXEHOOKAPI
#define EXEHOOKAPI __declspec(dllimport)
#endif
#define USER_MSG??WM_USER+1
#define UC_APPSTART??0x80000001
#define UC_APPDESTROY?0x80000002

EXEHOOKAPI BOOL WINAPI SetHook(HWND hExe);

这是cpp文件

#include
#define EXEHOOKAPI __declspec(dllexport)
#include "ExeHook.h"

#pragma data_seg("shared")
HHOOK?g_hProc =NULL;
HWND?g_hForm = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:shared,rws")
// DLL¾ä±ú
HINSTANCE g_hInstDLL = NULL;
//LRESULT CALLBACK HookedShellProc(int nCode, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK HookedShellProc(int nCode, WPARAM wParam, LPARAM lParam)
{?
?switch(nCode)
?{
?case HSHELL_WINDOWCREATED:??
??PostMessage(g_hForm,USER_MSG,UC_APPSTART,LPARAM(wParam));
??break;
?case HSHELL_WINDOWDESTROYED:??
??PostMessage(g_hForm,USER_MSG,UC_APPDESTROY,LPARAM(wParam));
??break;
?}
?return CallNextHookEx(g_hProc, nCode, wParam, lParam);
}

BOOL WINAPI SetHook(HWND hwndExe)
{
?BOOL bRet;
?if(hwndExe)
?{?
??g_hForm=hwndExe;
??g_hProc=SetWindowsHookEx(WH_SHELL, (HOOKPROC) HookedShellProc, g_hInstDLL, 0);

??bRet = (g_hProc!=NULL);
?}
?else
?{
??bRet=UnhookWindowsHookEx(g_hProc);
??g_hProc=NULL;
??g_hForm=NULL;
?}
?return bRet;
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
? if (fdwReason == DLL_PROCESS_ATTACH)
??? g_hInstDLL = hinstDLL;
? return TRUE;
}

?

?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值