apispylib.cpp

来自「《windows程序设计》王艳平版的书籍源代码」· C++ 代码 · 共 39 行

CPP
39
字号
/////////////////////////////////////////////
// APISpyLib.cpp文件

#include <windows.h>
#include "APIHook.h"
#include "APISpyLib.h"

void HookProc();

// 共享内存数据,以便初始化下面的CAPIHook对象
CMyShareMem g_shareData(FALSE);

// HOOK主程序指定的API函数
CAPIHook g_orgFun(g_shareData.GetData()->szModName, 
		       g_shareData.GetData()->szFuncName, (PROC)HookProc);

void NotifyCaller()
{
	CMyShareMem mem(FALSE);
	::SendMessage(mem.GetData()->hWndCaller, HM_SPYACALL, 0, 0);
}

// 使用这个函数替代要HOOK的API
__declspec(naked)void HookProc()
{
	// 通知主程序
	NotifyCaller();

	// 跳转到原来的函数
	DWORD dwOrgAddr;
	dwOrgAddr = (DWORD)PROC(g_orgFun);
	__asm
	{
		mov eax, dwOrgAddr;
		jmp eax;
	}
	// 永远运行不到这里
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?