www.pudn.com > API Hook 工具相关代码 apihooktest.rar > Hooks.h
/*****************************************************************************
Filename: Hooks.h
Copyright(C) XXXXXXXXXXXXX
Created: 2004-07-09
Author: jyan
Abstract:
实现 HookApi 功能,实现方法是在 系统代码 和 Jmp 代码中切换
Modified History:
Who When Modify
*****************************************************************************/
#ifndef _HOOKS_API_H
#define _HOOKS_API_H
#include "hookapiinterface.h"
#include "string"
#pragma warning(disable: 4786)
#include "map"
using namespace std;
struct HookFunInfo
{
char m_szSysBuf[5];
char m_szMyBuf[5];
DWORD m_dwMyAdr;
DWORD m_dwSysAdr;
BOOL Init(DWORD dwMyAdr, DWORD dwSysAdr);
void SysToMy();
void MyToSys();
};
class CHookApi
{
public:
CHookApi();
virtual ~CHookApi();
BOOL HookFun(DWORD dwMyAdr, DWORD dwSysAdr);
void UnHookFun(DWORD dwMyAdr);
BOOL IsHook(DWORD dwMyAdr);
void SysToMy(DWORD dwMyAdr);
void MyToSys(DWORD dwMyAdr);
void HookFunFromConfigFile();
private:
map m_infos;
typedef map::iterator MAP_ITE;
};
typedef struct tagExportFunInfo
{
WORD wIndex;
DWORD dwOffset;
string strFunName;
}EXPORT_FUN_INFO, *PEXPORT_FUN_INFO;
class CHookHelper : public IHookHelper
{
public:
CHookHelper();
virtual ~CHookHelper();
virtual void Enter(DWORD dwMineAdr);
virtual void Leave(DWORD dwMineAdr);
virtual void Log(const char* pContent);
virtual void SetLogFilePath(const char* pLogFile);
virtual const char* GetLogFilePath();
virtual HANDLE HookProce(const char* pszExeFile, const char* pszDllFile, BOOL bSuspend);
CHookApi hookApi;
private:
string m_strLogFile;
};
#endif