HyperDbg Debugger
Loading...
Searching...
No Matches
interpreter.cpp File Reference

The hyperdbg command interpreter and driver connector. More...

#include "pch.h"

Classes

class  CommandParser
 

Functions

INT HyperDbgInterpreter (CHAR *Command)
 Interpret commands.
 
VOID InterpreterRemoveComments (char *CommandText)
 Remove batch comments.
 
VOID HyperDbgShowSignature ()
 Show signature of HyperDbg.
 
BOOLEAN CheckMultilineCommand (CHAR *CurrentCommand, BOOLEAN Reset)
 check for multi-line commands
 
BOOLEAN ContinuePreviousCommand ()
 Some of commands like stepping commands (i, p, t) and etc. need to be repeated when the user press enter, this function shows whether we should continue the previous command or not.
 
UINT64 GetCommandAttributes (const string &FirstCommand)
 Get Command Attributes.
 
VOID InitializeDebugger ()
 Initialize the debugger and adjust commands for the first run.
 
VOID InitializeCommandsDictionary ()
 Initialize commands and attributes.
 

Variables

ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState
 State of active debugging thread.
 
CommandType g_CommandsList
 List of command and attributes.
 
BOOLEAN g_ShouldPreviousCommandBeContinued
 Shows whether the previous command should be continued or not.
 
BOOLEAN g_IsCommandListInitialized
 Is list of command initialized.
 
BOOLEAN g_LogOpened
 Shows whether the '.logopen' command is executed and the log file is open or not.
 
BOOLEAN g_ExecutingScript
 Shows whether the target is executing a script form '.script' command or executing script by an argument.
 
BOOLEAN g_IsConnectedToHyperDbgLocally
 Shows whether the user is allowed to use 'load' command to load modules locally in VMI (virtual machine introspection) mode.
 
BOOLEAN g_IsConnectedToRemoteDebuggee
 Shows whether the current debugger is the host and connected to a remote debuggee (guest)
 
BOOLEAN g_IsSerialConnectedToRemoteDebuggee
 Shows if the debugger was connected to remote debuggee over (A remote guest)
 
BOOLEAN g_IsDebuggeeRunning
 Shows if the debuggee is running or not.
 
BOOLEAN g_BreakPrintingOutput
 Shows whether the pause command or CTRL+C or CTRL+Break is executed or not.
 
BOOLEAN g_IsInterpreterOnString
 shows whether the interpreter is currently on a string or not
 
BOOLEAN g_IsInterpreterPreviousCharacterABackSlash
 Is interpreter encountered a back slash at previous run.
 
BOOLEAN g_RtmSupport
 check for RTM support
 
UINT32 g_VirtualAddressWidth
 Virtual address width for x86 processors.
 
UINT32 g_InterpreterCountOfOpenCurlyBrackets
 Keeps the trace of curly brackets in the interpreter.
 
ULONG g_CurrentRemoteCore
 Current core that the debuggee is debugging.
 
string g_ServerPort
 In debugger (not debuggee), we save the port of server debuggee in this variable to use it later e.g, in signature.
 
string g_ServerIp
 In debugger (not debuggee), we save the port of server debuggee in this variable to use it later e.g, in signature.
 

Detailed Description

The hyperdbg command interpreter and driver connector.

Author
Sina Karvandi (sina@.nosp@m.hype.nosp@m.rdbg..nosp@m.org)
Version
0.1
Date
2020-04-11

Function Documentation

◆ CheckMultilineCommand()

BOOLEAN CheckMultilineCommand ( CHAR * CurrentCommand,
BOOLEAN Reset )

check for multi-line commands

Parameters
CurrentCommand
Reset
Returns
BOOLEAN return TRUE if the command needs extra input, otherwise return FALSE
612{
613 UINT32 CurrentCommandLen = 0;
614 std::string CurrentCommandStr(CurrentCommand);
615
616 if (Reset)
617 {
621 }
622
623 CurrentCommandLen = (UINT32)CurrentCommandStr.length();
624
625 for (size_t i = 0; i < CurrentCommandLen; i++)
626 {
627 switch (CurrentCommandStr.at(i))
628 {
629 case '"':
630
632 {
634 break; // it's an escaped \" double-quote
635 }
636
639 else
641
642 break;
643
644 case '{':
645
648
651
652 break;
653
654 case '}':
655
658
661
662 break;
663
664 case '\\':
665
667 g_IsInterpreterPreviousCharacterABackSlash = FALSE; // it's not a escape character (two backslashes \\ )
668 else
670
671 break;
672
673 default:
674
677
678 break;
679 }
680 }
681
683 {
684 //
685 // either the command is finished or it's a single
686 // line command
687 //
688 return FALSE;
689 }
690 else
691 {
692 //
693 // There still other lines, this command is incomplete
694 //
695 return TRUE;
696 }
697}
#define TRUE
Definition BasicTypes.h:55
#define FALSE
Definition BasicTypes.h:54
unsigned int UINT32
Definition BasicTypes.h:48
UINT32 g_InterpreterCountOfOpenCurlyBrackets
Keeps the trace of curly brackets in the interpreter.
Definition globals.h:47
BOOLEAN g_IsInterpreterPreviousCharacterABackSlash
Is interpreter encountered a back slash at previous run.
Definition globals.h:42
BOOLEAN g_IsInterpreterOnString
shows whether the interpreter is currently on a string or not
Definition globals.h:37

◆ ContinuePreviousCommand()

BOOLEAN ContinuePreviousCommand ( )

Some of commands like stepping commands (i, p, t) and etc. need to be repeated when the user press enter, this function shows whether we should continue the previous command or not.

Returns
TRUE means the command should be continued, FALSE means command should be ignored
709{
711
712 //
713 // We should keep it false for the next command
714 //
716
717 if (Result)
718 {
719 return TRUE;
720 }
721 else
722 {
723 return FALSE;
724 }
725}
UCHAR BOOLEAN
Definition BasicTypes.h:39
BOOLEAN g_ShouldPreviousCommandBeContinued
Shows whether the previous command should be continued or not.
Definition globals.h:318

◆ GetCommandAttributes()

UINT64 GetCommandAttributes ( const string & FirstCommand)

Get Command Attributes.

Parameters
FirstCommandjust the first word of command (without other parameters)
Returns
BOOLEAN Mask of the command's attributes
735{
736 CommandType::iterator Iterator;
737
738 //
739 // Some commands should not be passed to the remote system
740 // and instead should be handled in the current debugger
741 //
742
743 Iterator = g_CommandsList.find(FirstCommand);
744
745 if (Iterator == g_CommandsList.end())
746 {
747 //
748 // Command doesn't exist, if it's not exists then it's better to handle
749 // it locally, instead of sending it to the remote computer
750 //
752 }
753 else
754 {
755 return Iterator->second.CommandAttrib;
756 }
757
758 return NULL;
759}
#define DEBUGGER_COMMAND_ATTRIBUTE_ABSOLUTE_LOCAL
Absolute local commands.
Definition commands.h:202
CommandType g_CommandsList
List of command and attributes.
Definition globals.h:324
NULL()
Definition test-case-generator.py:530

◆ HyperDbgInterpreter()

INT HyperDbgInterpreter ( CHAR * Command)

Interpret commands.

Parameters
CommandThe text of command
Returns
INT returns return zero if it was successful or non-zero if there was error
281{
282 BOOLEAN HelpCommand = FALSE;
283 UINT64 CommandAttributes = NULL;
284 CommandType::iterator Iterator;
285
286 //
287 // Check if it's the first command and whether the mapping of command is
288 // initialized or not
289 //
291 {
292 //
293 // Initialize the debugger
294 //
296
298 }
299
300 //
301 // Save the command into log open file
302 //
304 {
305 LogopenSaveToFile(Command);
306 LogopenSaveToFile("\n");
307 }
308
309 //
310 // Remove the comments
311 //
313
314 //
315 // Convert to string
316 //
317 string CommandString(Command);
318
319 // for test
320 // CommandParser parser;
321 // auto tokens1 = parser.parse(CommandString);
322
323 //
324 // Convert to lower case
325 //
326 transform(CommandString.begin(), CommandString.end(), CommandString.begin(), [](unsigned char c) { return std::tolower(c); });
327
328 vector<string> SplitCommand {Split(CommandString, ' ')};
329
330 //
331 // Check if user entered an empty input
332 //
333 if (SplitCommand.empty())
334 {
335 ShowMessages("\n");
336 return 0;
337 }
338
339 string FirstCommand = SplitCommand.front();
340
341 //
342 // Read the command's attributes
343 //
344 CommandAttributes = GetCommandAttributes(FirstCommand);
345
346 //
347 // Check if the command needs to be continued by pressing enter
348 //
349 if (CommandAttributes & DEBUGGER_COMMAND_ATTRIBUTE_REPEAT_ON_ENTER)
350 {
352 }
353 else
354 {
356 }
357
358 //
359 // Check and send remote command and also we check whether this
360 // is a command that should be handled in this command or we can
361 // send it to the remote computer, it is because in a remote connection
362 // still some of the commands should be handled in the local HyperDbg
363 //
366 {
367 //
368 // Check it here because generally, we use this variable in host
369 // for showing the correct signature but we won't try to block
370 // other commands, the only thing is events which is blocked
371 // by the remote computer itself
372 //
374 {
376 }
377
378 //
379 // It's a connection over network (VMI-Mode)
380 //
381 RemoteConnectionSendCommand(Command, (UINT32)strlen(Command) + 1);
382
383 ShowMessages("\n");
384
385 //
386 // Indicate that we sent the command to the target system
387 //
388 return 2;
389 }
391 !(CommandAttributes &
393 {
394 //
395 // It's a connection over serial (Debugger-Mode)
396 //
397
399 {
400 KdSendUserInputPacketToDebuggee(Command, (UINT32)strlen(Command) + 1, TRUE);
401
402 //
403 // Set the debuggee to show that it's running
404 //
406 }
407 else
408 {
409 //
410 // Disable the breakpoints and events while executing the command in the remote computer
411 //
413 KdSendUserInputPacketToDebuggee(Command, (UINT32)strlen(Command) + 1, FALSE);
415 }
416
417 //
418 // Indicate that we sent the command to the target system
419 //
420 return 2;
421 }
422
423 //
424 // Detect whether it's a .help command or not
425 //
426 if (!FirstCommand.compare(".help") || !FirstCommand.compare("help") ||
427 !FirstCommand.compare(".hh"))
428 {
429 if (SplitCommand.size() == 2)
430 {
431 //
432 // Show that it's a help command
433 //
434 HelpCommand = TRUE;
435 FirstCommand = SplitCommand.at(1);
436 }
437 else
438 {
439 ShowMessages("incorrect use of the '%s'\n", FirstCommand.c_str());
441 return 0;
442 }
443 }
444
445 //
446 // Start parsing commands
447 //
448 Iterator = g_CommandsList.find(FirstCommand);
449
450 if (Iterator == g_CommandsList.end())
451 {
452 //
453 // Command doesn't exist
454 //
455 string CaseSensitiveCommandString(Command);
456 vector<string> CaseSensitiveSplitCommand {Split(CaseSensitiveCommandString, ' ')};
457
458 if (!HelpCommand)
459 {
460 ShowMessages("err, couldn't resolve command at '%s'\n", CaseSensitiveSplitCommand.front().c_str());
461 }
462 else
463 {
464 ShowMessages("err, couldn't find the help for the command at '%s'\n",
465 CaseSensitiveSplitCommand.at(1).c_str());
466 }
467 }
468 else
469 {
470 if (HelpCommand)
471 {
472 Iterator->second.CommandHelpFunction();
473 }
474 else
475 {
476 //
477 // Check if command is case-sensitive or not
478 //
479 if ((Iterator->second.CommandAttrib &
481 {
482 string CaseSensitiveCommandString(Command);
483 Iterator->second.CommandFunction(SplitCommand, CaseSensitiveCommandString);
484 }
485 else
486 {
487 Iterator->second.CommandFunction(SplitCommand, CommandString);
488 }
489 }
490 }
491
492 //
493 // Save the command into log open file
494 //
496 {
497 LogopenSaveToFile("\n");
498 }
499
500 return 0;
501}
unsigned __int64 UINT64
Definition BasicTypes.h:21
@ TEST_BREAKPOINT_TURN_ON_BPS_AND_EVENTS_FOR_COMMANDS_IN_REMOTE_COMPUTER
Definition RequestStructures.h:319
@ TEST_BREAKPOINT_TURN_OFF_BPS_AND_EVENTS_FOR_COMMANDS_IN_REMOTE_COMPUTER
Definition RequestStructures.h:318
#define DEBUGGER_COMMAND_ATTRIBUTE_WONT_STOP_DEBUGGER_AGAIN
Definition commands.h:195
#define DEBUGGER_COMMAND_ATTRIBUTE_LOCAL_COMMAND_IN_DEBUGGER_MODE
Definition commands.h:191
#define DEBUGGER_COMMAND_ATTRIBUTE_REPEAT_ON_ENTER
Definition commands.h:194
#define DEBUGGER_COMMAND_ATTRIBUTE_LOCAL_COMMAND_IN_REMOTE_CONNECTION
Definition commands.h:192
#define DEBUGGER_COMMAND_ATTRIBUTE_LOCAL_CASE_SENSITIVE
Definition commands.h:193
const vector< string > Split(const string &s, const char &c)
general split command
Definition common.cpp:117
VOID CommandHelpHelp()
help of the help command :)
Definition help.cpp:22
BOOLEAN g_IsConnectedToRemoteDebuggee
Shows whether the current debugger is the host and connected to a remote debuggee (guest)
Definition globals.h:74
BOOLEAN g_LogOpened
Shows whether the '.logopen' command is executed and the log file is open or not.
Definition globals.h:478
VOID InterpreterRemoveComments(char *CommandText)
Remove batch comments.
Definition interpreter.cpp:509
BOOLEAN g_IsCommandListInitialized
Is list of command initialized.
Definition globals.h:348
UINT64 GetCommandAttributes(const string &FirstCommand)
Get Command Attributes.
Definition interpreter.cpp:734
BOOLEAN g_IsSerialConnectedToRemoteDebuggee
Shows if the debugger was connected to remote debuggee over (A remote guest)
Definition globals.h:231
BOOLEAN g_BreakPrintingOutput
Shows whether the pause command or CTRL+C or CTRL+Break is executed or not.
Definition globals.h:499
VOID InitializeDebugger()
Initialize the debugger and adjust commands for the first run.
Definition interpreter.cpp:767
BOOLEAN g_ExecutingScript
Shows whether the target is executing a script form '.script' command or executing script by an argum...
Definition globals.h:492
BOOLEAN KdSendUserInputPacketToDebuggee(const char *Sendbuf, int Len, BOOLEAN IgnoreBreakingAgain)
Sends user input packet to the debuggee.
Definition kd.cpp:1120
BOOLEAN KdSendTestQueryPacketToDebuggee(DEBUGGER_TEST_QUERY_STATE Type)
Send a test query request to the debuggee.
Definition kd.cpp:425
VOID KdSetStatusAndWaitForPause()
VOID ShowMessages(const char *Fmt,...)
Show messages.
Definition libhyperdbg.cpp:96
VOID LogopenSaveToFile(const char *Text)
Append text to the file object.
Definition logopen.cpp:119
int RemoteConnectionSendCommand(const char *sendbuf, int len)
send the command as a client (debugger, host) to the server (debuggee, guest)
Definition remote-connection.cpp:445

◆ HyperDbgShowSignature()

VOID HyperDbgShowSignature ( )

Show signature of HyperDbg.

Returns
VOID
567{
569 {
570 //
571 // Remote debugging over tcp (vmi-mode)
572 //
573 ShowMessages("[%s:%s] HyperDbg> ", g_ServerIp.c_str(), g_ServerPort.c_str());
574 }
576 {
577 //
578 // Debugging a special process
579 //
580 ShowMessages("%x:%x u%sHyperDbg> ",
584 }
586 {
587 //
588 // Remote debugging over serial (debugger-mode)
589 //
590 ShowMessages("%x: kHyperDbg> ", g_CurrentRemoteCore);
591 }
592 else
593 {
594 //
595 // Anything other than above scenarios including local debugging
596 // in vmi-mode
597 //
598 ShowMessages("HyperDbg> ");
599 }
600}
ULONG g_CurrentRemoteCore
Current core that the debuggee is debugging.
Definition globals.h:263
string g_ServerPort
In debugger (not debuggee), we save the port of server debuggee in this variable to use it later e....
Definition globals.h:110
ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState
State of active debugging thread.
Definition globals.h:362
string g_ServerIp
In debugger (not debuggee), we save the port of server debuggee in this variable to use it later e....
Definition globals.h:117
UINT32 ProcessId
Definition ud.h:51
BOOLEAN IsActive
Definition ud.h:49
UINT32 ThreadId
Definition ud.h:52
BOOLEAN Is32Bit
Definition ud.h:56

◆ InitializeCommandsDictionary()

VOID InitializeCommandsDictionary ( )

Initialize commands and attributes.

Returns
VOID
818{
822
826
829
832
835
838
841
844
847
850
853
858
863
865
868
873
876
879
882
884
887
889
891
893
896
898
900
904
906
908
911
913
915
917
919
921
923
926
928
931
933
935
938
940
942
944
946
948
950
952
955
957
959
961
963
965
967
970
972
974
977
980
982
984
986
988
990
992
995
998
1001
1003
1052
1059
1066
1068
1071
1074
1076
1080
1084
1088
1091
1094
1096
1099
1102
1106
1107 //
1108 // hwdbg commands
1109 //
1114
1123}
VOID CommandAssembleHelp()
help of a and !a command
Definition a.cpp:43
VOID CommandAssemble(vector< string > SplitCommand, string Command)
a and !a commands handler
Definition a.cpp:182
VOID CommandAttachHelp()
help of the .attach command
Definition attach.cpp:26
VOID CommandAttach(vector< string > SplitCommand, string Command)
.attach command handler
Definition attach.cpp:44
VOID CommandBcHelp()
help of the bc command
Definition bc.cpp:25
VOID CommandBc(vector< string > SplitCommand, string Command)
handler of bc command
Definition bc.cpp:44
VOID CommandBdHelp()
help of the bd command
Definition bd.cpp:25
VOID CommandBd(vector< string > SplitCommand, string Command)
handler of bd command
Definition bd.cpp:44
VOID CommandBe(vector< string > SplitCommand, string Command)
handler of be command
Definition be.cpp:44
VOID CommandBeHelp()
help of the be command
Definition be.cpp:25
VOID CommandBlHelp()
help of the bl command
Definition bl.cpp:25
VOID CommandBl(vector< string > SplitCommand, string Command)
handler of the bl command
Definition bl.cpp:40
VOID CommandBpHelp()
help of the bp command
Definition bp.cpp:25
VOID CommandBp(vector< string > SplitCommand, string Command)
bp command handler
Definition bp.cpp:83
VOID CommandClearScreenHelp()
help of the .cls command
Definition cls.cpp:20
VOID CommandClearScreen(vector< string > SplitCommand, string Command)
.cls command handler
Definition cls.cpp:35
#define DEBUGGER_COMMAND_IOOUT_ATTRIBUTES
Definition commands.h:337
#define DEBUGGER_COMMAND_LOAD_ATTRIBUTES
Definition commands.h:262
#define DEBUGGER_COMMAND_INTERRUPT_ATTRIBUTES
Definition commands.h:341
#define DEBUGGER_COMMAND_PAGEIN_ATTRIBUTES
Definition commands.h:424
#define DEBUGGER_COMMAND_X_ATTRIBUTES
Definition commands.h:401
#define DEBUGGER_COMMAND_HELP_ATTRIBUTES
Definition commands.h:213
#define DEBUGGER_COMMAND_BD_ATTRIBUTES
Definition commands.h:386
#define DEBUGGER_COMMAND_MEASURE_ATTRIBUTES
Definition commands.h:355
#define DEBUGGER_COMMAND_HIDE_ATTRIBUTES
Definition commands.h:351
#define DEBUGGER_COMMAND_A_ATTRIBUTES
Definition commands.h:434
#define DEBUGGER_COMMAND_VMCALL_ATTRIBUTES
Definition commands.h:315
#define DEBUGGER_COMMAND_DT_ATTRIBUTES
Definition commands.h:411
#define DEBUGGER_COMMAND_FORMATS_ATTRIBUTES
Definition commands.h:305
#define DEBUGGER_COMMAND_STRUCT_ATTRIBUTES
Definition commands.h:414
#define DEBUGGER_COMMAND_PTE_ATTRIBUTES
Definition commands.h:308
#define DEBUGGER_COMMAND_DUMP_ATTRIBUTES
Definition commands.h:426
#define DEBUGGER_COMMAND_DISCONNECT_ATTRIBUTES
Definition commands.h:251
#define DEBUGGER_COMMAND_TSC_ATTRIBUTES
Definition commands.h:327
#define DEBUGGER_COMMAND_K_ATTRIBUTES
Definition commands.h:408
#define DEBUGGER_COMMAND_FLUSH_ATTRIBUTES
Definition commands.h:267
#define DEBUGGER_COMMAND_S_ATTRIBUTES
Definition commands.h:374
#define DEBUGGER_COMMAND_BP_ATTRIBUTES
Definition commands.h:380
#define DEBUGGER_COMMAND_WRMSR_ATTRIBUTES
Definition commands.h:297
#define DEBUGGER_COMMAND_P_ATTRIBUTES
Definition commands.h:359
#define DEBUGGER_COMMAND_SYM_ATTRIBUTES
Definition commands.h:398
#define DEBUGGER_COMMAND_PA2VA_ATTRIBUTES
Definition commands.h:303
#define DEBUGGER_COMMAND_CPUID_ATTRIBUTES
Definition commands.h:321
#define DEBUGGER_COMMAND_REV_ATTRIBUTES
Definition commands.h:420
#define DEBUGGER_COMMAND_PMC_ATTRIBUTES
Definition commands.h:329
#define DEBUGGER_COMMAND_LISTEN_ATTRIBUTES
Definition commands.h:219
#define DEBUGGER_COMMAND_TEST_ATTRIBUTES
Definition commands.h:293
#define DEBUGGER_COMMAND_PREACTIVATE_ATTRIBUTES
Definition commands.h:406
#define DEBUGGER_COMMAND_OUTPUT_ATTRIBUTES
Definition commands.h:278
#define DEBUGGER_COMMAND_CORE_ATTRIBUTES
Definition commands.h:310
#define DEBUGGER_COMMAND_SCRIPT_ATTRIBUTES
Definition commands.h:275
#define DEBUGGER_COMMAND_RDMSR_ATTRIBUTES
Definition commands.h:299
#define DEBUGGER_COMMAND_PE_ATTRIBUTES
Definition commands.h:417
#define DEBUGGER_COMMAND_SWITCH_ATTRIBUTES
Definition commands.h:228
#define DEBUGGER_COMMAND_MSRWRITE_ATTRIBUTES
Definition commands.h:325
#define DEBUGGER_COMMAND_RESTART_ATTRIBUTES
Definition commands.h:232
#define DEBUGGER_COMMAND_SETTINGS_ATTRIBUTES
Definition commands.h:248
#define DEBUGGER_COMMAND_VA2PA_ATTRIBUTES
Definition commands.h:301
#define DEBUGGER_COMMAND_UNHIDE_ATTRIBUTES
Definition commands.h:353
#define DEBUGGER_COMMAND_STATUS_ATTRIBUTES
Definition commands.h:260
#define DEBUGGER_COMMAND_PAUSE_ATTRIBUTES
Definition commands.h:270
#define DEBUGGER_COMMAND_LOGCLOSE_ATTRIBUTES
Definition commands.h:290
#define DEBUGGER_COMMAND_G_ATTRIBUTES
Definition commands.h:222
#define DEBUGGER_COMMAND_LOGOPEN_ATTRIBUTES
Definition commands.h:287
#define DEBUGGER_COMMAND_CONNECT_ATTRIBUTES
Definition commands.h:216
#define DEBUGGER_COMMAND_E_ATTRIBUTES
Definition commands.h:371
#define DEBUGGER_COMMAND_IOIN_ATTRIBUTES
Definition commands.h:335
#define DEBUGGER_COMMAND_SYMPATH_ATTRIBUTES
Definition commands.h:395
#define DEBUGGER_COMMAND_EXCEPTION_ATTRIBUTES
Definition commands.h:339
#define DEBUGGER_COMMAND_T_ATTRIBUTES
Definition commands.h:362
#define DEBUGGER_COMMAND_HWDBG_HW_CLK_ATTRIBUTES
Definition commands.h:432
#define DEBUGGER_COMMAND_MODE_ATTRIBUTES
Definition commands.h:347
#define DEBUGGER_COMMAND_LM_ATTRIBUTES
Definition commands.h:357
#define DEBUGGER_COMMAND_SYSRET_ATTRIBUTES
Definition commands.h:345
#define DEBUGGER_COMMAND_TRACE_ATTRIBUTES
Definition commands.h:349
#define DEBUGGER_COMMAND_UNLOAD_ATTRIBUTES
Definition commands.h:273
#define DEBUGGER_COMMAND_THREAD_ATTRIBUTES
Definition commands.h:239
#define DEBUGGER_COMMAND_EPTHOOK_ATTRIBUTES
Definition commands.h:317
#define DEBUGGER_COMMAND_SLEEP_ATTRIBUTES
Definition commands.h:242
#define DEBUGGER_COMMAND_PREALLOC_ATTRIBUTES
Definition commands.h:404
#define DEBUGGER_COMMAND_EPTHOOK2_ATTRIBUTES
Definition commands.h:319
#define DEBUGGER_COMMAND_MONITOR_ATTRIBUTES
Definition commands.h:313
#define DEBUGGER_COMMAND_PRINT_ATTRIBUTES
Definition commands.h:281
#define DEBUGGER_COMMAND_START_ATTRIBUTES
Definition commands.h:230
#define DEBUGGER_COMMAND_DOT_STATUS_ATTRIBUTES
Definition commands.h:257
#define DEBUGGER_COMMAND_DR_ATTRIBUTES
Definition commands.h:333
#define DEBUGGER_COMMAND_CLEAR_ATTRIBUTES
Command's attributes.
Definition commands.h:210
#define DEBUGGER_COMMAND_SYSCALL_ATTRIBUTES
Definition commands.h:343
#define DEBUGGER_COMMAND_GU_ATTRIBUTES
Definition commands.h:429
#define DEBUGGER_COMMAND_PROCESS_ATTRIBUTES
Definition commands.h:236
#define DEBUGGER_COMMAND_KILL_ATTRIBUTES
Definition commands.h:234
#define DEBUGGER_COMMAND_I_ATTRIBUTES
Definition commands.h:365
#define DEBUGGER_COMMAND_CRWRITE_ATTRIBUTES
Definition commands.h:331
#define DEBUGGER_COMMAND_D_AND_U_ATTRIBUTES
Definition commands.h:368
#define DEBUGGER_COMMAND_CPU_ATTRIBUTES
Definition commands.h:295
#define DEBUGGER_COMMAND_MSRREAD_ATTRIBUTES
Definition commands.h:323
#define DEBUGGER_COMMAND_EVENTS_ATTRIBUTES
Definition commands.h:245
#define DEBUGGER_COMMAND_ATTACH_ATTRIBUTES
Definition commands.h:224
#define DEBUGGER_COMMAND_EXIT_ATTRIBUTES
Definition commands.h:264
#define DEBUGGER_COMMAND_EVAL_ATTRIBUTES
Definition commands.h:284
#define DEBUGGER_COMMAND_DETACH_ATTRIBUTES
Definition commands.h:226
#define DEBUGGER_COMMAND_TRACK_ATTRIBUTES
Definition commands.h:422
#define DEBUGGER_COMMAND_R_ATTRIBUTES
Definition commands.h:377
#define DEBUGGER_COMMAND_DEBUG_ATTRIBUTES
Definition commands.h:254
VOID CommandConnect(vector< string > SplitCommand, string Command)
.connect command handler
Definition connect.cpp:106
VOID CommandConnectHelp()
help of the .connect command
Definition connect.cpp:31
VOID CommandCore(vector< string > SplitCommand, string Command)
~ command handler
Definition core.cpp:46
VOID CommandCoreHelp()
help of the ~ command
Definition core.cpp:26
VOID CommandCpuHelp()
help of the cpu command
Definition cpu.cpp:20
VOID CommandCpu(vector< string > SplitCommand, string Command)
cpu command handler
Definition cpu.cpp:35
VOID CommandCpuid(vector< string > SplitCommand, string Command)
!cpuid command handler
Definition cpuid.cpp:47
VOID CommandCpuidHelp()
help of the !cpuid command
Definition cpuid.cpp:20
VOID CommandCrwriteHelp()
help of the !crwrite command
Definition crwrite.cpp:20
VOID CommandCrwrite(vector< string > SplitCommand, string Command)
!crwrite command handler
Definition crwrite.cpp:46
VOID CommandReadMemoryAndDisassemblerHelp()
help of u* d* !u* !d* commands
Definition d-u.cpp:26
VOID CommandReadMemoryAndDisassembler(vector< string > SplitCommand, string Command)
u* d* !u* !d* commands handler
Definition d-u.cpp:72
VOID CommandDebug(vector< string > SplitCommand, string Command)
.debug command handler
Definition debug.cpp:210
VOID CommandDebugHelp()
help of the .debug command
Definition debug.cpp:29
VOID CommandDetachHelp()
help of the .detach command
Definition detach.cpp:26
VOID CommandDetach(vector< string > SplitCommand, string Command)
.detach command handler
Definition detach.cpp:71
VOID CommandDisconnect(vector< string > SplitCommand, string Command)
.disconnect command handler
Definition disconnect.cpp:44
VOID CommandDisconnectHelp()
help of the .disconnect command
Definition disconnect.cpp:28
VOID CommandDrHelp()
help of the !dr command
Definition dr.cpp:20
VOID CommandDr(vector< string > SplitCommand, string Command)
!dr command handler
Definition dr.cpp:45
VOID CommandDtAndStruct(vector< string > SplitCommand, string Command)
dt and struct command handler
Definition dt-struct.cpp:427
VOID CommandStructHelp()
help of the struct command
Definition dt-struct.cpp:63
VOID CommandDtHelp()
help of the dt command
Definition dt-struct.cpp:26
VOID CommandDumpHelp()
help of the .dump command
Definition dump.cpp:36
VOID CommandDump(vector< string > SplitCommand, string Command)
.dump command handler
Definition dump.cpp:62
VOID CommandEditMemoryHelp()
help of !e* and e* commands
Definition e.cpp:26
VOID CommandEditMemory(vector< string > SplitCommand, string Command)
!e* and e* commands handler
Definition e.cpp:265
VOID CommandEptHook2(vector< string > SplitCommand, string Command)
!epthook2 command handler
Definition epthook2.cpp:48
VOID CommandEptHook2Help()
help of the !epthook2 command
Definition epthook2.cpp:20
VOID CommandEptHook(vector< string > SplitCommand, string Command)
!epthook command handler
Definition epthook.cpp:47
VOID CommandEptHookHelp()
help of the !epthook command
Definition epthook.cpp:20
VOID CommandEvalHelp()
help of the ? command
Definition eval.cpp:27
VOID CommandEval(vector< string > SplitCommand, string Command)
handler of ? command
Definition eval.cpp:196
VOID CommandEventsHelp()
help of the events command
Definition events.cpp:32
VOID CommandEvents(vector< string > SplitCommand, string Command)
events command handler
Definition events.cpp:65
VOID CommandExceptionHelp()
help of the !exception command
Definition exception.cpp:20
VOID CommandException(vector< string > SplitCommand, string Command)
!exception command handler
Definition exception.cpp:50
VOID CommandExit(vector< string > SplitCommand, string Command)
exit command handler
Definition exit.cpp:43
VOID CommandExitHelp()
help of the exit command
Definition exit.cpp:27
VOID CommandFlush(vector< string > SplitCommand, string Command)
flush command handler
Definition flush.cpp:109
VOID CommandFlushHelp()
help of the flush command
Definition flush.cpp:25
VOID CommandFormats(vector< string > SplitCommand, string Command)
handler of .formats command
Definition formats.cpp:105
VOID CommandFormatsHelp()
help of the help command :)
Definition formats.cpp:20
VOID CommandG(vector< string > SplitCommand, string Command)
handler of g command
Definition g.cpp:93
VOID CommandGHelp()
help of the g command
Definition g.cpp:28
VOID CommandGu(vector< string > SplitCommand, string Command)
handler of gu command
Definition gu.cpp:51
VOID CommandGuHelp()
help of the gu command
Definition gu.cpp:29
VOID CommandHide(vector< string > SplitCommand, string Command)
!hide command handler
Definition hide.cpp:60
VOID CommandHideHelp()
help of the !hide command
Definition hide.cpp:34
VOID CommandHwClkHelp()
help of the !hw_clk command
Definition hw_clk.cpp:28
VOID CommandHwClk(vector< string > SplitCommand, string Command)
!hw_clk command handler
Definition hw_clk.cpp:46
VOID CommandIHelp()
help of the i command
Definition i.cpp:27
VOID CommandI(vector< string > SplitCommand, string Command)
handler of i command
Definition i.cpp:55
VOID CommandInterruptHelp()
help of the !interrupt command
Definition interrupt.cpp:20
VOID CommandInterrupt(vector< string > SplitCommand, string Command)
!interrupt command handler
Definition interrupt.cpp:48
VOID CommandIoin(vector< string > SplitCommand, string Command)
!ioin command handler
Definition ioin.cpp:47
VOID CommandIoinHelp()
help of the !ioin command
Definition ioin.cpp:20
VOID CommandIooutHelp()
help of the !ioout command
Definition ioout.cpp:20
VOID CommandIoout(vector< string > SplitCommand, string Command)
!ioout command handler
Definition ioout.cpp:47
VOID CommandK(vector< string > SplitCommand, string Command)
k command handler
Definition k.cpp:55
VOID CommandKHelp()
help of the k command
Definition k.cpp:26
VOID CommandKillHelp()
help of the .kill command
Definition kill.cpp:26
VOID CommandKill(vector< string > SplitCommand, string Command)
.kill command handler
Definition kill.cpp:41
VOID CommandListenHelp()
help of the listen command
Definition listen.cpp:29
VOID CommandListen(vector< string > SplitCommand, string Command)
listen command handler
Definition listen.cpp:53
VOID CommandLmHelp()
help of the lm command
Definition lm.cpp:27
VOID CommandLm(vector< string > SplitCommand, string Command)
handle lm command
Definition lm.cpp:385
VOID CommandLoad(vector< string > SplitCommand, string Command)
load command handler
Definition load.cpp:46
VOID CommandLoadHelp()
help of the load command
Definition load.cpp:28
VOID CommandLogclose(vector< string > SplitCommand, string Command)
.logclose command handler
Definition logclose.cpp:41
VOID CommandLogcloseHelp()
help .logclose command
Definition logclose.cpp:26
VOID CommandLogopen(vector< string > SplitCommand, string Command)
.logopen command handler
Definition logopen.cpp:43
VOID CommandLogopenHelp()
help of the .logopen command
Definition logopen.cpp:28
VOID CommandMeasure(vector< string > SplitCommand, string Command)
!measure command handler
Definition measure.cpp:53
VOID CommandMeasureHelp()
help of the !measure command
Definition measure.cpp:33
VOID CommandModeHelp()
help of the !mode command
Definition mode.cpp:20
VOID CommandMode(vector< string > SplitCommand, string Command)
!mode command handler
Definition mode.cpp:48
VOID CommandMonitorHelp()
help of the !monitor command
Definition monitor.cpp:20
VOID CommandMonitor(vector< string > SplitCommand, string Command)
!monitor command handler
Definition monitor.cpp:61
VOID CommandMsrreadHelp()
help of the !msrread command
Definition msrread.cpp:20
VOID CommandMsrread(vector< string > SplitCommand, string Command)
!msrread command handler
Definition msrread.cpp:46
VOID CommandMsrwriteHelp()
help of the !msrwrite command
Definition msrwrite.cpp:20
VOID CommandMsrwrite(vector< string > SplitCommand, string Command)
!msrwrite command handler
Definition msrwrite.cpp:46
VOID CommandOutputHelp()
help of the output command
Definition output.cpp:26
VOID CommandOutput(vector< string > SplitCommand, string Command)
output command handler
Definition output.cpp:54
VOID CommandP(vector< string > SplitCommand, string Command)
handler of p command
Definition p.cpp:52
VOID CommandPHelp()
help of the p command
Definition p.cpp:27
VOID CommandPa2vaHelp()
help of the !pa2va command
Definition pa2va.cpp:26
VOID CommandPa2va(vector< string > SplitCommand, string Command)
!pa2va command handler
Definition pa2va.cpp:48
VOID CommandPageinHelp()
help of the .pagein command
Definition pagein.cpp:26
VOID CommandPagein(vector< string > SplitCommand, string Command)
.pagein command handler
Definition pagein.cpp:264
VOID CommandPause(vector< string > SplitCommand, string Command)
pause command handler
Definition pause.cpp:71
VOID CommandPauseHelp()
help of the pause command
Definition pause.cpp:27
VOID CommandPe(vector< string > SplitCommand, string Command)
.pe command handler
Definition pe.cpp:43
VOID CommandPeHelp()
help of the .pe command
Definition pe.cpp:22
VOID CommandPmcHelp()
help of the !pmc command
Definition pmc.cpp:20
VOID CommandPmc(vector< string > SplitCommand, string Command)
!pmc command handler
Definition pmc.cpp:45
VOID CommandPreactivate(vector< string > SplitCommand, string Command)
preactivate command handler
Definition preactivate.cpp:42
VOID CommandPreactivateHelp()
help of the preactivate command
Definition preactivate.cpp:20
VOID CommandPreallocHelp()
help of the prealloc command
Definition prealloc.cpp:20
VOID CommandPrealloc(vector< string > SplitCommand, string Command)
prealloc command handler
Definition prealloc.cpp:54
VOID CommandPrint(vector< string > SplitCommand, string Command)
handler of print command
Definition print.cpp:46
VOID CommandPrintHelp()
help of the print command
Definition print.cpp:28
VOID CommandProcessHelp()
help of the .process command
Definition process.cpp:25
VOID CommandProcess(vector< string > SplitCommand, string Command)
.process command handler
Definition process.cpp:56
VOID CommandPteHelp()
help of the !pte command
Definition pte.cpp:26
VOID CommandPte(vector< string > SplitCommand, string Command)
!pte command handler
Definition pte.cpp:91
VOID CommandRHelp()
help of the r command
Definition r.cpp:151
VOID CommandR(std::vector< std::string > SplitCommand, std::string Command)
handler of r command
Definition r.cpp:414
VOID CommandRdmsr(vector< string > SplitCommand, string Command)
rdmsr command handler
Definition rdmsr.cpp:114
VOID CommandRdmsrHelp()
help of the rdmsr command
Definition rdmsr.cpp:20
VOID CommandRestart(vector< string > SplitCommand, string Command)
.restart command handler
Definition restart.cpp:46
VOID CommandRestartHelp()
help of the .restart command
Definition restart.cpp:29
VOID CommandRev(vector< string > SplitCommand, string Command)
!rev command handler
Definition rev.cpp:51
VOID CommandRevHelp()
help of the !rev command
Definition rev.cpp:28
VOID CommandSearchMemoryHelp()
help of !s* s* commands
Definition s.cpp:26
VOID CommandSearchMemory(vector< string > SplitCommand, string Command)
!s* s* commands handler
Definition s.cpp:138
VOID CommandScriptHelp()
help of the .script command
Definition script.cpp:27
VOID CommandScript(vector< string > SplitCommand, string Command)
.script command handler
Definition script.cpp:268
VOID CommandSettingsHelp()
help of the settings command
Definition settings.cpp:29
VOID CommandSettings(vector< string > SplitCommand, string Command)
settings command handler
Definition settings.cpp:544
VOID CommandSleep(vector< string > SplitCommand, string Command)
sleep command help
Definition sleep.cpp:37
VOID CommandSleepHelp()
help of the sleep command
Definition sleep.cpp:20
VOID CommandStart(vector< string > SplitCommand, string Command)
.start command handler
Definition start.cpp:45
VOID CommandStartHelp()
help of the .start command
Definition start.cpp:27
VOID CommandStatus(vector< string > SplitCommand, string Command)
.status and status command handler
Definition status.cpp:50
VOID CommandStatusHelp()
help of the .status command
Definition status.cpp:31
VOID CommandSwitch(vector< string > SplitCommand, string Command)
.switch command handler
Definition switch.cpp:49
VOID CommandSwitchHelp()
help of the .switch command
Definition switch.cpp:26
VOID CommandSym(vector< string > SplitCommand, string Command)
.sym command handler
Definition sym.cpp:55
VOID CommandSymHelp()
help of the .sym command
Definition sym.cpp:26
VOID CommandSympathHelp()
help of the .sympath command
Definition sympath.cpp:24
VOID CommandSympath(vector< string > SplitCommand, string Command)
.sympath command handler
Definition sympath.cpp:44
VOID CommandSyscallAndSysret(vector< string > SplitCommand, string Command)
!syscall, !syscall2 and !sysret, !sysret2 commands handler
Definition syscall-sysret.cpp:84
VOID CommandSysretHelp()
help of the !sysret command
Definition syscall-sysret.cpp:54
VOID CommandSyscallHelp()
help of the !syscall command
Definition syscall-sysret.cpp:20
VOID CommandTHelp()
help of the t command
Definition t.cpp:27
VOID CommandT(vector< string > SplitCommand, string Command)
handler of t command
Definition t.cpp:52
VOID CommandTest(vector< string > SplitCommand, string Command)
test command handler
Definition test.cpp:364
VOID CommandTestHelp()
help of the test command
Definition test.cpp:25
VOID CommandThread(vector< string > SplitCommand, string Command)
.thread command handler
Definition thread.cpp:119
VOID CommandThreadHelp()
help of the .thread command
Definition thread.cpp:25
VOID CommandTraceHelp()
help of the !trace command
Definition trace.cpp:20
VOID CommandTrace(vector< string > SplitCommand, string Command)
!trace command handler
Definition trace.cpp:50
VOID CommandTrack(vector< string > SplitCommand, string Command)
handler of !track command
Definition track.cpp:59
VOID CommandTrackHelp()
help of the !track command
Definition track.cpp:36
VOID CommandTsc(vector< string > SplitCommand, string Command)
handler of !tsc command
Definition tsc.cpp:45
VOID CommandTscHelp()
help of the !tsc command
Definition tsc.cpp:20
VOID CommandUnhideHelp()
help of the !unhide command
Definition unhide.cpp:20
VOID CommandUnhide(vector< string > SplitCommand, string Command)
!unhide command handler
Definition unhide.cpp:38
VOID CommandUnloadHelp()
help of the unload command
Definition unload.cpp:28
VOID CommandUnload(vector< string > SplitCommand, string Command)
unload command handler
Definition unload.cpp:48
VOID CommandVa2pa(vector< string > SplitCommand, string Command)
!va2pa command handler
Definition va2pa.cpp:49
VOID CommandVa2paHelp()
help of the !va2pa command
Definition va2pa.cpp:26
VOID CommandVmcall(vector< string > SplitCommand, string Command)
!vmcall command handler
Definition vmcall.cpp:45
VOID CommandVmcallHelp()
help of the !vmcall command
Definition vmcall.cpp:20
VOID CommandWrmsrHelp()
help of the wrmsr command
Definition wrmsr.cpp:20
VOID CommandWrmsr(vector< string > SplitCommand, string Command)
wrmsr command handler
Definition wrmsr.cpp:42
VOID CommandX(vector< string > SplitCommand, string Command)
x command handler
Definition x.cpp:40
VOID CommandXHelp()
help of the x command
Definition x.cpp:20

◆ InitializeDebugger()

VOID InitializeDebugger ( )

Initialize the debugger and adjust commands for the first run.

Returns
VOID
768{
769 //
770 // Initialize the mapping of functions
771 //
773
774 //
775 // Set the callback for symbol message handler
776 //
778
779 //
780 // Register the CTRL+C and CTRL+BREAK Signals handler
781 //
782 if (!SetConsoleCtrlHandler(BreakController, TRUE))
783 {
784 ShowMessages("err, when registering CTRL+C and CTRL+BREAK Signals "
785 "handler\n");
786 //
787 // prefer to continue
788 //
789 }
790
791 //
792 // *** Check for feature indicators ***
793 //
794
795 //
796 // Get x86 processor width for virtual address
797 //
799
800 //
801 // Check if processor supports TSX (RTM)
802 //
804
805 //
806 // Load default settings
807 //
809}
BOOL BreakController(DWORD CtrlType)
handle CTRL+C and CTRL+Break events
Definition break-control.cpp:34
BOOLEAN CheckCpuSupportRtm()
Check whether the processor supports RTM or not.
Definition common.cpp:903
UINT32 Getx86VirtualAddressWidth()
Get virtual address width for x86 processors.
Definition common.cpp:885
VOID InitializeCommandsDictionary()
Initialize commands and attributes.
Definition interpreter.cpp:817
UINT32 g_VirtualAddressWidth
Virtual address width for x86 processors.
Definition globals.h:28
BOOLEAN g_RtmSupport
check for RTM support
Definition globals.h:22
VOID ScriptEngineSetTextMessageCallbackWrapper(PVOID Handler)
ScriptEngineSetTextMessageCallback wrapper.
Definition script-engine-wrapper.cpp:80
VOID CommandSettingsLoadDefaultValuesFromConfigFile()
Loads default settings values from config file.
Definition settings.cpp:161

◆ InterpreterRemoveComments()

VOID InterpreterRemoveComments ( char * CommandText)

Remove batch comments.

Returns
VOID
510{
511 BOOLEAN IsComment = FALSE;
512 BOOLEAN IsOnString = FALSE;
513 UINT32 LengthOfCommand = (UINT32)strlen(CommandText);
514
515 for (size_t i = 0; i < LengthOfCommand; i++)
516 {
517 if (IsComment)
518 {
519 if (CommandText[i] == '\n')
520 {
521 IsComment = FALSE;
522 }
523 else
524 {
525 if (CommandText[i] != '\0')
526 {
527 memmove((void *)&CommandText[i], (const void *)&CommandText[i + 1], strlen(CommandText) - i);
528 i--;
529 }
530 }
531 }
532 else if (CommandText[i] == '#' && !IsOnString)
533 {
534 //
535 // Comment detected
536 //
537 IsComment = TRUE;
538 i--;
539 }
540 else if (CommandText[i] == '"')
541 {
542 if (i != 0 && CommandText[i - 1] == '\\')
543 {
544 //
545 // It's an escape character for : \"
546 //
547 }
548 else if (IsOnString)
549 {
550 IsOnString = FALSE;
551 }
552 else
553 {
554 IsOnString = TRUE;
555 }
556 }
557 }
558}

Variable Documentation

◆ g_ActiveProcessDebuggingState

ACTIVE_DEBUGGING_PROCESS g_ActiveProcessDebuggingState
extern

State of active debugging thread.

362{0};

◆ g_BreakPrintingOutput

BOOLEAN g_BreakPrintingOutput
extern

Shows whether the pause command or CTRL+C or CTRL+Break is executed or not.

◆ g_CommandsList

CommandType g_CommandsList
extern

List of command and attributes.

◆ g_CurrentRemoteCore

ULONG g_CurrentRemoteCore
extern

Current core that the debuggee is debugging.

◆ g_ExecutingScript

BOOLEAN g_ExecutingScript
extern

Shows whether the target is executing a script form '.script' command or executing script by an argument.

◆ g_InterpreterCountOfOpenCurlyBrackets

UINT32 g_InterpreterCountOfOpenCurlyBrackets
extern

Keeps the trace of curly brackets in the interpreter.

◆ g_IsCommandListInitialized

BOOLEAN g_IsCommandListInitialized
extern

Is list of command initialized.

◆ g_IsConnectedToHyperDbgLocally

BOOLEAN g_IsConnectedToHyperDbgLocally
extern

Shows whether the user is allowed to use 'load' command to load modules locally in VMI (virtual machine introspection) mode.

◆ g_IsConnectedToRemoteDebuggee

BOOLEAN g_IsConnectedToRemoteDebuggee
extern

Shows whether the current debugger is the host and connected to a remote debuggee (guest)

◆ g_IsDebuggeeRunning

BOOLEAN g_IsDebuggeeRunning
extern

Shows if the debuggee is running or not.

◆ g_IsInterpreterOnString

BOOLEAN g_IsInterpreterOnString
extern

shows whether the interpreter is currently on a string or not

◆ g_IsInterpreterPreviousCharacterABackSlash

BOOLEAN g_IsInterpreterPreviousCharacterABackSlash
extern

Is interpreter encountered a back slash at previous run.

◆ g_IsSerialConnectedToRemoteDebuggee

BOOLEAN g_IsSerialConnectedToRemoteDebuggee
extern

Shows if the debugger was connected to remote debuggee over (A remote guest)

◆ g_LogOpened

BOOLEAN g_LogOpened
extern

Shows whether the '.logopen' command is executed and the log file is open or not.

◆ g_RtmSupport

BOOLEAN g_RtmSupport
extern

check for RTM support

◆ g_ServerIp

string g_ServerIp
extern

In debugger (not debuggee), we save the port of server debuggee in this variable to use it later e.g, in signature.

◆ g_ServerPort

string g_ServerPort
extern

In debugger (not debuggee), we save the port of server debuggee in this variable to use it later e.g, in signature.

◆ g_ShouldPreviousCommandBeContinued

BOOLEAN g_ShouldPreviousCommandBeContinued
extern

Shows whether the previous command should be continued or not.

◆ g_VirtualAddressWidth

UINT32 g_VirtualAddressWidth
extern

Virtual address width for x86 processors.