MCPcopy Create free account
hub / github.com/HyperDbg/HyperDbg / GetValue

Function GetValue

hyperdbg/script-eval/code/ScriptEngineEval.c:91–173  ·  view source on GitHub ↗

* @brief Get the Value (reg, peseudo-reg, etc.) * * @param GuestRegs * @param ActionBuffer * @param ScriptGeneralRegisters * @param Symbol * @param ReturnReference * @return UINT64 */

Source from the content-addressed store, hash-verified

89 * @return UINT64
90 */
91UINT64
92GetValue(PGUEST_REGS GuestRegs,
93 PACTION_BUFFER ActionBuffer,
94 PSCRIPT_ENGINE_GENERAL_REGISTERS ScriptGeneralRegisters,
95 PSYMBOL Symbol,
96 BOOLEAN ReturnReference)
97{
98 switch (Symbol->Type)
99 {
100 case SYMBOL_GLOBAL_ID_TYPE:
101
102 if (ReturnReference)
103 return ((UINT64)(&ScriptGeneralRegisters->GlobalVariablesList[Symbol->Value]));
104 else
105 return ScriptGeneralRegisters->GlobalVariablesList[Symbol->Value];
106
107 case SYMBOL_NUM_TYPE:
108
109 if (ReturnReference)
110 return ((UINT64)&Symbol->Value);
111 else
112 return Symbol->Value;
113
114 case SYMBOL_REGISTER_TYPE:
115
116 if (ReturnReference)
117 return (UINT64)NULL; // Not reasonable, you should not dereference a register!
118 else
119 return GetRegValue(GuestRegs, (REGS_ENUM)Symbol->Value);
120
121 case SYMBOL_PSEUDO_REG_TYPE:
122
123 if (ReturnReference)
124 return (UINT64)NULL; // Not reasonable, you should not dereference a pseudo-register!
125 else
126 return GetPseudoRegValue(Symbol, ActionBuffer);
127
128 case SYMBOL_STACK_INDEX_TYPE:
129 if (ReturnReference)
130 return (UINT64)&ScriptGeneralRegisters->StackIndx;
131 else
132 return ScriptGeneralRegisters->StackIndx;
133
134 case SYMBOL_STACK_BASE_INDEX_TYPE:
135 if (ReturnReference)
136 return (UINT64)&ScriptGeneralRegisters->StackBaseIndx;
137 else
138 return ScriptGeneralRegisters->StackBaseIndx;
139
140 case SYMBOL_RETURN_VALUE_TYPE:
141 if (ReturnReference)
142 return (UINT64)&ScriptGeneralRegisters->ReturnValue;
143 else
144 return ScriptGeneralRegisters->ReturnValue;
145
146 case SYMBOL_TEMP_TYPE:
147
148 if (ReturnReference)

Callers 2

ScriptEngineExecuteFunction · 0.85

Calls 2

GetRegValueFunction · 0.85
GetPseudoRegValueFunction · 0.85

Tested by

no test coverage detected