HyperDbg Debugger
Loading...
Searching...
No Matches
script-engine.h File Reference

General script-engine functions and wrappers. More...

Go to the source code of this file.

Functions

UINT64 ScriptEngineConvertNameToAddressWrapper (const CHAR *FunctionOrVariableName, PBOOLEAN WasFound)
 ScriptEngineConvertNameToAddress wrapper.
UINT32 ScriptEngineLoadFileSymbolWrapper (UINT64 BaseAddress, const CHAR *PdbFileName, const CHAR *CustomModuleName)
 ScriptEngineLoadFileSymbol wrapper.
VOID ScriptEngineSetTextMessageCallbackWrapper (PVOID Handler)
 ScriptEngineSetTextMessageCallback wrapper.
UINT32 ScriptEngineUnloadAllSymbolsWrapper ()
 ScriptEngineUnloadAllSymbols wrapper.
UINT32 ScriptEngineUnloadModuleSymbolWrapper (CHAR *ModuleName)
 ScriptEngineUnloadModuleSymbol wrapper.
UINT32 ScriptEngineSearchSymbolForMaskWrapper (const CHAR *SearchMask)
 ScriptEngineSearchSymbolForMask wrapper.
BOOLEAN ScriptEngineGetFieldOffsetWrapper (CHAR *TypeName, CHAR *FieldName, UINT32 *FieldOffset)
 ScriptEngineGetFieldOffset wrapper.
BOOLEAN ScriptEngineGetDataTypeSizeWrapper (CHAR *TypeName, UINT64 *TypeSize)
 ScriptEngineGetDataTypeSize wrapper.
BOOLEAN ScriptEngineCreateSymbolTableForDisassemblerWrapper (VOID *CallbackFunction)
BOOLEAN ScriptEngineConvertFileToPdbPathWrapper (const CHAR *LocalFilePath, CHAR *ResultPath, SIZE_T ResultPathSize)
 ScriptEngineConvertFileToPdbPath wrapper.
BOOLEAN ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetailsWrapper (const CHAR *LocalFilePath, CHAR *PdbFilePath, CHAR *GuidAndAgeDetails, BOOLEAN Is32BitModule)
 ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetails wrapper.
BOOLEAN ScriptEngineConvertLoadedModuleToPdbFileAndGuidAndAgeDetailsWrapper (const BYTE *LoadedImageBytes, SIZE_T LoadedImageSize, const CHAR *LocalFilePath, CHAR *PdbFilePath, CHAR *GuidAndAgeDetails, BOOLEAN Is32BitModule)
 ScriptEngineConvertLoadedModuleToPdbFileAndGuidAndAgeDetails wrapper.
BOOLEAN ScriptEngineSymbolInitLoadWrapper (PMODULE_SYMBOL_DETAIL BufferToStoreDetails, UINT32 StoredLength, BOOLEAN DownloadIfAvailable, const CHAR *SymbolPath, BOOLEAN IsSilentLoad)
 ScriptEngineSymbolInitLoad wrapper.
BOOLEAN ScriptEngineShowDataBasedOnSymbolTypesWrapper (const CHAR *TypeName, UINT64 Address, BOOLEAN IsStruct, PVOID BufferAddress, const CHAR *AdditionalParameters)
 ScriptEngineShowDataBasedOnSymbolTypes wrapper.
VOID ScriptEngineSymbolAbortLoadingWrapper ()
 SymbolAbortLoading wrapper.
VOID ScriptEngineWrapperTestParser (const string &Expr)
 test parser
VOID ScriptEngineWrapperTestParserForHwdbg (const string &Expr)
 test parser for hwdbg
BOOLEAN ScriptAutomaticStatementsTestWrapper (const string &Expr, UINT64 ExpectationValue, BOOLEAN ExceptError)
 massive tests for script engine statements
PVOID ScriptEngineParseWrapper (CHAR *Expr, BOOLEAN ShowErrorMessageIfAny)
 ScriptEngineParse wrapper.
VOID PrintSymbolBufferWrapper (PVOID SymbolBuffer)
 PrintSymbolBuffer wrapper.
UINT64 ScriptEngineWrapperGetHead (PVOID SymbolBuffer)
 wrapper for getting head
UINT32 ScriptEngineWrapperGetSize (PVOID SymbolBuffer)
 wrapper for getting size
UINT32 ScriptEngineWrapperGetPointer (PVOID SymbolBuffer)
 wrapper for getting pointer
VOID ScriptEngineWrapperRemoveSymbolBuffer (PVOID SymbolBuffer)
 wrapper for removing symbol buffer
UINT64 ScriptEngineEvalUInt64StyleExpressionWrapper (const string &Expr, PBOOLEAN HasError)
 In the local debugging (VMI mode) environment, this function computes the expressions.
UINT64 ScriptEngineEvalSingleExpression (string Expr, PBOOLEAN HasError)
 Get the value from the evaluation of single expression from local debuggee and remote debuggee.
BOOLEAN ScriptEngineExecuteSingleExpression (CHAR *Expr, BOOLEAN ShowErrorMessageIfAny, BOOLEAN IsFormat)
 Execute single expression for the kernel debugger and the user-mode debugger.

Detailed Description

General script-engine functions and wrappers.

Author
Sina Karvandi (sina@.nosp@m.hype.nosp@m.rdbg..nosp@m.org)
Version
0.1
Date
2021-09-23

Function Documentation

◆ PrintSymbolBufferWrapper()

VOID PrintSymbolBufferWrapper ( PVOID SymbolBuffer)

PrintSymbolBuffer wrapper.

Print symbol buffer wrapper

Parameters
SymbolBuffer
Returns
PVOID
333{
334 PrintSymbolBuffer(SymbolBuffer);
335}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE VOID PrintSymbolBuffer(const PVOID SymbolBuffer)
Prints a symbol buffer.
Definition script-engine.c:4083

◆ ScriptAutomaticStatementsTestWrapper()

BOOLEAN ScriptAutomaticStatementsTestWrapper ( const string & Expr,
UINT64 ExpectationValue,
BOOLEAN ExceptError )

massive tests for script engine statements

Parameters
ExprThe expression to test
ExpectationValueWhat value this statements expects (not used if ExceptError is TRUE)
ExceptErrorTrue if the statement expects an error
Returns
BOOLEAN whether the test was successful or not
498{
499 //
500 // Set the global variable indicator of test_statement to 0
501 //
503
504 //
505 // Call the test parser
506 //
508
509 //
510 // Check the global variable to see the results
511 //
512 if (g_CurrentExprEvalResultHasError && ExceptError)
513 {
514 return TRUE;
515 }
516 else if (ExpectationValue == g_CurrentExprEvalResult)
517 {
518 return TRUE;
519 }
520
521 return FALSE;
522}
#define TRUE
Definition BasicTypes.h:114
#define FALSE
Definition BasicTypes.h:113
VOID ScriptEngineWrapperTestParser(const string &Expr)
test parser
Definition script-engine-wrapper.cpp:674
BOOLEAN g_CurrentExprEvalResultHasError
global variable to detect if there was an error in the result of script-engine statement tests
Definition globals.h:681
UINT64 g_CurrentExprEvalResult
global variable to save the result of script-engine statement tests
Definition globals.h:674

◆ ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetailsWrapper()

BOOLEAN ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetailsWrapper ( const CHAR * LocalFilePath,
CHAR * PdbFilePath,
CHAR * GuidAndAgeDetails,
BOOLEAN Is32BitModule )

ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetails wrapper.

Parameters
LocalFilePath
PdbFilePath
GuidAndAgeDetails
Is32BitModule
Returns
BOOLEAN
251{
252 return ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetails(LocalFilePath, PdbFilePath, GuidAndAgeDetails, Is32BitModule);
253}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN ScriptEngineConvertFileToPdbFileAndGuidAndAgeDetails(const CHAR *LocalFilePath, CHAR *PdbFilePath, CHAR *GuidAndAgeDetails, BOOLEAN Is32BitModule)
Convert file to pdb attributes for symbols.
Definition script-engine.c:296

◆ ScriptEngineConvertFileToPdbPathWrapper()

BOOLEAN ScriptEngineConvertFileToPdbPathWrapper ( const CHAR * LocalFilePath,
CHAR * ResultPath,
SIZE_T ResultPathSize )

ScriptEngineConvertFileToPdbPath wrapper.

Parameters
LocalFilePath
ResultPath
Returns
BOOLEAN
176{
177 return ScriptEngineConvertFileToPdbPath(LocalFilePath, ResultPath, ResultPathSize);
178}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN ScriptEngineConvertFileToPdbPath(const CHAR *LocalFilePath, CHAR *ResultPath, SIZE_T ResultPathSize)
Convert local file to pdb path.
Definition script-engine.c:217

◆ ScriptEngineConvertLoadedModuleToPdbFileAndGuidAndAgeDetailsWrapper()

BOOLEAN ScriptEngineConvertLoadedModuleToPdbFileAndGuidAndAgeDetailsWrapper ( const BYTE * LoadedImageBytes,
SIZE_T LoadedImageSize,
const CHAR * LocalFilePath,
CHAR * PdbFilePath,
CHAR * GuidAndAgeDetails,
BOOLEAN Is32BitModule )

ScriptEngineConvertLoadedModuleToPdbFileAndGuidAndAgeDetails wrapper.

Parameters
LoadedImageBytes
LoadedImageSize
LocalFilePath
PdbFilePath
GuidAndAgeDetails
Is32BitModule
Returns
BOOLEAN
275{
277 LoadedImageBytes,
278 LoadedImageSize,
279 LocalFilePath,
280 PdbFilePath,
281 GuidAndAgeDetails,
282 Is32BitModule);
283}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN ScriptEngineConvertLoadedModuleToPdbFileAndGuidAndAgeDetails(const BYTE *LoadedImageBytes, SIZE_T LoadedImageSize, const CHAR *LocalFilePath, CHAR *PdbFilePath, CHAR *GuidAndAgeDetails, BOOLEAN Is32BitModule)
Convert loaded module bytes to pdb attributes for symbols.
Definition script-engine.c:317

◆ ScriptEngineConvertNameToAddressWrapper()

UINT64 ScriptEngineConvertNameToAddressWrapper ( const CHAR * FunctionOrVariableName,
PBOOLEAN WasFound )

ScriptEngineConvertNameToAddress wrapper.

Parameters
FunctionName
WasFound
Returns
UINT64
55{
56 return ScriptEngineConvertNameToAddress(FunctionOrVariableName, WasFound);
57}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE UINT64 ScriptEngineConvertNameToAddress(const CHAR *FunctionOrVariableName, PBOOLEAN WasFound)
Converts name to address.
Definition script-engine.c:69

◆ ScriptEngineCreateSymbolTableForDisassemblerWrapper()

BOOLEAN ScriptEngineCreateSymbolTableForDisassemblerWrapper ( VOID * CallbackFunction)

◆ ScriptEngineEvalSingleExpression()

UINT64 ScriptEngineEvalSingleExpression ( string Expr,
PBOOLEAN HasError )

Get the value from the evaluation of single expression from local debuggee and remote debuggee.

Parameters
Expr
HasError
Returns
UINT64
32{
33 UINT64 Result = NULL;
34
35 //
36 // Prepend and append 'formats(' and ')'
37 //
38 Expr.insert(0, "formats(");
39 Expr.append(");");
40
42 {
43 //
44 // Send data to the target user debugger or kernel debugger
45 //
46 if (!ScriptEngineExecuteSingleExpression((CHAR *)Expr.c_str(), TRUE, TRUE))
47 {
48 *HasError = TRUE;
49 return NULL;
50 }
51
52 //
53 // Check whether there was an error in evaluation or not
54 //
56 {
57 //
58 // Everything was fine, return the result of the evaluated
59 // expression and null the global holders
60 //
64 *HasError = FALSE;
65 }
66 else
67 {
68 //
69 // There was an error evaluating the expression from the kernel (debuggee)
70 //
73
74 *HasError = TRUE;
75 Result = NULL;
76 }
77 }
78 else
79 {
80 //
81 // It's in vmi-mode,
82 // execute it locally with regs set to ZERO
83 //
84 Result = ScriptEngineEvalUInt64StyleExpressionWrapper(Expr, HasError);
85 }
86
87 return Result;
88}
BOOLEAN g_IsSerialConnectedToRemoteDebuggee
Shows if the debugger was connected to remote debuggee over (A remote guest).
Definition globals.h:253
ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState
State of active debugging thread.
Definition globals.h:372
char CHAR
Definition BasicTypes.h:33
#define DEBUGGER_OPERATION_WAS_SUCCESSFUL
General value to indicate that the operation or request was successful.
Definition ErrorCodes.h:23
UINT64 g_ResultOfEvaluatedExpression
Result of the expression that is evaluated in the debuggee.
Definition globals.h:640
UINT32 g_ErrorStateOfResultOfEvaluatedExpression
Shows the state of the evaluation of expression which whether contains error or not.
Definition globals.h:647
NULL()
Definition test-case-generator.py:530
UINT64 ScriptEngineEvalUInt64StyleExpressionWrapper(const string &Expr, PBOOLEAN HasError)
In the local debugging (VMI mode) environment, this function computes the expressions.
Definition script-engine-wrapper.cpp:780
BOOLEAN ScriptEngineExecuteSingleExpression(CHAR *Expr, BOOLEAN ShowErrorMessageIfAny, BOOLEAN IsFormat)
Execute single expression for the kernel debugger and the user-mode debugger.
Definition script-engine.cpp:100

◆ ScriptEngineEvalUInt64StyleExpressionWrapper()

UINT64 ScriptEngineEvalUInt64StyleExpressionWrapper ( const string & Expr,
PBOOLEAN HasError )

In the local debugging (VMI mode) environment, this function computes the expressions.

for example, if the user u ExAllocatePoolWithTag+0x10 this will evaluate the expr

Parameters
Expr
HasError
Returns
UINT64
781{
782 //
783 // In VMI-mode we'll form all registers as zero
784 //
785 GUEST_REGS GuestRegs = {0};
786
787 ScriptEngineEvalWrapper(&GuestRegs, Expr);
788
789 //
790 // Set the results and return the value
791 //
794}
VOID ScriptEngineEvalWrapper(PGUEST_REGS GuestRegs, string Expr)
Script engine evaluation wrapper.
Definition script-engine-wrapper.cpp:345
Definition BasicTypes.h:136

◆ ScriptEngineExecuteSingleExpression()

BOOLEAN ScriptEngineExecuteSingleExpression ( CHAR * Expr,
BOOLEAN ShowErrorMessageIfAny,
BOOLEAN IsFormat )

Execute single expression for the kernel debugger and the user-mode debugger.

Parameters
Expr
ShowErrorMessageIfAny
IsFormatIf it's a format expression
Returns
BOOLEAN Returns TRUE if it was successful
101{
102 PVOID CodeBuffer;
103 UINT64 BufferAddress;
104 UINT32 BufferLength;
105 UINT32 Pointer;
106 BOOLEAN Result = FALSE;
107
108 //
109 // Check whether a kernel debugger is connected or a user-mode debugger is active
110 //
112 {
113 if (ShowErrorMessageIfAny)
114 {
115 ShowMessages("err, you're not connected to any debuggee (neither user debugger nor kernel debugger)\n");
116 }
117 return FALSE;
118 }
119
120 //
121 // Check if the user-mode debuggee is paused
122 //
124 {
125 if (ShowErrorMessageIfAny)
126 {
127 ShowMessages("err, the target process is NOT paused, you should run 'pause' to pause it\n");
128 }
129 return FALSE;
130 }
131
132 //
133 // Run script engine handler
134 //
135 CodeBuffer = ScriptEngineParseWrapper(Expr, ShowErrorMessageIfAny);
136
137 if (CodeBuffer == NULL)
138 {
139 //
140 // return to show that this item contains an error
141 //
142 return FALSE;
143 }
144
145 //
146 // Print symbols (test)
147 //
148 // PrintSymbolBufferWrapper(CodeBuffer);
149
150 //
151 // Set the buffer and length
152 //
153 BufferAddress = ScriptEngineWrapperGetHead(CodeBuffer);
154 BufferLength = ScriptEngineWrapperGetSize(CodeBuffer);
155 Pointer = ScriptEngineWrapperGetPointer(CodeBuffer);
156
158 {
159 //
160 // Send it to the remote debuggee (kernel debugger)
161 //
162 Result = KdSendScriptPacketToDebuggee(BufferAddress,
163 BufferLength,
164 Pointer,
165 IsFormat);
166 }
167 else if (g_ActiveProcessDebuggingState.IsActive)
168 {
169 //
170 // Send it to the user debugger
171 //
173 g_ActiveProcessDebuggingState.ProcessDebuggingToken,
175 BufferAddress,
176 BufferLength,
177 Pointer,
178 IsFormat);
179 }
180 else
181 {
182 //
183 // Not connected to any debuggee
184 //
185 ShowMessages("err, you're not connected to any debuggee (neither user debugger nor kernel debugger)\n");
186 Result = FALSE;
187 }
188
189 //
190 // Remove the buffer of script engine interpreted code
191 //
193
194 //
195 // Return result
196 //
197 return Result;
198}
UCHAR BOOLEAN
Definition BasicTypes.h:35
void * PVOID
Definition BasicTypes.h:56
unsigned int UINT32
Definition BasicTypes.h:54
BOOLEAN KdSendScriptPacketToDebuggee(UINT64 BufferAddress, UINT32 BufferLength, UINT32 Pointer, BOOLEAN IsFormat)
Sends a script packet to the debuggee.
Definition kd.cpp:1231
UINT32 ScriptEngineWrapperGetSize(PVOID SymbolBuffer)
wrapper for getting size
Definition script-engine-wrapper.cpp:815
UINT32 ScriptEngineWrapperGetPointer(PVOID SymbolBuffer)
wrapper for getting pointer
Definition script-engine-wrapper.cpp:829
PVOID ScriptEngineParseWrapper(CHAR *Expr, BOOLEAN ShowErrorMessageIfAny)
ScriptEngineParse wrapper.
Definition script-engine-wrapper.cpp:298
UINT64 ScriptEngineWrapperGetHead(PVOID SymbolBuffer)
wrapper for getting head
Definition script-engine-wrapper.cpp:803
VOID ScriptEngineWrapperRemoveSymbolBuffer(PVOID SymbolBuffer)
wrapper for removing symbol buffer
Definition script-engine-wrapper.cpp:841
BOOLEAN UdSendScriptBufferToProcess(UINT64 ProcessDetailToken, UINT32 TargetThreadId, UINT64 BufferAddress, UINT32 BufferLength, UINT32 Pointer, BOOLEAN IsFormat)
Send script buffer to the user debugger.
Definition ud.cpp:1176

◆ ScriptEngineGetDataTypeSizeWrapper()

BOOLEAN ScriptEngineGetDataTypeSizeWrapper ( CHAR * TypeName,
UINT64 * TypeSize )

ScriptEngineGetDataTypeSize wrapper.

Parameters
TypeName
TypeSize
Returns
BOOLEAN
148{
149 return ScriptEngineGetDataTypeSize(TypeName, TypeSize);
150}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN ScriptEngineGetDataTypeSize(CHAR *TypeName, UINT64 *TypeSize)
Get size of a data type (structure).
Definition script-engine.c:186

◆ ScriptEngineGetFieldOffsetWrapper()

BOOLEAN ScriptEngineGetFieldOffsetWrapper ( CHAR * TypeName,
CHAR * FieldName,
UINT32 * FieldOffset )

ScriptEngineGetFieldOffset wrapper.

Parameters
TypeName
FieldName
FieldOffset
Returns
BOOLEAN
134{
135 return ScriptEngineGetFieldOffset(TypeName, FieldName, FieldOffset);
136}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN ScriptEngineGetFieldOffset(CHAR *TypeName, CHAR *FieldName, UINT32 *FieldOffset)
Get offset of a field from the structure.
Definition script-engine.c:170

◆ ScriptEngineLoadFileSymbolWrapper()

UINT32 ScriptEngineLoadFileSymbolWrapper ( UINT64 BaseAddress,
const CHAR * PdbFileName,
const CHAR * CustomModuleName )

ScriptEngineLoadFileSymbol wrapper.

Parameters
BaseAddress
FileName
Returns
UINT32
69{
70 return ScriptEngineLoadFileSymbol(BaseAddress, PdbFileName, CustomModuleName);
71}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE UINT32 ScriptEngineLoadFileSymbol(UINT64 BaseAddress, const CHAR *PdbFileName, const CHAR *CustomModuleName)
Definition script-engine.c:89

◆ ScriptEngineParseWrapper()

PVOID ScriptEngineParseWrapper ( CHAR * Expr,
BOOLEAN ShowErrorMessageIfAny )

ScriptEngineParse wrapper.

Parameters
Expr
ShowErrorMessageIfAny
Returns
PVOID
299{
300 PSYMBOL_BUFFER SymbolBuffer;
301 SymbolBuffer = (PSYMBOL_BUFFER)ScriptEngineParse(Expr);
302
303 //
304 // Check if there is an error or not
305 //
306 if (SymbolBuffer->Message == NULL)
307 {
308 return SymbolBuffer;
309 }
310 else
311 {
312 //
313 // Show error message and free the buffer
314 //
315 if (ShowErrorMessageIfAny)
316 {
317 ShowMessages("%s\n", SymbolBuffer->Message);
318 }
320 return NULL;
321 }
322}
struct SYMBOL_BUFFER * PSYMBOL_BUFFER
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE PVOID ScriptEngineParse(CHAR *Str)
The entry point of script engine.
Definition script-engine.c:343
char * Message
Definition ScriptEngineCommonDefinitions.h:26

◆ ScriptEngineSearchSymbolForMaskWrapper()

UINT32 ScriptEngineSearchSymbolForMaskWrapper ( const CHAR * SearchMask)

ScriptEngineSearchSymbolForMask wrapper.

Parameters
SearchMask
Returns
UINT32
118{
119 return ScriptEngineSearchSymbolForMask(SearchMask);
120}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE UINT32 ScriptEngineSearchSymbolForMask(const CHAR *SearchMask)
Search for a special mask.
Definition script-engine.c:153

◆ ScriptEngineSetTextMessageCallbackWrapper()

VOID ScriptEngineSetTextMessageCallbackWrapper ( PVOID Handler)

ScriptEngineSetTextMessageCallback wrapper.

Parameters
Handler
Returns
VOID
82{
84}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE VOID ScriptEngineSetTextMessageCallback(PVOID Handler)
Set the message handler as an alternative to printf.
Definition script-engine.c:104

◆ ScriptEngineShowDataBasedOnSymbolTypesWrapper()

BOOLEAN ScriptEngineShowDataBasedOnSymbolTypesWrapper ( const CHAR * TypeName,
UINT64 Address,
BOOLEAN IsStruct,
PVOID BufferAddress,
const CHAR * AdditionalParameters )

ScriptEngineShowDataBasedOnSymbolTypes wrapper.

Parameters
TypeName
Address
IsStruct
BufferAddress
AdditionalParameters
Returns
BOOLEAN
219{
220 return ScriptEngineShowDataBasedOnSymbolTypes(TypeName, Address, IsStruct, BufferAddress, AdditionalParameters);
221}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN ScriptEngineShowDataBasedOnSymbolTypes(const CHAR *TypeName, UINT64 Address, BOOLEAN IsStruct, PVOID BufferAddress, const CHAR *AdditionalParameters)
Show data based on symbol types.
Definition script-engine.c:259

◆ ScriptEngineSymbolAbortLoadingWrapper()

VOID ScriptEngineSymbolAbortLoadingWrapper ( )

SymbolAbortLoading wrapper.

Returns
VOID
231{
233}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE VOID ScriptEngineSymbolAbortLoading()
Cancel loading.
Definition script-engine.c:277

◆ ScriptEngineSymbolInitLoadWrapper()

BOOLEAN ScriptEngineSymbolInitLoadWrapper ( PMODULE_SYMBOL_DETAIL BufferToStoreDetails,
UINT32 StoredLength,
BOOLEAN DownloadIfAvailable,
const CHAR * SymbolPath,
BOOLEAN IsSilentLoad )

ScriptEngineSymbolInitLoad wrapper.

Parameters
ScriptEngineSymbolInitLoad
StoredLength
DownloadIfAvailable
SymbolPath
IsSilentLoad
Returns
BOOLEAN
197{
198 return ScriptEngineSymbolInitLoad(BufferToStoreDetails, StoredLength, DownloadIfAvailable, SymbolPath, IsSilentLoad);
199}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE BOOLEAN ScriptEngineSymbolInitLoad(PVOID BufferToStoreDetails, UINT32 StoredLength, BOOLEAN DownloadIfAvailable, const CHAR *SymbolPath, BOOLEAN IsSilentLoad)
Initial load of the symbols.
Definition script-engine.c:236

◆ ScriptEngineUnloadAllSymbolsWrapper()

UINT32 ScriptEngineUnloadAllSymbolsWrapper ( )

ScriptEngineUnloadAllSymbols wrapper.

Returns
UINT32
93{
95}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE UINT32 ScriptEngineUnloadAllSymbols()
Unload all the previously loaded symbols.
Definition script-engine.c:123

◆ ScriptEngineUnloadModuleSymbolWrapper()

UINT32 ScriptEngineUnloadModuleSymbolWrapper ( CHAR * ModuleName)

ScriptEngineUnloadModuleSymbol wrapper.

Parameters
ModuleName
Returns
UINT32
105{
106 return ScriptEngineUnloadModuleSymbol(ModuleName);
107}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE UINT32 ScriptEngineUnloadModuleSymbol(CHAR *ModuleName)
Unload a special pdb.
Definition script-engine.c:138

◆ ScriptEngineWrapperGetHead()

UINT64 ScriptEngineWrapperGetHead ( PVOID SymbolBuffer)

wrapper for getting head

Parameters
SymbolBuffer
Returns
UINT64
804{
805 return (UINT64)((PSYMBOL_BUFFER)SymbolBuffer)->Head;
806}

◆ ScriptEngineWrapperGetPointer()

UINT32 ScriptEngineWrapperGetPointer ( PVOID SymbolBuffer)

wrapper for getting pointer

Parameters
SymbolBuffer
Returns
UINT32
830{
831 return (UINT32)((PSYMBOL_BUFFER)SymbolBuffer)->Pointer;
832}

◆ ScriptEngineWrapperGetSize()

UINT32 ScriptEngineWrapperGetSize ( PVOID SymbolBuffer)

wrapper for getting size

Parameters
SymbolBuffer
Returns
UINT32
816{
817 UINT32 Size =
818 (UINT32)((PSYMBOL_BUFFER)SymbolBuffer)->Pointer * sizeof(SYMBOL);
819 return Size;
820}
Definition ScriptEngineCommonDefinitions.h:6

◆ ScriptEngineWrapperRemoveSymbolBuffer()

VOID ScriptEngineWrapperRemoveSymbolBuffer ( PVOID SymbolBuffer)

wrapper for removing symbol buffer

Parameters
SymbolBuffer
Returns
UINT32
842{
843 RemoveSymbolBuffer((PSYMBOL_BUFFER)SymbolBuffer);
844}
IMPORT_EXPORT_HYPERDBG_SCRIPT_ENGINE VOID RemoveSymbolBuffer(PVOID SymbolBuffer)
Frees the memory allocated by SymbolBuffer.
Definition script-engine.c:3949

◆ ScriptEngineWrapperTestParser()

VOID ScriptEngineWrapperTestParser ( const string & Expr)

test parser

Parameters
Expr
Returns
VOID
675{
676 ALLOCATED_MEMORY_FOR_SCRIPT_ENGINE_CASTING AllocationsForCastings = {0};
677
678 typedef struct _TEST_STRUCT
679 {
680 UINT64 Var1;
681 UINT64 Var2;
682 UINT64 Var3;
683 UINT64 Var4;
684 } TEST_STRUCT, *PTEST_STRUCT;
685
686 PTEST_STRUCT TestStruct = (PTEST_STRUCT)malloc(sizeof(TEST_STRUCT));
687
688 if (TestStruct == NULL)
689 {
690 return;
691 }
692
693 RtlZeroMemory(TestStruct, sizeof(TEST_STRUCT));
694
695 TestStruct->Var1 = 0x41414141;
696 TestStruct->Var3 = 0x4242424242424242;
697
698 GUEST_REGS GuestRegs = {0};
699
700 CHAR test[] = "Hello world !";
701 WCHAR testw[] =
702 L"A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 "
703 L"9 a b c d e f g h i j k l m n o p q r s t u v w x y z";
704
705 CHAR * RspReg = (CHAR *)malloc(0x100);
706
707 if (RspReg == NULL)
708 {
709 ShowMessages("err, unable to allocate stack for script engine tests");
710 free(TestStruct);
711 return;
712 }
713
714 memcpy(RspReg, testw, sizeof(testw));
715
716 GuestRegs.rax = 0x1;
717 GuestRegs.rcx = (UINT64)AllocateStructForCasting(&AllocationsForCastings); // TestStruct
718 GuestRegs.rdx = 0x3;
719 GuestRegs.rbx = 0x4;
720 GuestRegs.rsp = (UINT64)RspReg + 0x50;
721 GuestRegs.rbp = 0x6;
722 GuestRegs.rsi = 0x7;
723 GuestRegs.rdi = 0x8;
724 GuestRegs.r8 = 0x9;
725 GuestRegs.r9 = 0xa;
726 GuestRegs.r10 = 0xb;
727 GuestRegs.r11 = 0xc;
728 GuestRegs.r12 = 0xd;
729 GuestRegs.r13 = 0xe;
730 GuestRegs.r14 = (UINT64)testw;
731 GuestRegs.r15 = (UINT64)test;
732
733 ScriptEngineEvalWrapper(&GuestRegs, Expr);
734
735 free(RspReg);
736 free(TestStruct);
737 free(AllocationsForCastings.Buff1);
738 free(AllocationsForCastings.Buff2);
739 free(AllocationsForCastings.Buff3);
740 free(AllocationsForCastings.Buff4);
741 free(AllocationsForCastings.Buff5);
742 free(AllocationsForCastings.Buff6);
743}
PVOID AllocateStructForCasting(PALLOCATED_MEMORY_FOR_SCRIPT_ENGINE_CASTING AllocationsForCastings)
allocate memory and build structure for casting
Definition script-engine-wrapper.cpp:531
struct _ALLOCATED_MEMORY_FOR_SCRIPT_ENGINE_CASTING ALLOCATED_MEMORY_FOR_SCRIPT_ENGINE_CASTING
CHAR * Buff1
Definition script-engine-wrapper.cpp:32
CHAR * Buff5
Definition script-engine-wrapper.cpp:36
CHAR * Buff6
Definition script-engine-wrapper.cpp:37
CHAR * Buff4
Definition script-engine-wrapper.cpp:35
CHAR * Buff2
Definition script-engine-wrapper.cpp:33
CHAR * Buff3
Definition script-engine-wrapper.cpp:34
UINT64 rsp
Definition BasicTypes.h:145
UINT64 r14
Definition BasicTypes.h:155
UINT64 r15
Definition BasicTypes.h:156
UINT64 rdi
Definition BasicTypes.h:148
UINT64 rax
Definition BasicTypes.h:141
UINT64 r12
Definition BasicTypes.h:153
UINT64 r13
Definition BasicTypes.h:154
UINT64 r9
Definition BasicTypes.h:150
UINT64 r8
Definition BasicTypes.h:149
UINT64 rbp
Definition BasicTypes.h:146
UINT64 rbx
Definition BasicTypes.h:144
UINT64 r10
Definition BasicTypes.h:151
UINT64 rcx
Definition BasicTypes.h:142
UINT64 rsi
Definition BasicTypes.h:147
UINT64 r11
Definition BasicTypes.h:152
UINT64 rdx
Definition BasicTypes.h:143

◆ ScriptEngineWrapperTestParserForHwdbg()

VOID ScriptEngineWrapperTestParserForHwdbg ( const string & Expr)

test parser for hwdbg

Parameters
Expr
Returns
VOID
753{
755 {
756 g_HwdbgPinsStatus = (UINT64 *)malloc(MAX_HWDBG_TESTING_PIN_COUNT * sizeof(UINT64));
757
758 if (g_HwdbgPinsStatus == NULL)
759 {
760 ShowMessages("err, could not allocate memory for hwdbg pins status");
761
762 return;
763 }
764
765 RtlZeroMemory(g_HwdbgPinsStatus, MAX_HWDBG_TESTING_PIN_COUNT * sizeof(UINT64));
766 }
767
769}
#define MAX_HWDBG_TESTING_PIN_COUNT
Maximum hwdbg testing pins count (for emulating the script behavior).
Definition Definition.h:65
struct GUEST_REGS * PGUEST_REGS
UINT64 * g_HwdbgPinsStatus
Holder of pins (and ports) status of hwdbg.
Definition globals.h:709