以下是部分程序,在VC++6.0 Plat SDK 2003 SP1下编译通过
#include <windows.h>
#include "APIHook.h"
extern CAPIHook g_OpenProcess;
// 自定义OpenProcess函数
#pragma data_seg("YCIShared")
HHOOK g_hHook = NULL;
DWORD dwCurrentProcessId=0;
#pragma data_seg()
HANDLE WINAPI Hook_OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId)
{
typedef HANDLE (WINAPI *PFNTERMINATEPROCESS)(DWORD, BOOL,DWORD);
if(dwProcessId != dwCurrentProcessId)
{
return ((PFNTERMINATEPROCESS)(PROC)g_OpenProcess)(dwDesiredAccess,bInheritHandle,dwProcessId);
}
return 0;
}
// 挂钩OpenProcess函数
CAPIHook g_OpenProcess("kernel32.dll", "OpenProcess",
(PROC)Hook_OpenProcess);
///////////////////////////

在VC++6.0及Plat SDK 2003 SP1环境下,该博客展示了如何实现APIHOOK来拦截并自定义OpenProcess函数。通过挂接WH_GETMESSAGE钩子,实现了对指定进程ID的访问控制,当进程ID不匹配时调用原始OpenProcess函数。
最低0.47元/天 解锁文章
558

被折叠的 条评论
为什么被折叠?



