update symbol structure and stack buffer in script engine

This commit is contained in:
xmaple555 2024-08-23 22:33:36 +08:00
parent 8edd118a40
commit 211295bf81
7 changed files with 636 additions and 681 deletions

View file

@ -340,7 +340,7 @@ ScriptEngineEvalWrapper(PGUEST_REGS GuestRegs,
//
if (!g_ScriptStackBuffer)
{
g_ScriptStackBuffer = (UINT64 *)malloc(MAX_STACK_BUFFER_COUNT * sizeof(SYMBOL));
g_ScriptStackBuffer = (UINT64 *)malloc(MAX_STACK_BUFFER_COUNT * sizeof(UINT64));
if (g_ScriptStackBuffer == NULL)
{
@ -350,8 +350,6 @@ ScriptEngineEvalWrapper(PGUEST_REGS GuestRegs,
return;
}
RtlZeroMemory(g_ScriptStackBuffer, MAX_STACK_BUFFER_COUNT * sizeof(SYMBOL));
}
//
@ -373,7 +371,7 @@ ScriptEngineEvalWrapper(PGUEST_REGS GuestRegs,
ScriptGeneralRegisters.StackBuffer = g_ScriptStackBuffer;
ScriptGeneralRegisters.GlobalVariablesList = g_ScriptGlobalVariables;
RtlZeroMemory(g_ScriptStackBuffer, MAX_STACK_BUFFER_COUNT * sizeof(SYMBOL));
RtlZeroMemory(g_ScriptStackBuffer, MAX_STACK_BUFFER_COUNT * sizeof(UINT64));
if (CodeBuffer->Message == NULL)
{
@ -400,15 +398,7 @@ ScriptEngineEvalWrapper(PGUEST_REGS GuestRegs,
printf("Stack Buffer:\n");
for (UINT64 j = 0; j < ScriptGeneralRegisters.StackIndx; j++)
{
PSYMBOL StackSymbol = (PSYMBOL)((unsigned long long)ScriptGeneralRegisters.StackBuffer +
(unsigned long long)(j * sizeof(SYMBOL)));
printf("StackIndx = %lld, Value = %lld", j, StackSymbol->Value);
if (StackSymbol->Type == SYMBOL_RETURN_ADDRESS_TYPE)
{
printf(", Type = SYMBOL_RETURN_ADDRESS_TYPE");
}
printf("StackIndx = %lld, Value = %lld", j, ScriptGeneralRegisters.StackBuffer[j]);
if (j == ScriptGeneralRegisters.StackBaseIndx)
{