⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hookjmp.cpp

📁 《Windows应用程序捆绑核心编程》配套源码
💻 CPP
字号:
// HookJmp.cpp:使用JMP法进行挂钩.
//
#include "stdafx.h"
#include <afxdllx.h>
#include "HookApi_Jmp.h"

void WINAPI ExampleJmp();
CHookApi_Jmp myJmp;

static AFX_EXTENSION_MODULE HookJmpDLL = { NULL, NULL };
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
	// Remove this if you use lpReserved
	UNREFERENCED_PARAMETER(lpReserved);

	if (dwReason == DLL_PROCESS_ATTACH)
	{
		ExampleJmp();
	}
	else if (dwReason == DLL_PROCESS_DETACH)
	{
        myJmp.SetHookOff(); 
		TRACE0("HOOKJMP.DLL Terminating!\n");
		// Terminate the library before destructors are called
		AfxTermExtensionModule(HookJmpDLL);
	}
	return 1; 
}

//---------------------------------------------------------------------------
// 首先关闭拦截,然后才能调用被拦截的Api 函数. 
int WINAPI JmpMessageBoxA(HWND hWnd, LPCTSTR lpText,LPCTSTR lpCaption,UINT uType )
{ 
	int nReturn=0; 
	myJmp.SetHookOff(); 
	nReturn=MessageBoxA(hWnd,"Hooking MessageBox by Jmp",lpCaption,uType); 
	myJmp.SetHookOn();
	return(nReturn); 
} 

//---------------------------------------------------------------------------
void WINAPI ExampleJmp()
{
	myJmp.HookOneAPI("user32.dll","MessageBoxA",(FARPROC)JmpMessageBoxA);
	myJmp.SetHookOn();
}

⌨️ 快捷键说明

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