VC++实现全局钩子勾住消息对话框

本文详细介绍了如何使用VC++通过WinAPI和钩子技术,实现全局钩子来捕获和监控应用程序的消息对话框,从而进行深入的测试和分析。
摘要由CSDN通过智能技术生成

#ifndef _HOOKAPI_H 
#define _HOOKAPI_H 
 
 
class CHOOKAPI { 
public: 
	LPVOID	pOldFunEntry, pNewFunEntry ;	// 初始函数地址、HOOK后的函数地址 
	BYTE	bOldByte[5], bNewByte[5] ;		// 原始字节、目标字节 
 
public: 
	CHOOKAPI () {} 
	~CHOOKAPI() {} 
	// 实现HOOK API 
	void Hook ( PSTR szModuleName, PSTR szFunName, FARPROC pFun ) 
	{	 
		HMODULE	hMod = ::GetModuleHandleA ( szModuleName ) ; 
		if ( hMod != NULL ) 
		{ 
			pNewFunEntry	= (LPVOID)pFun ; 
			pOldFunEntry	= (LPVOID)GetProcAddress ( hMod, szFunName ) ; 
			bNewByte[0]		= 0xE9 ; 
			*((PDWORD)(&(bNewByte[1])))	= (DWORD)pNewFunEntry - (DWORD)pOldFunEntry - 5 ;  
 
			DWORD   dwProtect, dwWriteByte, dwReadByte ;  
			VirtualProtect ( (LPVOID)pOldFunEntry, 5, PAGE_READWRITE, &dwProtect ); 
			ReadProcessMemory	( GetCurrentProcess(), (LPVOID)pOldFunEntry, bOldByte, 5, &dwReadByte ) ;		 
			WriteProcessMemory	( GetCurrentProcess(), (LPVOID)pOldFunEntry, bNewByte, 5, &dwWriteByte )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值