hookjmp.cpp
来自「《Windows应用程序捆绑核心编程》配套源码」· C++ 代码 · 共 48 行
CPP
48 行
// 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 + =
减小字号Ctrl + -
显示快捷键?