3#define WIN32_LEAN_AND_MEAN
55 return *
this + offset;
103 data =
new char[_size];
131bool Init(HMODULE lib_module);
139template <
unsigned int Addr,
typename ... Args>
142 ((void(__stdcall *)(Args...))(Addr))(vals ...);
145template <
unsigned int Addr,
typename Result,
typename ... Args>
148 return ((Result(__stdcall *)(Args...))(Addr))(vals ...);
151template <
unsigned int Addr,
typename ... Args>
154 ((void(__cdecl *)(Args...))(Addr))(vals ...);
157template <
unsigned int Addr,
typename Result,
typename ... Args>
160 return ((Result(__cdecl *)(Args...))(ASI::AddrOf(Addr)))(vals ...);
163template <
unsigned int Addr,
typename ... Args>
166 ((void(__thiscall *)(
void *, Args...))(Addr))(_this.
ptr, vals ...);
169template <
unsigned int Addr,
typename Result,
typename ... Args>
172 return ((Result(__thiscall *)(
void *,
173 Args...))(ASI::AddrOf(Addr)))(_this.
ptr,
177template <
unsigned int Offset,
typename ... Args>
180 ((void(__thiscall *)(
void *, Args...))(*((*_this)[Offset])))(_this.
ptr,
184template <
unsigned int Offset,
typename Result,
typename ... Args>
187 return ((Result(__thiscall *)(
void *,
188 Args...))(*((*_this)[Offset])))(_this.
ptr,
192template <
typename ... Args>
195 ((void(__thiscall *)(
void *, Args...))(FPtr))(_this.
ptr, vals ...);
198template <
typename Result,
typename ... Args>
201 return ((Result(__thiscall *)(
void *, Args...))(FPtr))(_this.
ptr, vals ...);
ASI::Pointer operator[](int offset)
int AddrOf(int offset)
returns "real" virtual address of given memory offset
Result CallGlobalCDeclFunc(Args... vals)
void CallClassVirtualProc(ASI::Pointer _this, Args... vals)
bool __stdcall CheckSFVersion(SF_Version sf_version)
check version of the game that was hooked into
bool BeginRewrite(MemoryRegion &mem_region)
allows rewriting code in a given memory region by overwriting permissions for that memory region
unsigned int APPMAIN_OFFSET
void CallGlobalCDeclProc(Args... vals)
Result CallGlobalFunc(Args... vals)
bool EndRewrite(MemoryRegion &mem_region)
ends rewriting by restoring old permissions in a given memory region
Result CallClassFunc(ASI::Pointer _this, Args... vals)
Result CallAsClassFunc(void *FPtr, ASI::Pointer _this, Args... vals)
bool Init(HMODULE lib_module)
required for everything to work... why?
Result CallClassVirtualFunc(ASI::Pointer _this, Args... vals)
void CallGlobalProc(Args... vals)
void CallAsClassProc(void *FPtr, ASI::Pointer _this, Args... vals)
void CallClassProc(ASI::Pointer _this, Args... vals)
MemoryRegion is used for rewriting code in a given memory block.
MemoryRegion(int off, int len)
Pointer operator-(int offset)
bool operator==(Pointer p)
Pointer operator+(int offset)
bool operator!=(Pointer p)
Pointer operator[](int offset)
Pointer(unsigned int val)
Pointer(const Pointer &p)