本文实例讲述了C++实现修改函数代码HOOK的封装方法,分享给大家供大家参考。具体实现方法如下:
一、对外的接口如下:
1. 类初始化时对函数HOOK
2. 取消挂钩:
void UnHook();
3. 重新挂钩:
void ReHook();
在初始化时HOOK的代码:
*(DWORD*)(m_btNewBytes+1) = (DWORD)pfnHook;
8个字节的代码地址 0xB8, 0x00, 0x00,0x40,0x00,0xFF,0xE0,0x00 只要把第二位和第三位的数据改成函数的地址,调用原先的函数时就会调到自定义的函数执行.
二、实现方法:
.h头文件如下:
#ifndef _ULHOOK_H__
#define _ULHOOK_H__
#include
#pragma once
class CULHook
{
public:
CULHook(LPSTR lpszModName, LPSTR lpszFuncNme, PROC pfnHook);
~CULHook(void);
//取消挂钩
void UnHook();
//重新挂钩
void ReHook();
protected:
PROC m_pfnOrig;
BYTE m_btNewBytes[8];
BYTE m_btOldBytes[8];
HMODULE m_hModule;
};
#e