33#define PENDING_INTERRUPTS_BUFFER_CAPACITY 64
39#define MaximumHiddenBreakpointsOnPage 40
79#define VMM_EPT_PML4E_COUNT 512
85#define VMM_EPT_PML3E_COUNT 512
92#define VMM_EPT_PML2E_COUNT 512
99#define VMM_EPT_PML1E_COUNT 512
Structure to save the state of each hooked pages.
Definition State.h:179
UINT64 AddressOfEptHook2sDetourListEntry
The virtual address of it's entry on g_EptHook2sDetourListHead this way we can de-allocate the list w...
Definition State.h:197
SIZE_T PhysicalBaseAddressOfFakePageContents
The base address of the page with fake contents. Used to swap page with fake contents when a hook is ...
Definition State.h:224
UINT64 VirtualAddress
The virtual address from the caller perspective view (cr3).
Definition State.h:191
BOOLEAN IsExecutionHook
This field shows whether the hook contains a hidden hook for execution or not.
Definition State.h:245
LIST_ENTRY PageHookList
Linked list entries for each page hook.
Definition State.h:186
CHAR FakePageContents[PAGE_SIZE]
Definition State.h:181
EPT_HOOKS_CONTEXT LastContextState
Temporary context for the post event monitors It shows the context of the last address that triggered...
Definition State.h:263
PCHAR Trampoline
The buffer of the trampoline function which is used in the inline hook.
Definition State.h:240
EPT_PML1_ENTRY ChangedEntry
The original page entry. Will be copied back when the hook is remove from the page.
Definition State.h:235
BOOLEAN IsMmioShadowing
This field shows whether the hook is for MMIO shadowing or not.
Definition State.h:256
BOOLEAN IsHiddenBreakpoint
If TRUE shows that this is the information about a hidden breakpoint command (not a monitor or hidden...
Definition State.h:251
CHAR PreviousBytesOnBreakpointAddresses[MaximumHiddenBreakpointsOnPage]
Character that was previously used in BreakpointAddresses this is only used in hidden breakpoints (no...
Definition State.h:286
SIZE_T EndOfTargetPhysicalAddress
End address of the target physical address.
Definition State.h:213
SIZE_T StartOfTargetPhysicalAddress
Start address of the target physical address.
Definition State.h:208
UINT64 BreakpointAddresses[MaximumHiddenBreakpointsOnPage]
Address of hooked pages (multiple breakpoints on a single page) this is only used in hidden breakpoin...
Definition State.h:280
UINT64 HookingTag
Tag used for notifying the caller.
Definition State.h:218
EPT_PML1_ENTRY OriginalEntry
The original page entry. Will be copied back when the hook is removed from the page.
Definition State.h:230
BOOLEAN IsPostEventTriggerAllowed
This field shows whether the hook should call the post event trigger after restoring the state or not...
Definition State.h:269
SIZE_T PhysicalBaseAddress
The base address of the page. Used to find this structure in the list of page hooks when a hook is hi...
Definition State.h:203
UINT64 CountOfBreakpoints
Count of breakpoints (multiple breakpoints on a single page) this is only used in hidden breakpoints ...
Definition State.h:292
EPT_HOOKED_LAST_VIOLATION LastViolation
This field shows the last violation happened to this EPT hook.
Definition State.h:274
The status of NMI broadcasting in VMX.
Definition State.h:301
volatile NMI_BROADCAST_ACTION_TYPE NmiBroadcastAction
Definition State.h:302
The status of each core after and before VMX.
Definition State.h:311
UINT64 MsrBitmapPhysicalAddress
Definition State.h:338
UINT32 ExitQualification
Definition State.h:330
PVMM_EPT_PAGE_TABLE EptPageTable
Definition State.h:364
UINT64 VmxonRegionVirtualAddress
Definition State.h:333
UINT64 HostInterruptStack
Definition State.h:358
BOOLEAN NotNormalEptp
Definition State.h:321
NMI_BROADCASTING_STATE NmiBroadcastingState
Definition State.h:351
UINT64 TestNumber
Definition State.h:325
UINT64 HostGdt
Definition State.h:356
UINT64 IoBitmapVirtualAddressB
Definition State.h:341
BOOLEAN IgnoreMtfUnset
Definition State.h:315
EPT_POINTER EptPointer
Definition State.h:363
GUEST_XMM_REGS * XmmRegs
Definition State.h:327
BOOLEAN EnableExternalInterruptsOnContinueMtf
Definition State.h:318
BOOLEAN MbecEnabled
Definition State.h:322
UINT64 IoBitmapPhysicalAddressA
Definition State.h:340
UINT32 PendingExternalInterrupts[PENDING_INTERRUPTS_BUFFER_CAPACITY]
Definition State.h:344
PUINT64 PmlBufferAddress
Definition State.h:323
UINT64 VmcsRegionPhysicalAddress
Definition State.h:334
UINT64 MsrBitmapVirtualAddress
Definition State.h:337
BOOLEAN IgnoreOneMtf
Definition State.h:320
UINT64 VmmStack
Definition State.h:336
UINT32 QueuedNmi
Definition State.h:343
BOOLEAN WaitForImmediateVmexit
Definition State.h:316
BOOLEAN IncrementRip
Definition State.h:313
UINT8 LastExceptionOccurredInHost
Definition State.h:354
PEPT_HOOKED_PAGE_DETAIL MtfEptHookRestorePoint
Definition State.h:353
UINT64 HostTss
Definition State.h:357
BOOLEAN HasLaunched
Definition State.h:314
GUEST_REGS * Regs
Definition State.h:326
UINT64 HostIdt
Definition State.h:355
UINT32 ExitReason
Definition State.h:329
VMX_VMXOFF_STATE VmxoffState
Definition State.h:350
BOOLEAN IsOnVmxRootMode
Definition State.h:312
BOOLEAN Test
Definition State.h:324
UINT32 CoreId
Definition State.h:328
BOOLEAN InstrumentationStepInMtf
Definition State.h:319
UINT64 IoBitmapPhysicalAddressB
Definition State.h:342
UINT64 IoBitmapVirtualAddressA
Definition State.h:339
BOOLEAN EnableExternalInterruptsOnContinue
Definition State.h:317
VM_EXIT_TRANSPARENCY TransparencyState
Definition State.h:352
UINT64 LastVmexitRip
Definition State.h:331
UINT64 VmcsRegionVirtualAddress
Definition State.h:335
UINT64 VmxonRegionPhysicalAddress
Definition State.h:332
The status of transparency of each core after and before VMX.
Definition State.h:153
UINT64 RevealedTimeStampCounterByRdtsc
Definition State.h:157
UINT64 PreviousTimeStampCounter
Definition State.h:154
HANDLE ThreadId
Definition State.h:156
BOOLEAN CpuidAfterRdtscDetected
Definition State.h:158
Structure for saving EPT Table.
Definition State.h:106
EPT_PML4_POINTER PML4[VMM_EPT_PML4E_COUNT]
28.2.2 Describes 512 contiguous 512GB memory regions each with 512 1GB regions.
Definition State.h:111
EPT_PML3_POINTER PML3[VMM_EPT_PML3E_COUNT]
Describes exactly 512 contiguous 1GB memory regions within a our singular 512GB PML4 region.
Definition State.h:125
LIST_ENTRY DynamicSplitList
Tracks dynamic 2MB->4KB splits for this EPT table. NOTE: Each item stores a direct VA to the split PM...
Definition State.h:140
EPT_PML2_ENTRY PML2[VMM_EPT_PML3E_COUNT][VMM_EPT_PML2E_COUNT]
For each 1GB PML3 entry, create 512 2MB entries to map identity. NOTE: We are using 2MB pages as the ...
Definition State.h:133
EPT_PML3_ENTRY PML3_RSVD[VMM_EPT_PML4E_COUNT - 1][VMM_EPT_PML3E_COUNT]
Describes exactly 512 contiguous 1GB memory regions within a our singular 512GB PML4 region (This ent...
Definition State.h:119
Save the state of core in the case of VMXOFF.
Definition State.h:167
UINT64 GuestRip
Definition State.h:169
UINT64 GuestRsp
Definition State.h:170
BOOLEAN IsVmxoffExecuted
Definition State.h:168
Definition BasicTypes.h:136
Definition BasicTypes.h:174