#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);
///////////////////////////////////////////////////////////////////////////
static HMODULE ModuleFromAddress(PVOID pv)
{
MEMORY_BASIC_INFORMATION mbi;
if(::VirtualQuery(pv, &mbi, sizeof(mbi)) != 0)
{
return (HMODULE)mbi.AllocationBase;
}
else
{
return NULL;
}
}
static LRESULT WINAPI GetMsgProc(int code, WPARAM wParam, LPARAM lParam)
{
return ::CallNextHookEx(g_hHook, code, wParam, lParam);
}
BOOL WINAPI SetSysHook(BOOL bInstall, DWORD dwThreadId)
{
BOOL bOk;
dwCurrentProcessId=dwThreadId;
if(bInstall)
{
g_hHook = ::SetWindowsHookEx(WH_GETMESSAGE, GetMsgProc,
ModuleFromAddress(GetMsgProc), 0);
bOk = (g_hHook != NULL);
}
else
{
bOk = ::UnhookWindowsHookEx(g_hHook);
g_hHook = NULL;
}
return bOk;
}
分享到:
相关推荐
进程防杀 Hook OpenProcess 支持xp,server2003,不支持NT2000
API hook API hook API hook
HookAPI开发包 API函数拦截,强大的开发包
Source dll hook API OpenProcess
C++使用hookapi操作windows环境,包含常用的示例:网络、注册表、文件、对话框、进程等HOOK API各种示例源代码
好东西,hook openprocess ring0级
通过拦截TerminateProcess和OpenProcess两个API,防止进程被结束
64位系统的apihook类,方便使用apihook,64位asm很麻烦的..
国外牛人 API hook API 钩子 源码库
HookAPI HookAPI HookAPI HookAPI
自己研究钩子和Dll写的,包括C#和C++中钩子的使用和Dll打包的方法,例子融合了托管和非托管的Dll如何打包和使用。例子都比较全面。适合新手学习交流。
hook openprocess进程免杀
C++Builder ,midas 小程序,api Hook
C C++ HOOK API原理深入剖析 收集与网络。
完整的ring3 hook openprocess 包含 VB 調用例子而且非常穩定
用Apihook实现的打印监控 拦截startDoc函数-Implemented by the print control block Apihook startDoc function
API HOOKAPI HOOKAPI HOOKAPI HOOKAPI HOOKAPI HOOK
API HOOK拦截指定进程发送和接收的网络数据包.zip
APIHook、InlineHook库,使用C++11编写,可将回调函数绑定到类成员函数。代码风格良好,适合学习。
进程防杀 hook openprocess hook openprocess