HyperDbg/hyperdbg/script-eval/header/ScriptEngineCommonDefinitions.h
2022-06-29 16:13:40 -07:00

400 lines
11 KiB
C

#pragma once
#ifndef SCRIPT_ENGINE_COMMON_DEFINITIONS_H
# define SCRIPT_ENGINE_COMMON_DEFINITIONS_H
typedef struct SYMBOL
{
long long unsigned Type;
long long unsigned Value;
} SYMBOL, *PSYMBOL;
typedef struct SYMBOL_BUFFER
{
PSYMBOL Head;
unsigned int Pointer;
unsigned int Size;
char * Message;
} SYMBOL_BUFFER, *PSYMBOL_BUFFER;
typedef struct SYMBOL_MAP
{
char * Name;
long long unsigned Type;
} SYMBOL_MAP, *PSYMBOL_MAP;
typedef struct ACTION_BUFFER
{
long long unsigned Tag;
long long unsigned CurrentAction;
char ImmediatelySendTheResults;
long long unsigned Context;
} ACTION_BUFFER, *PACTION_BUFFER;
# define SYMBOL_GLOBAL_ID_TYPE 0
# define SYMBOL_LOCAL_ID_TYPE 1
# define SYMBOL_NUM_TYPE 2
# define SYMBOL_REGISTER_TYPE 3
# define SYMBOL_PSEUDO_REG_TYPE 4
# define SYMBOL_SEMANTIC_RULE_TYPE 5
# define SYMBOL_TEMP_TYPE 6
# define SYMBOL_STRING_TYPE 7
# define SYMBOL_VARIABLE_COUNT_TYPE 8
# define SYMBOL_MEM_VALID_CHECK_MASK (1 << 31)
# define SYMBOL_INVALID 9
# define INVALID -999
# define LALR_ACCEPT 999
# define FUNC_INC 0
# define FUNC_DEC 1
# define FUNC_REFERENCE 2
# define FUNC_DEREFERENCE 3
# define FUNC_OR 4
# define FUNC_XOR 5
# define FUNC_AND 6
# define FUNC_ASR 7
# define FUNC_ASL 8
# define FUNC_ADD 9
# define FUNC_SUB 10
# define FUNC_MUL 11
# define FUNC_DIV 12
# define FUNC_MOD 13
# define FUNC_GT 14
# define FUNC_LT 15
# define FUNC_EGT 16
# define FUNC_ELT 17
# define FUNC_EQUAL 18
# define FUNC_NEQ 19
# define FUNC_START_OF_IF 20
# define FUNC_JMP 21
# define FUNC_JZ 22
# define FUNC_JNZ 23
# define FUNC_JMP_TO_END_AND_JZCOMPLETED 24
# define FUNC_END_OF_IF 25
# define FUNC_START_OF_WHILE 26
# define FUNC_END_OF_WHILE 27
# define FUNC_VARGSTART 28
# define FUNC_MOV 29
# define FUNC_START_OF_DO_WHILE 30
# define FUNC_ 31
# define FUNC_START_OF_DO_WHILE_COMMANDS 32
# define FUNC_END_OF_DO_WHILE 33
# define FUNC_START_OF_FOR 34
# define FUNC_FOR_INC_DEC 35
# define FUNC_START_OF_FOR_OMMANDS 36
# define FUNC_END_OF_IF 37
# define FUNC_IGNORE_LVALUE 38
# define FUNC_PRINT 39
# define FUNC_FORMATS 40
# define FUNC_EVENT_ENABLE 41
# define FUNC_EVENT_DISABLE 42
# define FUNC_TEST_STATEMENT 43
# define FUNC_SPINLOCK_LOCK 44
# define FUNC_SPINLOCK_UNLOCK 45
# define FUNC_PRINTF 46
# define FUNC_PAUSE 47
# define FUNC_FLUSH 48
# define FUNC_EVENT_IGNORE 49
# define FUNC_SPINLOCK_LOCK_CUSTOM_WAIT 50
# define FUNC_POI 51
# define FUNC_DB 52
# define FUNC_DD 53
# define FUNC_DW 54
# define FUNC_DQ 55
# define FUNC_NEG 56
# define FUNC_HI 57
# define FUNC_LOW 58
# define FUNC_NOT 59
# define FUNC_CHECK_ADDRESS 60
# define FUNC_STRLEN 61
# define FUNC_WCSLEN 62
# define FUNC_INTERLOCKED_INCREMENT 63
# define FUNC_INTERLOCKED_DECREMENT 64
# define FUNC_REFERENCE 65
# define FUNC_PHYSICAL_TO_VIRTUAL 66
# define FUNC_VIRTUAL_TO_PHYSICAL 67
# define FUNC_ED 68
# define FUNC_EB 69
# define FUNC_EQ 70
# define FUNC_INTERLOCKED_EXCHANGE 71
# define FUNC_INTERLOCKED_EXCHANGE_ADD 72
# define FUNC_INTERLOCKED_COMPARE_EXCHANGE 73
# define FUNC_POI 74
# define FUNC_DB 75
# define FUNC_DD 76
# define FUNC_DW 77
# define FUNC_DQ 78
# define FUNC_NEG 79
# define FUNC_HI 80
# define FUNC_LOW 81
# define FUNC_NOT 82
# define FUNC_CHECK_ADDRESS 83
# define FUNC_STRLEN 84
# define FUNC_WCSLEN 85
# define FUNC_INTERLOCKED_INCREMENT 86
# define FUNC_INTERLOCKED_DECREMENT 87
# define FUNC_REFERENCE 88
# define FUNC_PHYSICAL_TO_VIRTUAL 89
# define FUNC_VIRTUAL_TO_PHYSICAL 90
# define FUNC_ED 91
# define FUNC_EB 92
# define FUNC_EQ 93
# define FUNC_INTERLOCKED_EXCHANGE 94
# define FUNC_INTERLOCKED_EXCHANGE_ADD 95
# define FUNC_INTERLOCKED_COMPARE_EXCHANGE 96
typedef enum REGS_ENUM
{
REGISTER_RAX = 0,
REGISTER_EAX = 1,
REGISTER_AX = 2,
REGISTER_AH = 3,
REGISTER_AL = 4,
REGISTER_RCX = 5,
REGISTER_ECX = 6,
REGISTER_CX = 7,
REGISTER_CH = 8,
REGISTER_CL = 9,
REGISTER_RDX = 10,
REGISTER_EDX = 11,
REGISTER_DX = 12,
REGISTER_DH = 13,
REGISTER_DL = 14,
REGISTER_RBX = 15,
REGISTER_EBX = 16,
REGISTER_BX = 17,
REGISTER_BH = 18,
REGISTER_BL = 19,
REGISTER_RSP = 20,
REGISTER_ESP = 21,
REGISTER_SP = 22,
REGISTER_SPL = 23,
REGISTER_RBP = 24,
REGISTER_EBP = 25,
REGISTER_BP = 26,
REGISTER_BPL = 27,
REGISTER_RSI = 28,
REGISTER_ESI = 29,
REGISTER_SI = 30,
REGISTER_SIL = 31,
REGISTER_RDI = 32,
REGISTER_EDI = 33,
REGISTER_DI = 34,
REGISTER_DIL = 35,
REGISTER_R8 = 36,
REGISTER_R8D = 37,
REGISTER_R8W = 38,
REGISTER_R8H = 39,
REGISTER_R8L = 40,
REGISTER_R9 = 41,
REGISTER_R9D = 42,
REGISTER_R9W = 43,
REGISTER_R9H = 44,
REGISTER_R9L = 45,
REGISTER_R10 = 46,
REGISTER_R10D = 47,
REGISTER_R10W = 48,
REGISTER_R10H = 49,
REGISTER_R10L = 50,
REGISTER_R11 = 51,
REGISTER_R11D = 52,
REGISTER_R11W = 53,
REGISTER_R11H = 54,
REGISTER_R11L = 55,
REGISTER_R12 = 56,
REGISTER_R12D = 57,
REGISTER_R12W = 58,
REGISTER_R12H = 59,
REGISTER_R12L = 60,
REGISTER_R13 = 61,
REGISTER_R13D = 62,
REGISTER_R13W = 63,
REGISTER_R13H = 64,
REGISTER_R13L = 65,
REGISTER_R14 = 66,
REGISTER_R14D = 67,
REGISTER_R14W = 68,
REGISTER_R14H = 69,
REGISTER_R14L = 70,
REGISTER_R15 = 71,
REGISTER_R15D = 72,
REGISTER_R15W = 73,
REGISTER_R15H = 74,
REGISTER_R15L = 75,
REGISTER_DS = 76,
REGISTER_ES = 77,
REGISTER_FS = 78,
REGISTER_GS = 79,
REGISTER_CS = 80,
REGISTER_SS = 81,
REGISTER_RFLAGS = 82,
REGISTER_EFLAGS = 83,
REGISTER_FLAGS = 84,
REGISTER_CF = 85,
REGISTER_PF = 86,
REGISTER_AF = 87,
REGISTER_ZF = 88,
REGISTER_SF = 89,
REGISTER_TF = 90,
REGISTER_IF = 91,
REGISTER_DF = 92,
REGISTER_OF = 93,
REGISTER_IOPL = 94,
REGISTER_NT = 95,
REGISTER_RF = 96,
REGISTER_VM = 97,
REGISTER_AC = 98,
REGISTER_VIF = 99,
REGISTER_VIP = 100,
REGISTER_ID = 101,
REGISTER_RIP = 102,
REGISTER_EIP = 103,
REGISTER_IP = 104,
REGISTER_IDTR = 105,
REGISTER_LDTR = 106,
REGISTER_GDTR = 107,
REGISTER_TR = 108,
REGISTER_CR0 = 109,
REGISTER_CR2 = 110,
REGISTER_CR3 = 111,
REGISTER_CR4 = 112,
REGISTER_CR8 = 113,
REGISTER_DR0 = 114,
REGISTER_DR1 = 115,
REGISTER_DR2 = 116,
REGISTER_DR3 = 117,
REGISTER_DR6 = 118,
REGISTER_DR7 = 119
} REGS_ENUM;
static const char * const RegistersNames[] = {
"rax",
"eax",
"ax",
"ah",
"al",
"rcx",
"ecx",
"cx",
"ch",
"cl",
"rdx",
"edx",
"dx",
"dh",
"dl",
"rbx",
"ebx",
"bx",
"bh",
"bl",
"rsp",
"esp",
"sp",
"spl",
"rbp",
"ebp",
"bp",
"bpl",
"rsi",
"esi",
"si",
"sil",
"rdi",
"edi",
"di",
"dil",
"r8",
"r8d",
"r8w",
"r8h",
"r8l",
"r9",
"r9d",
"r9w",
"r9h",
"r9l",
"r10",
"r10d",
"r10w",
"r10h",
"r10l",
"r11",
"r11d",
"r11w",
"r11h",
"r11l",
"r12",
"r12d",
"r12w",
"r12h",
"r12l",
"r13",
"r13d",
"r13w",
"r13h",
"r13l",
"r14",
"r14d",
"r14w",
"r14h",
"r14l",
"r15",
"r15d",
"r15w",
"r15h",
"r15l",
"ds",
"es",
"fs",
"gs",
"cs",
"ss",
"rflags",
"eflags",
"flags",
"cf",
"pf",
"af",
"zf",
"sf",
"tf",
"if",
"df",
"of",
"iopl",
"nt",
"rf",
"vm",
"ac",
"vif",
"vip",
"id",
"rip",
"eip",
"ip",
"idtr",
"ldtr",
"gdtr",
"tr",
"cr0",
"cr2",
"cr3",
"cr4",
"cr8",
"dr0",
"dr1",
"dr2",
"dr3",
"dr6",
"dr7"};
# define PSEUDO_REGISTER_PID 0
# define PSEUDO_REGISTER_TID 1
# define PSEUDO_REGISTER_PNAME 2
# define PSEUDO_REGISTER_CORE 3
# define PSEUDO_REGISTER_PROC 4
# define PSEUDO_REGISTER_THREAD 5
# define PSEUDO_REGISTER_PEB 6
# define PSEUDO_REGISTER_TEB 7
# define PSEUDO_REGISTER_IP 8
# define PSEUDO_REGISTER_BUFFER 9
# define PSEUDO_REGISTER_CONTEXT 10
#endif