This repository was archived by the owner on Feb 11, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathmacros.h
37 lines (31 loc) · 1.43 KB
/
macros.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#pragma once
/*From EB*/
#define IS_NULL_RETN(OBJECT, ADDR, RETN) if ((DWORD*)(OBJECT + ADDR) == nullptr) { return RETN; }
#define MAKE_GET(NAME, TYPE, OFFSET) \
TYPE##* Get##NAME##() { \
if(this==nullptr) {DWORD TT = 0; printf("MAKE_GET ERROR %p\n",OFFSET); return reinterpret_cast<TYPE*>(&TT); } \
DWORD Address = (DWORD)this + static_cast<__int32>(OFFSET); \
DWORD tmp; \
SIZE_T numread;\
if (ReadProcessMemory((HANDLE)-1, (LPVOID)Address, &tmp, sizeof(DWORD), &numread) == FALSE)\
{\
printf("MAKE_GET ERROR %p\n",Address);\
DWORD TT = 0; return reinterpret_cast<TYPE*>(&TT);\
}\
return reinterpret_cast<TYPE*>((DWORD) this + static_cast<__int32>(OFFSET)); \
}
#define MAKE_SDATA(NAME, TYPE, OFFSET) \
__forceinline TYPE##* Get##NAME##() { \
return (TYPE*)((DWORD) this->GetSDataArray() + static_cast<__int32>(OFFSET)); \
}
#define MAKE_GET_SET(NAME, TYPE, OFFSET) TYPE*## Get##NAME##() { return (TYPE*)(this + static_cast<__int32>(OFFSET)); } \
void Set##NAME##(TYPE value) { *Get##NAME() = value; }
#define MAKE_BOOL(NAME, OFFSET, SHIFT) inline bool Get##NAME##() { return (*(byte*)(this + static_cast<__int32>(OFFSET)) ##SHIFT) == 1; }
#ifndef DLLEXPORT
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT __declspec(dllexport)
//#define DLLEXPORT __declspec(dllimport)
#endif
#define MAKE_RVA(ADDRESS) ( (DWORD)GetModuleHandleA(0) + (DWORD)##ADDRESS )
#define MAKEPTR(ptr) *(DWORD*)((DWORD)GetModuleHandleA(0) + (DWORD)##ptr)