2018-08-23 11:53:23 -04:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
// texthook.h
|
|
|
|
// 8/24/2013 jichi
|
|
|
|
// Branch: IHF_DLL/IHF_CLIENT.h, rev 133
|
|
|
|
//
|
|
|
|
// 8/24/2013 TODO:
|
|
|
|
// - Clean up this file
|
|
|
|
// - Reduce global variables. Use namespaces or singleton classes instead.
|
|
|
|
#include "common.h"
|
2018-08-24 12:50:20 -04:00
|
|
|
#include "types.h"
|
2018-08-23 11:53:23 -04:00
|
|
|
|
|
|
|
extern int currentHook;
|
|
|
|
extern DWORD trigger;
|
|
|
|
|
|
|
|
// jichi 9/25/2013: This class will be used by NtMapViewOfSectionfor
|
|
|
|
// interprocedure communication, where constructor/destructor will NOT work.
|
2018-08-23 15:25:33 -04:00
|
|
|
|
2018-08-23 11:53:23 -04:00
|
|
|
class TextHook
|
|
|
|
{
|
2018-08-25 15:45:25 -04:00
|
|
|
bool InsertHookCode();
|
|
|
|
bool InsertReadCode();
|
2018-10-31 12:04:32 -04:00
|
|
|
int GetLength(DWORD base, DWORD in); // jichi 12/25/2013: Return 0 if failed
|
2018-08-25 15:45:25 -04:00
|
|
|
void RemoveHookCode();
|
|
|
|
void RemoveReadCode();
|
2018-08-23 11:53:23 -04:00
|
|
|
public:
|
2018-08-23 15:25:33 -04:00
|
|
|
HookParam hp;
|
2018-10-31 12:04:32 -04:00
|
|
|
char hookName[HOOK_NAME_SIZE];
|
2018-08-26 15:14:45 -04:00
|
|
|
BYTE trampoline[120];
|
2018-10-11 12:58:30 -04:00
|
|
|
HANDLE readerHandle;
|
2018-08-23 11:53:23 -04:00
|
|
|
|
2018-08-25 15:45:25 -04:00
|
|
|
bool InsertHook();
|
2018-10-31 12:04:32 -04:00
|
|
|
void InitHook(const HookParam &hp, LPCSTR name, DWORD set_flag);
|
2018-11-04 20:48:27 -05:00
|
|
|
void Send(DWORD dwDataBase);
|
2018-08-25 15:45:25 -04:00
|
|
|
void ClearHook();
|
2018-08-23 11:53:23 -04:00
|
|
|
};
|
|
|
|
|
2018-08-25 15:45:25 -04:00
|
|
|
enum { MAX_HOOK = 300 };
|
2018-08-23 11:53:23 -04:00
|
|
|
enum { HOOK_SECTION_SIZE = MAX_HOOK * sizeof(TextHook) * 2, HOOK_BUFFER_SIZE = MAX_HOOK * sizeof(TextHook) };
|
|
|
|
|
2018-08-25 15:45:25 -04:00
|
|
|
extern TextHook *hookman;
|
|
|
|
extern bool running;
|
2018-10-31 12:04:32 -04:00
|
|
|
extern HANDLE hookPipe;
|
|
|
|
extern std::unique_ptr<WinMutex> sectionMutex;
|
2018-08-23 11:53:23 -04:00
|
|
|
|
|
|
|
// EOF
|