71 lines
2.2 KiB
C
71 lines
2.2 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "common.h"
|
||
|
#include "const.h"
|
||
|
|
||
|
void CreatePipe();
|
||
|
|
||
|
// jichi 3/7/2014: Add guessed comment
|
||
|
struct HookParam
|
||
|
{
|
||
|
// jichi 8/24/2013: For special hooks.
|
||
|
typedef void(*text_fun_t)(DWORD esp, HookParam *hp, BYTE index, DWORD *data, DWORD *split, DWORD *len);
|
||
|
typedef bool(*filter_fun_t)(LPVOID str, DWORD *len, HookParam *hp, BYTE index); // jichi 10/24/2014: Add filter function. Return true if skip the text
|
||
|
typedef bool(*hook_fun_t)(DWORD esp, HookParam *hp); // jichi 10/24/2014: Add generic hook function, return false if stop execution.
|
||
|
|
||
|
unsigned __int64 address; // absolute or relative address
|
||
|
short offset, // offset of the data in the memory
|
||
|
index, // deref_offset1
|
||
|
split, // offset of the split character
|
||
|
split_index; // deref_offset2
|
||
|
DWORD module; // hash of the module
|
||
|
DWORD type; // flags
|
||
|
WORD length_offset; // index of the string length
|
||
|
DWORD user_value; // 7/20/2014: jichi additional parameters for PSP games
|
||
|
|
||
|
text_fun_t text_fun;
|
||
|
filter_fun_t filter_fun;
|
||
|
hook_fun_t hook_fun;
|
||
|
|
||
|
BYTE hook_len, // ?
|
||
|
recover_len; // ?
|
||
|
HANDLE readerHandle; // Artikash 8/4/2018: handle for reader thread
|
||
|
};
|
||
|
|
||
|
struct ThreadParam // From hook
|
||
|
{
|
||
|
DWORD pid; // jichi: 5/11/2014: The process ID
|
||
|
unsigned __int64 hook; // Artikash 6/6/2018: The insertion address of the hook
|
||
|
unsigned __int64 retn; // jichi 5/11/2014: The return address of the hook
|
||
|
unsigned __int64 spl; // jichi 5/11/2014: the processed split value of the hook paramete
|
||
|
};
|
||
|
|
||
|
struct InsertHookCmd // From host
|
||
|
{
|
||
|
InsertHookCmd(HookParam hp, std::string name = "") : hp(hp) { strncpy(this->name, name.c_str(), 500); };
|
||
|
int command = HOST_COMMAND_NEW_HOOK;
|
||
|
HookParam hp;
|
||
|
char name[MESSAGE_SIZE] = {};
|
||
|
};
|
||
|
|
||
|
struct RemoveHookCmd // From host
|
||
|
{
|
||
|
RemoveHookCmd(unsigned __int64 address) : address(address) {};
|
||
|
int command = HOST_COMMAND_REMOVE_HOOK;
|
||
|
unsigned __int64 address;
|
||
|
};
|
||
|
|
||
|
struct ConsoleOutputNotif // From hook
|
||
|
{
|
||
|
ConsoleOutputNotif(std::string message = "") { strncpy(this->message, message.c_str(), 500); };
|
||
|
int command = HOST_NOTIFICATION_TEXT;
|
||
|
char message[MESSAGE_SIZE] = {};
|
||
|
};
|
||
|
|
||
|
struct HookRemovedNotif // From hook
|
||
|
{
|
||
|
HookRemovedNotif(unsigned __int64 address) : address(address) {};
|
||
|
int command = HOST_NOTIFICATION_RMVHOOK;
|
||
|
unsigned __int64 address;
|
||
|
};
|