#ifndef __VHOOK_H #define __VHOOK_H #include #include class VHookStatic { public: VHookStatic(DWORD dwInterface); ~VHookStatic(); DWORD HookFunction(DWORD dwHook,int idx); DWORD UnHookFunction(int idx); void UnHookAll(); private: DWORD* dwVTable; std::map m_Hooks; }; class VHook { public: VHook(DWORD _dwInterface); ~VHook(); DWORD HookFunction(DWORD dwHook,int idx); DWORD UnHookFunction(int idx); void UnHookAll(); inline PDWORD GetOldVTable() { return dwOldVTable; } DWORD dwInterface; private: MEMORY_BASIC_INFORMATION mba; DWORD* dwOldVTable; DWORD* dwVTable; DWORD dwSize; }; class CEHook { public: CEHook(DWORD dwInterface); ~CEHook(); static DWORD HookVTable(PDWORD dwVTable,DWORD dwHook,DWORD dwIndex); DWORD BuildDetour(DWORD dwOriginal,DWORD dwHook); DWORD HookFunction(DWORD dwHook,DWORD dwIndex); void UnHookFunction(DWORD dwIndex); void UnHookAll(); private: static size_t GateSize; PDWORD dwVTable; //Index, std::map > m_Hooks; }; #endif