📄 hookjmp.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 + -