HyperDbg Debugger
Loading...
Searching...
No Matches
HaltedBroadcast.c File Reference

Broadcasting functions in case of halted cores. More...

#include "pch.h"

Functions

VOID HaltedBroadcastChangeAllMsrBitmapReadAllCores (UINT64 BitmapMask)
 This function broadcasts MSR (READ) changes to all cores.
 
VOID HaltedBroadcastChangeAllMsrBitmapWriteAllCores (UINT64 BitmapMask)
 This function broadcasts MSR (WRITE) changes to all cores.
 
VOID HaltedBroadcastChangeAllIoBitmapAllCores (UINT64 Port)
 This function broadcasts IO changes to all cores.
 
VOID HaltedBroadcastEnableRdpmcExitingAllCores ()
 This function broadcasts enable RDPMC exiting to all cores.
 
VOID HaltedBroadcastEnableRdtscExitingAllCores ()
 This function broadcasts enable rdtsc/rdtscp exiting to all cores.
 
VOID HaltedBroadcastEnableMov2DebugRegsExitingAllCores ()
 This function broadcasts enable mov to debug registers exiting to all cores.
 
VOID HaltedBroadcastEnableExternalInterruptExitingAllCores ()
 This function broadcasts enable external interrupt exiting to all cores.
 
VOID HaltedBroadcastSetExceptionBitmapAllCores (UINT64 ExceptionIndex)
 This function broadcasts set exception bitmap to all cores.
 
VOID HaltedBroadcastUnSetExceptionBitmapAllCores (UINT64 ExceptionIndex)
 This function broadcasts unset exception bitmap on VMCS to all cores.
 
VOID HaltedBroadcastEnableMovToCrExitingAllCores (DEBUGGER_EVENT_OPTIONS *BroadcastingOption)
 This function broadcasts enable mov to CR exiting to all cores.
 
VOID HaltedBroadcastEnableEferSyscallHookAllCores ()
 This function broadcasts enable syscall hook using EFER SCE bit to all cores.
 
VOID HaltedBroadcastInvalidateEptAllContextsAllCores ()
 This function broadcasts invalidate EPT (All Contexts) to all cores.
 
VOID HaltedBroadcastInvalidateSingleContextAllCores ()
 This function broadcasts invalidate EPT (A Single Context) to all cores.
 
VOID HaltedBroadcastUnhookSinglePageAllCores (EPT_SINGLE_HOOK_UNHOOKING_DETAILS *UnhookingDetail)
 This function broadcasts restore a single EPT entry and invalidate EPT cache to all cores.
 
VOID HaltedBroadcastSetDisableExternalInterruptExitingOnlyOnClearingInterruptEventsAllCores ()
 This function broadcasts disable external interrupt exiting only to clear !interrupt commands to all cores.
 
VOID HaltedBroadcastResetMsrBitmapReadAllCores ()
 This function broadcasts reset MSR Bitmap Read to all cores.
 
VOID HaltedBroadcastResetMsrBitmapWriteAllCores ()
 This function broadcasts reset MSR Bitmap Write to all cores.
 
VOID HaltedBroadcastResetExceptionBitmapOnlyOnClearingExceptionEventsAllCores ()
 This function broadcasts reset exception bitmap on VMCS to all cores.
 
VOID HaltedBroadcastResetIoBitmapAllCores ()
 This function broadcasts reset I/O Bitmaps (A & B) to all cores.
 
VOID HaltedBroadcastDisableRdtscExitingForClearingTscEventsAllCores ()
 This function broadcasts clear rdtsc exiting bit ONLY in the case of disabling the events for !tsc command to all cores.
 
VOID HaltedBroadcastDisableRdpmcExitingAllCores ()
 This function broadcasts disable rdpmc exiting in primary cpu-based controls to all cores.
 
VOID HaltedBroadcastDisableEferSyscallEventsAllCores ()
 This function broadcasts disable syscall hook using EFER SCE bit controls to all cores.
 
VOID HaltedBroadcastDisableMov2DrExitingForClearingDrEventsAllCores ()
 This function broadcasts clear mov 2 hw dr exiting bit ONLY in the case of disabling the events for !dr command to all cores.
 
VOID HaltedBroadcastDisableMov2CrExitingForClearingCrEventsAllCores (DEBUGGER_EVENT_OPTIONS *BroadcastingOption)
 This function broadcasts clear mov 2 cr exiting bit ONLY in the case of disabling the events for !crwrite command to all cores.
 

Detailed Description

Broadcasting functions in case of halted cores.

Author
Sina Karvandi (sina@.nosp@m.hype.nosp@m.rdbg..nosp@m.org)
Version
0.7
Date
2023-10-19

Function Documentation

◆ HaltedBroadcastChangeAllIoBitmapAllCores()

VOID HaltedBroadcastChangeAllIoBitmapAllCores ( UINT64 Port)

This function broadcasts IO changes to all cores.

Should be called from VMX root-mode

Parameters
Port
Returns
VOID
92{
93 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
94 UINT64 HaltedCoreTask = (UINT64)NULL;
95
96 //
97 // Set the target task
98 //
100
101 //
102 // Set the parameters for the direct VMCALL
103 //
104 DirectVmcallOptions.OptionalParam1 = Port;
105
106 //
107 // Send request for the target task to the halted cores (synchronized)
108 //
109 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
110 HaltedCoreTask,
111 TRUE,
112 TRUE,
113 &DirectVmcallOptions);
114}
#define TRUE
Definition BasicTypes.h:55
unsigned __int64 UINT64
Definition BasicTypes.h:21
BOOLEAN HaltedCoreBroadcastTaskAllCores(PROCESSOR_DEBUGGING_STATE *DbgState, UINT64 TargetTask, BOOLEAN LockAgainAfterTask, BOOLEAN Synchronize, PVOID Context)
Broadcast tasks to halted cores.
Definition HaltedCore.c:399
#define DEBUGGER_HALTED_CORE_TASK_CHANGE_IO_BITMAP
Halted core task for changing I/O Bitmaps (A & B)
Definition HaltedCore.h:58
PROCESSOR_DEBUGGING_STATE * g_DbgState
Save the state and variables related to debugging on each to logical core.
Definition Global.h:17
Used for sending direct VMCALLs on the VMX root-mode.
Definition DataTypes.h:294
UINT64 OptionalParam1
Definition DataTypes.h:295

◆ HaltedBroadcastChangeAllMsrBitmapReadAllCores()

VOID HaltedBroadcastChangeAllMsrBitmapReadAllCores ( UINT64 BitmapMask)

This function broadcasts MSR (READ) changes to all cores.

Should be called from VMX root-mode

Parameters
BitmapMask
Returns
VOID
24{
25 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
26 UINT64 HaltedCoreTask = (UINT64)NULL;
27
28 //
29 // Set the target task
30 //
32
33 //
34 // Set the parameters for the direct VMCALL
35 //
36 DirectVmcallOptions.OptionalParam1 = BitmapMask;
37
38 //
39 // Send request for the target task to the halted cores (synchronized)
40 //
41 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
42 HaltedCoreTask,
43 TRUE,
44 TRUE,
45 &DirectVmcallOptions);
46}
#define DEBUGGER_HALTED_CORE_TASK_CHANGE_MSR_BITMAP_READ
Halted core task for changing MSR Bitmap Read.
Definition HaltedCore.h:46

◆ HaltedBroadcastChangeAllMsrBitmapWriteAllCores()

VOID HaltedBroadcastChangeAllMsrBitmapWriteAllCores ( UINT64 BitmapMask)

This function broadcasts MSR (WRITE) changes to all cores.

Should be called from VMX root-mode

Parameters
BitmapMask
Returns
VOID
58{
59 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
60 UINT64 HaltedCoreTask = (UINT64)NULL;
61
62 //
63 // Set the target task
64 //
66
67 //
68 // Set the parameters for the direct VMCALL
69 //
70 DirectVmcallOptions.OptionalParam1 = BitmapMask;
71
72 //
73 // Send request for the target task to the halted cores (synchronized)
74 //
75 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
76 HaltedCoreTask,
77 TRUE,
78 TRUE,
79 &DirectVmcallOptions);
80}
#define DEBUGGER_HALTED_CORE_TASK_CHANGE_MSR_BITMAP_WRITE
Halted core task for changing MSR Bitmap Write.
Definition HaltedCore.h:52

◆ HaltedBroadcastDisableEferSyscallEventsAllCores()

VOID HaltedBroadcastDisableEferSyscallEventsAllCores ( )

This function broadcasts disable syscall hook using EFER SCE bit controls to all cores.

Should be called from VMX root-mode

Returns
VOID
644{
645 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
646 UINT64 HaltedCoreTask = (UINT64)NULL;
647
648 //
649 // Set the target task
650 //
652
653 //
654 // Send request for the target task to the halted cores (synchronized)
655 //
656 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
657 HaltedCoreTask,
658 TRUE,
659 TRUE,
660 &DirectVmcallOptions);
661}
#define DEBUGGER_HALTED_CORE_TASK_DISABLE_SYSCALL_HOOK_EFER
Halted core task for disabling syscall hook using EFER SCE bit.
Definition HaltedCore.h:173

◆ HaltedBroadcastDisableMov2CrExitingForClearingCrEventsAllCores()

VOID HaltedBroadcastDisableMov2CrExitingForClearingCrEventsAllCores ( DEBUGGER_EVENT_OPTIONS * BroadcastingOption)

This function broadcasts clear mov 2 cr exiting bit ONLY in the case of disabling the events for !crwrite command to all cores.

Should be called from VMX root-mode

Parameters
BroadcastingOption
Returns
VOID
702{
703 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
704 UINT64 HaltedCoreTask = (UINT64)NULL;
705
706 //
707 // Set the target task
708 //
710
711 //
712 // Set the parameters for the direct VMCALL
713 //
714 DirectVmcallOptions.OptionalParam1 = BroadcastingOption->OptionalParam1;
715 DirectVmcallOptions.OptionalParam2 = BroadcastingOption->OptionalParam2;
716
717 //
718 // Send request for the target task to the halted cores (synchronized)
719 //
720 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
721 HaltedCoreTask,
722 TRUE,
723 TRUE,
724 &DirectVmcallOptions);
725}
#define DEBUGGER_HALTED_CORE_TASK_DISABLE_MOV_TO_CR_EXITING_ONLY_FOR_CR_EVENTS
Halted core task for clearing mov 2 cr exiting bit ONLY in the case of disabling the events for !...
Definition HaltedCore.h:187
UINT64 OptionalParam2
Definition Events.h:273
UINT64 OptionalParam1
Definition Events.h:272
UINT64 OptionalParam2
Definition DataTypes.h:296

◆ HaltedBroadcastDisableMov2DrExitingForClearingDrEventsAllCores()

VOID HaltedBroadcastDisableMov2DrExitingForClearingDrEventsAllCores ( )

This function broadcasts clear mov 2 hw dr exiting bit ONLY in the case of disabling the events for !dr command to all cores.

Should be called from VMX root-mode

Returns
VOID
672{
673 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
674 UINT64 HaltedCoreTask = (UINT64)NULL;
675
676 //
677 // Set the target task
678 //
680
681 //
682 // Send request for the target task to the halted cores (synchronized)
683 //
684 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
685 HaltedCoreTask,
686 TRUE,
687 TRUE,
688 &DirectVmcallOptions);
689}
#define DEBUGGER_HALTED_CORE_TASK_DISABLE_MOV_TO_HW_DR_EXITING_ONLY_FOR_DR_EVENTS
Halted core task for clearing mov 2 hw dr exiting bit ONLY in the case of disabling the events for !...
Definition HaltedCore.h:180

◆ HaltedBroadcastDisableRdpmcExitingAllCores()

VOID HaltedBroadcastDisableRdpmcExitingAllCores ( )

This function broadcasts disable rdpmc exiting in primary cpu-based controls to all cores.

Should be called from VMX root-mode

Returns
VOID
616{
617 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
618 UINT64 HaltedCoreTask = (UINT64)NULL;
619
620 //
621 // Set the target task
622 //
624
625 //
626 // Send request for the target task to the halted cores (synchronized)
627 //
628 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
629 HaltedCoreTask,
630 TRUE,
631 TRUE,
632 &DirectVmcallOptions);
633}
#define DEBUGGER_HALTED_CORE_TASK_UNSET_RDPMC_EXITING
Halted core task for disabling rdpmc exiting in primary cpu-based controls.
Definition HaltedCore.h:167

◆ HaltedBroadcastDisableRdtscExitingForClearingTscEventsAllCores()

VOID HaltedBroadcastDisableRdtscExitingForClearingTscEventsAllCores ( )

This function broadcasts clear rdtsc exiting bit ONLY in the case of disabling the events for !tsc command to all cores.

Should be called from VMX root-mode

Returns
VOID
588{
589 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
590 UINT64 HaltedCoreTask = (UINT64)NULL;
591
592 //
593 // Set the target task
594 //
596
597 //
598 // Send request for the target task to the halted cores (synchronized)
599 //
600 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
601 HaltedCoreTask,
602 TRUE,
603 TRUE,
604 &DirectVmcallOptions);
605}
#define DEBUGGER_HALTED_CORE_TASK_DISABLE_RDTSC_EXITING_ONLY_FOR_TSC_EVENTS
Halted core task for clearing rdtsc exiting bit ONLY in the case of disabling the events for !...
Definition HaltedCore.h:161

◆ HaltedBroadcastEnableEferSyscallHookAllCores()

VOID HaltedBroadcastEnableEferSyscallHookAllCores ( )

This function broadcasts enable syscall hook using EFER SCE bit to all cores.

Should be called from VMX root-mode

Returns
VOID
335{
336 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
337 UINT64 HaltedCoreTask = (UINT64)NULL;
338
339 //
340 // Set the target task
341 //
343
344 //
345 // Send request for the target task to the halted cores (synchronized)
346 //
347 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
348 HaltedCoreTask,
349 TRUE,
350 TRUE,
351 &DirectVmcallOptions);
352}
#define DEBUGGER_HALTED_CORE_TASK_ENABLE_SYSCALL_HOOK_EFER
Halted core task for enabling syscall hook using EFER SCE bit.
Definition HaltedCore.h:100

◆ HaltedBroadcastEnableExternalInterruptExitingAllCores()

VOID HaltedBroadcastEnableExternalInterruptExitingAllCores ( )

This function broadcasts enable external interrupt exiting to all cores.

Should be called from VMX root-mode

Returns
VOID
205{
206 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
207 UINT64 HaltedCoreTask = (UINT64)NULL;
208
209 //
210 // Set the target task
211 //
213
214 //
215 // Send request for the target task to the halted cores (synchronized)
216 //
217 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
218 HaltedCoreTask,
219 TRUE,
220 TRUE,
221 &DirectVmcallOptions);
222}
#define DEBUGGER_HALTED_CORE_TASK_ENABLE_EXTERNAL_INTERRUPT_EXITING
Halted core task for enabling external interrupt exiting.
Definition HaltedCore.h:88

◆ HaltedBroadcastEnableMov2DebugRegsExitingAllCores()

VOID HaltedBroadcastEnableMov2DebugRegsExitingAllCores ( )

This function broadcasts enable mov to debug registers exiting to all cores.

Should be called from VMX root-mode

Returns
VOID
178{
179 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
180 UINT64 HaltedCoreTask = (UINT64)NULL;
181
182 //
183 // Set the target task
184 //
186
187 //
188 // Send request for the target task to the halted cores (synchronized)
189 //
190 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
191 HaltedCoreTask,
192 TRUE,
193 TRUE,
194 &DirectVmcallOptions);
195}
#define DEBUGGER_HALTED_CORE_TASK_ENABLE_MOV_TO_DEBUG_REGS_EXITING
Halted core task for enabling mov to debug registers exiting.
Definition HaltedCore.h:76

◆ HaltedBroadcastEnableMovToCrExitingAllCores()

VOID HaltedBroadcastEnableMovToCrExitingAllCores ( DEBUGGER_EVENT_OPTIONS * BroadcastingOption)

This function broadcasts enable mov to CR exiting to all cores.

Should be called from VMX root-mode

Parameters
BroadcastingOption
Returns
VOID
302{
303 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
304 UINT64 HaltedCoreTask = (UINT64)NULL;
305
306 //
307 // Set the target task
308 //
310
311 //
312 // Set the parameters for the direct VMCALL
313 //
314 DirectVmcallOptions.OptionalParam1 = BroadcastingOption->OptionalParam1;
315 DirectVmcallOptions.OptionalParam2 = BroadcastingOption->OptionalParam2;
316
317 //
318 // Send request for the target task to the halted cores (synchronized)
319 //
320 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
321 HaltedCoreTask,
322 TRUE,
323 TRUE,
324 &DirectVmcallOptions);
325}
#define DEBUGGER_HALTED_CORE_TASK_ENABLE_MOV_TO_CONTROL_REGS_EXITING
Halted core task for enabling mov to CR exiting.
Definition HaltedCore.h:94

◆ HaltedBroadcastEnableRdpmcExitingAllCores()

VOID HaltedBroadcastEnableRdpmcExitingAllCores ( )

This function broadcasts enable RDPMC exiting to all cores.

Should be called from VMX root-mode

Returns
VOID
124{
125 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
126 UINT64 HaltedCoreTask = (UINT64)NULL;
127
128 //
129 // Set the target task
130 //
132
133 //
134 // Send request for the target task to the halted cores (synchronized)
135 //
136 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
137 HaltedCoreTask,
138 TRUE,
139 TRUE,
140 &DirectVmcallOptions);
141}
#define DEBUGGER_HALTED_CORE_TASK_SET_RDPMC_EXITING
Halted core task for enabling rdpmc exiting.
Definition HaltedCore.h:64

◆ HaltedBroadcastEnableRdtscExitingAllCores()

VOID HaltedBroadcastEnableRdtscExitingAllCores ( )

This function broadcasts enable rdtsc/rdtscp exiting to all cores.

Should be called from VMX root-mode

Returns
VOID
151{
152 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
153 UINT64 HaltedCoreTask = (UINT64)NULL;
154
155 //
156 // Set the target task
157 //
159
160 //
161 // Send request for the target task to the halted cores (synchronized)
162 //
163 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
164 HaltedCoreTask,
165 TRUE,
166 TRUE,
167 &DirectVmcallOptions);
168}
#define DEBUGGER_HALTED_CORE_TASK_SET_RDTSC_EXITING
Halted core task for enabling rdtsc/rdtscp exiting.
Definition HaltedCore.h:70

◆ HaltedBroadcastInvalidateEptAllContextsAllCores()

VOID HaltedBroadcastInvalidateEptAllContextsAllCores ( )

This function broadcasts invalidate EPT (All Contexts) to all cores.

Should be called from VMX root-mode

Returns
VOID
362{
363 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
364 UINT64 HaltedCoreTask = (UINT64)NULL;
365
366 //
367 // Set the target task
368 //
370
371 //
372 // Send request for the target task to the halted cores (synchronized)
373 //
374 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
375 HaltedCoreTask,
376 TRUE,
377 TRUE,
378 &DirectVmcallOptions);
379}
#define DEBUGGER_HALTED_CORE_TASK_INVEPT_ALL_CONTEXTS
Halted core task for invalidating EPT (All Contexts)
Definition HaltedCore.h:106

◆ HaltedBroadcastInvalidateSingleContextAllCores()

VOID HaltedBroadcastInvalidateSingleContextAllCores ( )

This function broadcasts invalidate EPT (A Single Context) to all cores.

Should be called from VMX root-mode

Returns
VOID
389{
390 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
391 UINT64 HaltedCoreTask = (UINT64)NULL;
392
393 //
394 // Set the target task
395 //
397
398 //
399 // Send request for the target task to the halted cores (synchronized)
400 //
401 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
402 HaltedCoreTask,
403 TRUE,
404 TRUE,
405 &DirectVmcallOptions);
406}
#define DEBUGGER_HALTED_CORE_TASK_INVEPT_SINGLE_CONTEXT
Halted core task for invalidating EPT (A Single Context)
Definition HaltedCore.h:112

◆ HaltedBroadcastResetExceptionBitmapOnlyOnClearingExceptionEventsAllCores()

VOID HaltedBroadcastResetExceptionBitmapOnlyOnClearingExceptionEventsAllCores ( )

This function broadcasts reset exception bitmap on VMCS to all cores.

Should be called from VMX root-mode THIS VMCALL SHOULD BE USED ONLY IN RESETTING (CLEARING) EXCEPTION EVENTS

Returns
VOID
533{
534 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
535 UINT64 HaltedCoreTask = (UINT64)NULL;
536
537 //
538 // Set the target task
539 //
541
542 //
543 // Send request for the target task to the halted cores (synchronized)
544 //
545 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
546 HaltedCoreTask,
547 TRUE,
548 TRUE,
549 &DirectVmcallOptions);
550}
#define DEBUGGER_HALTED_CORE_TASK_RESET_EXCEPTION_BITMAP_ONLY_ON_CLEARING_EXCEPTION_EVENTS
Halted core task for resetting exception bitmap on VMCS.
Definition HaltedCore.h:148

◆ HaltedBroadcastResetIoBitmapAllCores()

VOID HaltedBroadcastResetIoBitmapAllCores ( )

This function broadcasts reset I/O Bitmaps (A & B) to all cores.

Should be called from VMX root-mode

Returns
VOID
560{
561 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
562 UINT64 HaltedCoreTask = (UINT64)NULL;
563
564 //
565 // Set the target task
566 //
568
569 //
570 // Send request for the target task to the halted cores (synchronized)
571 //
572 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
573 HaltedCoreTask,
574 TRUE,
575 TRUE,
576 &DirectVmcallOptions);
577}
#define DEBUGGER_HALTED_CORE_TASK_RESET_IO_BITMAP
Halted core task for resetting I/O Bitmaps (A & B)
Definition HaltedCore.h:154

◆ HaltedBroadcastResetMsrBitmapReadAllCores()

VOID HaltedBroadcastResetMsrBitmapReadAllCores ( )

This function broadcasts reset MSR Bitmap Read to all cores.

Should be called from VMX root-mode

Returns
VOID
478{
479 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
480 UINT64 HaltedCoreTask = (UINT64)NULL;
481
482 //
483 // Set the target task
484 //
486
487 //
488 // Send request for the target task to the halted cores (synchronized)
489 //
490 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
491 HaltedCoreTask,
492 TRUE,
493 TRUE,
494 &DirectVmcallOptions);
495}
#define DEBUGGER_HALTED_CORE_TASK_RESET_MSR_BITMAP_READ
Halted core task for resetting MSR Bitmap Read.
Definition HaltedCore.h:136

◆ HaltedBroadcastResetMsrBitmapWriteAllCores()

VOID HaltedBroadcastResetMsrBitmapWriteAllCores ( )

This function broadcasts reset MSR Bitmap Write to all cores.

Should be called from VMX root-mode

Returns
VOID
505{
506 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
507 UINT64 HaltedCoreTask = (UINT64)NULL;
508
509 //
510 // Set the target task
511 //
513
514 //
515 // Send request for the target task to the halted cores (synchronized)
516 //
517 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
518 HaltedCoreTask,
519 TRUE,
520 TRUE,
521 &DirectVmcallOptions);
522}
#define DEBUGGER_HALTED_CORE_TASK_RESET_MSR_BITMAP_WRITE
Halted core task for resetting MSR Bitmap Write.
Definition HaltedCore.h:142

◆ HaltedBroadcastSetDisableExternalInterruptExitingOnlyOnClearingInterruptEventsAllCores()

VOID HaltedBroadcastSetDisableExternalInterruptExitingOnlyOnClearingInterruptEventsAllCores ( )

This function broadcasts disable external interrupt exiting only to clear !interrupt commands to all cores.

Should be called from VMX root-mode

Returns
VOID
451{
452 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
453 UINT64 HaltedCoreTask = (UINT64)NULL;
454
455 //
456 // Set the target task
457 //
459
460 //
461 // Send request for the target task to the halted cores (synchronized)
462 //
463 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
464 HaltedCoreTask,
465 TRUE,
466 TRUE,
467 &DirectVmcallOptions);
468}
#define DEBUGGER_HALTED_CORE_TASK_DISABLE_EXTERNAL_INTERRUPT_EXITING_ONLY_TO_CLEAR_INTERRUPT_COMMANDS
Halted core task for disabling external interrupt exiting only to clear !interrupt commands.
Definition HaltedCore.h:130

◆ HaltedBroadcastSetExceptionBitmapAllCores()

VOID HaltedBroadcastSetExceptionBitmapAllCores ( UINT64 ExceptionIndex)

This function broadcasts set exception bitmap to all cores.

Should be called from VMX root-mode

Parameters
ExceptionIndex
Returns
VOID
234{
235 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
236 UINT64 HaltedCoreTask = (UINT64)NULL;
237
238 //
239 // Set the target task
240 //
242
243 //
244 // Set the parameters for the direct VMCALL
245 //
246 DirectVmcallOptions.OptionalParam1 = ExceptionIndex;
247
248 //
249 // Send request for the target task to the halted cores (synchronized)
250 //
251 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
252 HaltedCoreTask,
253 TRUE,
254 TRUE,
255 &DirectVmcallOptions);
256}
#define DEBUGGER_HALTED_CORE_TASK_SET_EXCEPTION_BITMAP
Halted core task for setting exception bitmap.
Definition HaltedCore.h:82

◆ HaltedBroadcastUnhookSinglePageAllCores()

VOID HaltedBroadcastUnhookSinglePageAllCores ( EPT_SINGLE_HOOK_UNHOOKING_DETAILS * UnhookingDetail)

This function broadcasts restore a single EPT entry and invalidate EPT cache to all cores.

Should be called from VMX root-mode

Parameters
UnhookingDetail
Returns
VOID
418{
419 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
420 UINT64 HaltedCoreTask = (UINT64)NULL;
421
422 //
423 // Set the target task
424 //
426
427 //
428 // Set the parameters for the direct VMCALL
429 //
430 DirectVmcallOptions.OptionalParam1 = UnhookingDetail->PhysicalAddress;
431 DirectVmcallOptions.OptionalParam2 = UnhookingDetail->OriginalEntry;
432
433 //
434 // Send request for the target task to the halted cores (synchronized)
435 //
436 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
437 HaltedCoreTask,
438 TRUE,
439 TRUE,
440 &DirectVmcallOptions);
441}
#define DEBUGGER_HALTED_CORE_TASK_UNHOOK_SINGLE_PAGE
Halted core task for restoring a single EPT entry and invalidating EPT cache.
Definition HaltedCore.h:124
SIZE_T PhysicalAddress
Definition DataTypes.h:361
UINT64 OriginalEntry
Definition DataTypes.h:362

◆ HaltedBroadcastUnSetExceptionBitmapAllCores()

VOID HaltedBroadcastUnSetExceptionBitmapAllCores ( UINT64 ExceptionIndex)

This function broadcasts unset exception bitmap on VMCS to all cores.

Should be called from VMX root-mode

Parameters
ExceptionIndex
Returns
VOID
268{
269 DIRECT_VMCALL_PARAMETERS DirectVmcallOptions = {0};
270 UINT64 HaltedCoreTask = (UINT64)NULL;
271
272 //
273 // Set the target task
274 //
276
277 //
278 // Set the parameters for the direct VMCALL
279 //
280 DirectVmcallOptions.OptionalParam1 = ExceptionIndex;
281
282 //
283 // Send request for the target task to the halted cores (synchronized)
284 //
285 HaltedCoreBroadcastTaskAllCores(&g_DbgState[KeGetCurrentProcessorNumberEx(NULL)],
286 HaltedCoreTask,
287 TRUE,
288 TRUE,
289 &DirectVmcallOptions);
290}
#define DEBUGGER_HALTED_CORE_TASK_UNSET_EXCEPTION_BITMAP
Halted core task for unsetting exception bitmap on VMCS.
Definition HaltedCore.h:118