HyperDbg Debugger
Loading...
Searching...
No Matches
HyperDbgVmmImports.h
Go to the documentation of this file.
1
11#pragma once
12
13#ifdef HYPERDBG_VMM
14# define IMPORT_EXPORT_VMM __declspec(dllexport)
15#else
16# define IMPORT_EXPORT_VMM __declspec(dllimport)
17#endif
18
20// VM Functions //
22
23IMPORT_EXPORT_VMM NTSTATUS
24VmFuncVmxVmcall(unsigned long long VmcallNumber,
25 unsigned long long OptionalParam1,
26 unsigned long long OptionalParam2,
27 unsigned long long OptionalParam3);
28
31
34
37
40
43
46
49
52
55
58
61
63VmFuncSetMovControlRegsExiting(BOOLEAN Set, UINT64 ControlRegister, UINT64 MaskRegister);
64
67
70
73
76
79
81VmFuncSetExceptionBitmap(UINT32 CoreId, UINT32 IdtIndex);
82
85
88
91
94
97
100
103
106
109
111VmFuncSetInterruptibilityState(UINT64 InterruptibilityState);
112
115
118
121
124 UINT64 AddressFrom,
125 UINT64 AddressTo,
126 UINT32 PageFaultCode);
127
130 UINT32 Vector,
131 BOOLEAN DeliverErrorCode,
132 UINT32 ErrorCode);
133
136
139
142
145
148
151
154
157
160
163
166
169
172
175
177VmFuncClearSteppingBits(UINT64 Interruptibility);
178
180VmFuncInitVmm(VMM_CALLBACKS * VmmCallbacks);
181
184
186VmFuncVmxCompatibleWcslen(const wchar_t * s);
187
190
193
196
199
202
204VmFuncVmxCompatibleStrcmp(const CHAR * Address1, const CHAR * Address2);
205
207VmFuncVmxCompatibleStrncmp(const CHAR * Address1, const CHAR * Address2, SIZE_T Num);
208
210VmFuncVmxCompatibleWcscmp(const wchar_t * Address1, const wchar_t * Address2);
211
213VmFuncVmxCompatibleWcsncmp(const wchar_t * Address1, const wchar_t * Address2, SIZE_T Num);
214
216VmFuncVmxCompatibleMemcmp(const CHAR * Address1, const CHAR * Address2, size_t Count);
217
219// Configuration Functions //
221
224
227
230
233
236
239
242
245
248
251
254
257
260
263
266
269
272
275
278
281
283ConfigureEptHook(PVOID TargetAddress, UINT32 ProcessId);
284
286ConfigureEptHookFromVmxRoot(PVOID TargetAddress);
287
290 PVOID TargetAddress,
291 PVOID HookFunction,
292 UINT32 ProcessId);
293
296 PVOID TargetAddress,
297 PVOID HookFunction);
298
302 UINT32 ProcessId);
303
306 EPT_HOOKS_ADDRESS_DETAILS_FOR_MEMORY_MONITOR * MemoryAddressDetails);
307
310 PVOID PhysicalAddress,
311 BOOLEAN IsUnset);
312
315 PVOID PhysicalAddress,
316 BOOLEAN IsUnset);
317
320 PVOID PhysicalAddress,
321 BOOLEAN IsUnset);
322
325
328 EPT_SINGLE_HOOK_UNHOOKING_DETAILS * TargetUnhookingDetails);
329
332 UINT64 PhysAddress,
333 UINT32 ProcessId);
334
337 UINT64 PhysAddress,
338 EPT_SINGLE_HOOK_UNHOOKING_DETAILS * TargetUnhookingDetails);
339
342
345
348
351
353// Direct VMCALL Functions //
355
356IMPORT_EXPORT_VMM NTSTATUS
357DirectVmcallTest(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS * DirectVmcallOptions);
358
359IMPORT_EXPORT_VMM NTSTATUS
360DirectVmcallPerformVmcall(UINT32 CoreId, UINT64 VmcallNumber, DIRECT_VMCALL_PARAMETERS * DirectVmcallOptions);
361
362IMPORT_EXPORT_VMM NTSTATUS
364
365IMPORT_EXPORT_VMM NTSTATUS
367
368IMPORT_EXPORT_VMM NTSTATUS
369DirectVmcallChangeIoBitmap(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS * DirectVmcallOptions);
370
371IMPORT_EXPORT_VMM NTSTATUS
373
374IMPORT_EXPORT_VMM NTSTATUS
376
377IMPORT_EXPORT_VMM NTSTATUS
379
380IMPORT_EXPORT_VMM NTSTATUS
382
383IMPORT_EXPORT_VMM NTSTATUS
385
386IMPORT_EXPORT_VMM NTSTATUS
388
389IMPORT_EXPORT_VMM NTSTATUS
391
392IMPORT_EXPORT_VMM NTSTATUS
394
395IMPORT_EXPORT_VMM NTSTATUS
397
398IMPORT_EXPORT_VMM NTSTATUS
400
401IMPORT_EXPORT_VMM NTSTATUS
403
404IMPORT_EXPORT_VMM NTSTATUS
406
407IMPORT_EXPORT_VMM NTSTATUS
409
410IMPORT_EXPORT_VMM NTSTATUS
412
413IMPORT_EXPORT_VMM NTSTATUS
415
416IMPORT_EXPORT_VMM NTSTATUS
418
419IMPORT_EXPORT_VMM NTSTATUS
420DirectVmcallResetIoBitmap(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS * DirectVmcallOptions);
421
422IMPORT_EXPORT_VMM NTSTATUS
424
425IMPORT_EXPORT_VMM NTSTATUS
427
428IMPORT_EXPORT_VMM NTSTATUS
430
431IMPORT_EXPORT_VMM NTSTATUS
433
434IMPORT_EXPORT_VMM NTSTATUS
436
438// Disassembler //
440
443
446
449
451// General Functions //
453
454// ----------------------------------------------------------------------------
455// Exported Interfaces For Virtual Addresses
456//
457
459VirtualAddressToPhysicalAddress(_In_ PVOID VirtualAddress);
460
463 _In_ UINT32 ProcessId);
464
467 _In_ CR3_TYPE TargetCr3);
468
471
472// ----------------------------------------------------------------------------
473// Exported Interfaces For Physical Addresses
474//
477
479PhysicalAddressToVirtualAddressByProcessId(_In_ PVOID PhysicalAddress, _In_ UINT32 ProcessId);
480
482PhysicalAddressToVirtualAddressByCr3(_In_ PVOID PhysicalAddress, _In_ CR3_TYPE TargetCr3);
483
486
487// ----------------------------------------------------------------------------
488// Exported Interfaces For Layout Switching Functions
489//
492
495
498
500SwitchToPreviousProcess(_In_ CR3_TYPE PreviousProcess);
501
502// ----------------------------------------------------------------------------
503// Exported Interfaces For Check Validity of Addresses
504//
507
509CheckAccessValidityAndSafety(UINT64 TargetAddress, UINT32 Size);
510
513
516
517// ----------------------------------------------------------------------------
518// Exported Interfaces For Layout Functions
519//
522
525
527// Memory Management Functions //
529
530// ----------------------------------------------------------------------------
531// PTE-related Functions
532//
533
536 _In_ PAGING_LEVEL Level);
537
540 _In_ PAGING_LEVEL Level,
541 _In_ CR3_TYPE TargetCr3);
542
545 _In_ PAGING_LEVEL Level,
546 _In_ CR3_TYPE TargetCr3);
547
550 _In_ PAGING_LEVEL Level);
551
554 _In_ BOOLEAN Set);
555
558 PAGING_LEVEL Level);
559
560// ----------------------------------------------------------------------------
561// Reading Memory Functions
562//
565 _Inout_ PVOID BufferToSaveMemory,
566 _In_ SIZE_T SizeToRead);
567
570 _Inout_ UINT64 BufferToSaveMemory,
571 _In_ SIZE_T SizeToRead);
572
575 _Inout_ PVOID BufferToSaveMemory,
576 _In_ SIZE_T SizeToRead);
577
578// ----------------------------------------------------------------------------
579// Disassembler Functions
580//
583
586
587// ----------------------------------------------------------------------------
588// Writing Memory Functions
589//
592 _In_ PVOID Source,
593 _In_ SIZE_T SizeToWrite,
594 _In_ CR3_TYPE TargetProcessCr3);
595
598 _In_ PVOID Source,
599 _In_ SIZE_T Size);
600
603 _In_ UINT64 Source,
604 _In_ SIZE_T SizeToWrite);
605
608 _In_ PVOID Source,
609 _In_ SIZE_T SizeToWrite,
610 _In_ UINT32 TargetProcessId);
611
612// ----------------------------------------------------------------------------
613// Reserving Memory Functions
614//
617 _In_ BOOLEAN Allocate);
618
621 _Inout_ PVOID BaseAddress);
622
623// ----------------------------------------------------------------------------
624// Miscellaneous Memory Functions
625//
628 _In_ BOOLEAN Set,
629 _In_ PAGING_LEVEL Level,
630 _In_ CR3_TYPE TargetCr3);
631
634
637
639// Memory Manager //
641
643MemoryManagerReadProcessMemoryNormal(HANDLE PID, PVOID Address, DEBUGGER_READ_MEMORY_TYPE MemType, PVOID UserBuffer, SIZE_T Size, PSIZE_T ReturnSize);
644
646// Pool Manager //
648
651
654
656PoolManagerRequestPool(POOL_ALLOCATION_INTENTION Intention, BOOLEAN RequestNewPool, UINT32 Size);
657
659PoolManagerFreePool(UINT64 AddressToFree);
660
663
665// VMX Registers Modification //
667
670
673
675GetGuestCs();
676
679
682
684GetGuestSs();
685
688
691
693GetGuestDs();
694
697
700
702GetGuestFs();
703
706
709
711GetGuestGs();
712
715
718
720GetGuestEs();
721
723SetGuestIdtr(UINT64 Idtr);
724
727
729SetGuestLdtr(UINT64 Ldtr);
730
733
735SetGuestGdtr(UINT64 Gdtr);
736
739
742
744GetGuestTr();
745
747SetGuestRFlags(UINT64 RFlags);
748
751
754
757
760
763
766
769
772
775
778
781
784
787
790
793
796
799
802
805
808
810SetGuestDr0(UINT64 value);
811
813SetGuestDr1(UINT64 value);
814
816SetGuestDr2(UINT64 value);
817
819SetGuestDr3(UINT64 value);
820
822SetGuestDr6(UINT64 value);
823
825SetGuestDr7(UINT64 value);
826
828SetDebugRegisters(UINT32 DebugRegNum, DEBUG_REGISTER_TYPE ActionType, BOOLEAN ApplyToVmcs, UINT64 TargetAddress);
829
831// Transparent Mode //
833
834IMPORT_EXPORT_VMM NTSTATUS
836
837IMPORT_EXPORT_VMM NTSTATUS
839
841// Non-internal Broadcasting Functions //
843
846
849
852
855
858
861
864
867
870
873
876
879
882
885
888
891
894
897
900
903
906
909
912
915
918
921
924
927
930
unsigned short UINT16
Definition BasicTypes.h:47
signed int INT32
Definition BasicTypes.h:44
UCHAR BOOLEAN
Definition BasicTypes.h:39
#define VOID
Definition BasicTypes.h:33
unsigned __int64 UINT64
Definition BasicTypes.h:21
unsigned int UINT32
Definition BasicTypes.h:48
char CHAR
Definition BasicTypes.h:31
enum _DEBUG_REGISTER_TYPE DEBUG_REGISTER_TYPE
enum _POOL_ALLOCATION_INTENTION POOL_ALLOCATION_INTENTION
Inum of intentions for buffers (buffer tag)
enum _PAGING_LEVEL PAGING_LEVEL
Different levels of paging.
UINT64 Address
Definition HyperDbgScriptImports.h:67
IMPORT_EXPORT_VMM UINT16 VmFuncGetCsSelector()
Read CS selector.
Definition Export.c:341
IMPORT_EXPORT_VMM VOID SetGuestLdtr(UINT64 Ldtr)
Set the Guest Ldtr.
Definition ManageRegs.c:320
IMPORT_EXPORT_VMM VOID BroadcastSetExternalInterruptExitingAllCores()
routines for !interrupt command which
Definition Broadcast.c:382
IMPORT_EXPORT_VMM VOID SetGuestRSP(UINT64 RSP)
Set the Guest RSP Register.
Definition ManageRegs.c:435
IMPORT_EXPORT_VMM UINT64 GetGuestCr4()
Get the Guest Cr4 value.
Definition ManageRegs.c:502
IMPORT_EXPORT_VMM VOID SetGuestSsSel(PVMX_SEGMENT_SELECTOR Ss)
Set just the Guest Ss selector.
Definition ManageRegs.c:68
IMPORT_EXPORT_VMM UINT64 GetGuestCr8()
Get the Guest Cr8 value.
Definition ManageRegs.c:516
IMPORT_EXPORT_VMM VOID ConfigureEnableRdpmcExitingOnSingleCore(UINT32 TargetCoreId)
enable RDPMC exiting on a single core
Definition Configuration.c:485
IMPORT_EXPORT_VMM VOID VmFuncUnsetExceptionBitmap(UINT32 CoreId, UINT32 IdtIndex)
Unset exception bitmap in VMCS.
Definition Export.c:267
IMPORT_EXPORT_VMM UINT32 VmFuncVmxCompatibleWcslen(const wchar_t *s)
VMX-root compatible strlen.
Definition Export.c:611
IMPORT_EXPORT_VMM VOID BroadcastEnableMovToCr3ExitingOnAllProcessors()
routines for debugging threads (enable mov-to-cr3 exiting)
Definition Broadcast.c:436
IMPORT_EXPORT_VMM UINT64 GetGuestIdtr()
Get the Guest Idtr.
Definition ManageRegs.c:304
IMPORT_EXPORT_VMM VOID BroadcastIoBitmapResetAllCores()
routines for reset !ioin and !ioout command
Definition Broadcast.c:422
IMPORT_EXPORT_VMM VOID ConfigureChangeIoBitmapOnSingleCore(UINT32 TargetCoreId, UINT64 Port)
change I/O port bitmap on a single core
Definition Configuration.c:568
IMPORT_EXPORT_VMM VOID ConfigureEnableMovToCr3ExitingOnAllProcessors()
routines for debugging threads (enable mov-to-cr3 exiting)
Definition Configuration.c:21
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperSetSupervisorBitWithoutSwitchingByCr3(_In_ PVOID Va, _In_ BOOLEAN Set, _In_ PAGING_LEVEL Level, _In_ CR3_TYPE TargetCr3)
IMPORT_EXPORT_VMM UINT64 GetGuestDr1()
Get the Guest Dr1 value.
Definition ManageRegs.c:675
IMPORT_EXPORT_VMM VMX_SEGMENT_SELECTOR GetGuestEs()
Get the Guest Es Selector.
Definition ManageRegs.c:274
IMPORT_EXPORT_VMM VOID PoolManagerShowPreAllocatedPools()
Shows list of pre-allocated pools available (used for debugging purposes)
Definition PoolManager.c:177
IMPORT_EXPORT_VMM VOID VmFuncEnableAndCheckForPreviousExternalInterrupts(UINT32 CoreId)
Checks to enable and reinject previous interrupts.
Definition Export.c:812
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallResetMsrBitmapWrite(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for resetting MSR Bitmap Write
Definition DirectVmcall.c:388
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallTest(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for test direct VMCALL
Definition DirectVmcall.c:25
IMPORT_EXPORT_VMM VOID BroadcastEnableRdtscExitingAllCores()
a broadcast that causes vm-exit on all execution of rdtsc/rdtscp
Definition Broadcast.c:132
IMPORT_EXPORT_VMM VOID VmFuncUnRegisterMtfBreak(UINT32 CoreId)
Unregister for break in the case of an MTF.
Definition Export.c:86
IMPORT_EXPORT_VMM VMX_SEGMENT_SELECTOR GetGuestCs()
Get the Guest Cs Selector.
Definition ManageRegs.c:49
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallEnableExternalInterruptExiting(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for enabling external interrupt exiting
Definition DirectVmcall.c:198
IMPORT_EXPORT_VMM VOID SetGuestGdtr(UINT64 Gdtr)
Set the Guest Gdtr.
Definition ManageRegs.c:347
IMPORT_EXPORT_VMM VOID BroadcastResetChangeAllMsrBitmapReadAllCores()
routines for disable (reset) !msrread command
Definition Broadcast.c:173
IMPORT_EXPORT_VMM VOID VmFuncSetTriggerEventForVmcalls(BOOLEAN Set)
Set triggering events for VMCALLs.
Definition Export.c:575
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallUnsetExceptionBitmap(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for unsetting exception bitmap on VMCS
Definition DirectVmcall.c:312
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperCheckIfPageIsNxBitSetOnTargetProcess(_In_ PVOID Va)
IMPORT_EXPORT_VMM VOID ConfigureSetEferSyscallOrSysretHookType(DEBUGGER_EVENT_SYSCALL_SYSRET_TYPE SyscallHookType)
routines for setting EFER syscall or sysret hooks type
Definition Configuration.c:439
IMPORT_EXPORT_VMM VOID VmFuncSetRflagTrapFlag(BOOLEAN Set)
Set Rflag's trap flag.
Definition Export.c:110
IMPORT_EXPORT_VMM CR3_TYPE SwitchToCurrentProcessMemoryLayout()
Switch to guest's running process's cr3.
Definition SwitchLayout.c:70
IMPORT_EXPORT_VMM BOOLEAN DisassemblerShowOneInstructionInVmxNonRootMode(PVOID Address, UINT64 ActualRip, BOOLEAN Is32Bit)
Disassembler show only one instruction.
Definition Disassembler.c:121
IMPORT_EXPORT_VMM NTSTATUS TransparentUnhideDebugger()
Deactivate transparent-mode.
Definition Transparency.c:425
IMPORT_EXPORT_VMM BOOLEAN CheckAccessValidityAndSafety(UINT64 TargetAddress, UINT32 Size)
Check the safety to access the memory.
Definition AddressCheck.c:156
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallDisableMov2DrExitingForClearingDrEvents(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for clearing mov 2 hw dr exiting bit ONLY in the case of disabling the events for !...
Definition DirectVmcall.c:504
IMPORT_EXPORT_VMM BOOLEAN SetDebugRegisters(UINT32 DebugRegNum, DEBUG_REGISTER_TYPE ActionType, BOOLEAN ApplyToVmcs, UINT64 TargetAddress)
Configure hardware debug register for access, write and fetch breakpoints.
Definition DebugRegisters.c:37
IMPORT_EXPORT_VMM VOID SwitchToPreviousProcess(_In_ CR3_TYPE PreviousProcess)
IMPORT_EXPORT_VMM VOID SetGuestDr6(UINT64 value)
Set the Guest Dr6 Register.
Definition ManageRegs.c:639
IMPORT_EXPORT_VMM VOID VmFuncSetRflags(UINT64 Rflags)
Set guest's RFLAGS.
Definition Export.c:364
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallPerformVmcall(UINT32 CoreId, UINT64 VmcallNumber, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for performing a direct VMCALL
Definition DirectVmcall.c:45
IMPORT_EXPORT_VMM VOID ConfigureEnableMovToDebugRegistersExitingOnSingleCore(UINT32 TargetCoreId)
enable mov 2 debug register exiting on a single core
Definition Configuration.c:498
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallUnhookSinglePage(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for restoring a single EPT entry and invalidating EPT cache
Definition DirectVmcall.c:331
IMPORT_EXPORT_VMM VOID VmFuncSetMonitorTrapFlag(BOOLEAN Set)
Set the monitor trap flag.
Definition Export.c:98
IMPORT_EXPORT_VMM UINT64 PhysicalAddressToVirtualAddressOnTargetProcess(_In_ PVOID PhysicalAddress)
IMPORT_EXPORT_VMM VOID VmFuncInvalidateEptSingleContext(UINT32 CoreId)
Requests for single-context EPT invalidation.
Definition Export.c:478
IMPORT_EXPORT_VMM VOID VmFuncSetMovDebugRegsExiting(UINT32 CoreId, BOOLEAN Set)
Set or unset the Mov to Debug Registers Exiting.
Definition Export.c:306
IMPORT_EXPORT_VMM UINT64 GetGuestGdtr()
Get the Guest Gdtr.
Definition ManageRegs.c:358
IMPORT_EXPORT_VMM VOID VmFuncVmxBroadcastUninitialize()
Export for uninitialize the VMX Broadcast mechanism.
Definition Export.c:708
IMPORT_EXPORT_VMM VOID SetGuestSs(PVMX_SEGMENT_SELECTOR Ss)
Set the Guest Ss selector.
Definition ManageRegs.c:80
IMPORT_EXPORT_VMM VOID VmFuncChangeIgnoreOneMtfState(UINT32 CoreId, BOOLEAN Set)
Change ignore one MTF state.
Definition Export.c:60
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperReadMemorySafe(_In_ UINT64 VaAddressToRead, _Inout_ PVOID BufferToSaveMemory, _In_ SIZE_T SizeToRead)
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallEnableRdpmcExiting(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for enabling rdpmc exiting
Definition DirectVmcall.c:122
IMPORT_EXPORT_VMM UINT32 CheckAddressMaximumInstructionLength(PVOID Address)
This function returns the maximum instruction length that can be read from this address.
Definition AddressCheck.c:306
IMPORT_EXPORT_VMM PVOID MemoryMapperGetPteVaWithoutSwitchingByCr3(_In_ PVOID Va, _In_ PAGING_LEVEL Level, _In_ CR3_TYPE TargetCr3)
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperCheckIfPdeIsLargePageOnTargetProcess(_In_ PVOID Va)
IMPORT_EXPORT_VMM VOID BroadcastEnableDbAndBpExitingAllCores()
routines to set vm-exit on all #DBs and #BP on all cores
Definition Broadcast.c:35
IMPORT_EXPORT_VMM VOID SetGuestCr3(UINT64 Cr3)
Set the Guest Cr3 Register.
Definition ManageRegs.c:555
IMPORT_EXPORT_VMM VOID VmFuncSuppressRipIncrement(UINT32 CoreId)
Suppress the incrementation of RIP.
Definition Export.c:34
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperFreeMemoryOnTargetProcess(_In_ UINT32 ProcessId, _Inout_ PVOID BaseAddress)
IMPORT_EXPORT_VMM INT32 VmFuncVmxCompatibleWcscmp(const wchar_t *Address1, const wchar_t *Address2)
VMX-root compatible wcscmp.
Definition Export.c:759
IMPORT_EXPORT_VMM VOID SetGuestDr0(UINT64 value)
Set the Guest Dr0 Register.
Definition ManageRegs.c:591
IMPORT_EXPORT_VMM UINT64 GetGuestLdtr()
Get the Guest Ldtr.
Definition ManageRegs.c:331
IMPORT_EXPORT_VMM VOID VmFuncSetNmiWindowExiting(BOOLEAN Set)
Set NMI-window exiting.
Definition Export.c:227
IMPORT_EXPORT_VMM VOID BroadcastResetAllMsrBitmapWriteAllCores()
routines for reset !msrwrite command which
Definition Broadcast.c:200
IMPORT_EXPORT_VMM VOID VmFuncEnableMtfAndChangeExternalInterruptState(UINT32 CoreId)
Enables MTF and adjust external interrupt state.
Definition Export.c:799
IMPORT_EXPORT_VMM VOID ConfigureModeBasedExecHookUninitializeOnAllProcessors()
routines for initializing Mode-based execution hooks
Definition Configuration.c:83
IMPORT_EXPORT_VMM VOID VmFuncSetPmcVmexit(BOOLEAN Set)
Set vm-exit for rdpmc instructions.
Definition Export.c:147
IMPORT_EXPORT_VMM VOID BroadcastEnableRdpmcExitingAllCores()
routines for !pmc
Definition Broadcast.c:254
IMPORT_EXPORT_VMM VOID BroadcastEnableMovDebugRegistersExitingAllCores()
routines for !dr
Definition Broadcast.c:355
IMPORT_EXPORT_VMM UINT64 VmFuncGetRflags()
Read guest's RFLAGS.
Definition Export.c:352
IMPORT_EXPORT_VMM VOID SetGuestCr8(UINT64 Cr8)
Set the Guest Cr8 Register.
Definition ManageRegs.c:579
IMPORT_EXPORT_VMM PVOID MemoryMapperGetPteVaOnTargetProcess(_In_ PVOID Va, _In_ PAGING_LEVEL Level)
IMPORT_EXPORT_VMM UINT32 DisassemblerShowOneInstructionInVmxRootMode(PVOID Address, BOOLEAN Is32Bit)
Shows the disassembly of only one instruction.
Definition Disassembler.c:328
IMPORT_EXPORT_VMM NTSTATUS TransparentHideDebugger(PDEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE Measurements)
Hide debugger on transparent-mode (activate transparent-mode)
Definition Transparency.c:356
IMPORT_EXPORT_VMM VOID ConfigureDisableEferSyscallEventsOnAllProcessors()
routines for disabling syscall hooks on all cores
Definition Configuration.c:143
IMPORT_EXPORT_VMM VOID SetGuestDr1(UINT64 value)
Set the Guest Dr1 Register.
Definition ManageRegs.c:603
IMPORT_EXPORT_VMM UINT64 VirtualAddressToPhysicalAddressOnTargetProcess(_In_ PVOID VirtualAddress)
IMPORT_EXPORT_VMM VOID VmFuncChangeMtfUnsettingState(UINT32 CoreId, BOOLEAN Set)
Suppress unsetting MTF.
Definition Export.c:47
IMPORT_EXPORT_VMM VOID VmFuncSetInterruptibilityState(UINT64 InterruptibilityState)
Set guest's interruptibility state.
Definition Export.c:421
IMPORT_EXPORT_VMM VOID BroadcastIoBitmapChangeAllCores(UINT64 Port)
routines for !ioin and !ioout command which
Definition Broadcast.c:409
IMPORT_EXPORT_VMM VOID SetGuestTr(UINT64 Tr)
Definition ManageRegs.c:372
IMPORT_EXPORT_VMM VOID ConfigureDisableMovToCr3ExitingOnAllProcessors()
routines for debugging threads (disable mov-to-cr3 exiting)
Definition Configuration.c:116
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperWriteMemorySafeOnTargetProcess(_Inout_ UINT64 Destination, _In_ PVOID Source, _In_ SIZE_T Size)
IMPORT_EXPORT_VMM VOID BroadcastChangeAllMsrBitmapReadAllCores(UINT64 BitmapMask)
routines for !msrread command which
Definition Broadcast.c:160
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallDisableRdtscExitingForClearingTscEvents(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for clearing rdtsc exiting bit ONLY in the case of disabling the events for !...
Definition DirectVmcall.c:446
IMPORT_EXPORT_VMM VOID ConfigureUninitializeExecTrapOnAllProcessors()
routines for uninitializing user-mode, kernel-mode exec trap
Definition Configuration.c:48
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallDisableEferSyscallEvents(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for disabling syscall hook using EFER SCE bit
Definition DirectVmcall.c:484
IMPORT_EXPORT_VMM PVOID MemoryMapperGetPteVa(_In_ PVOID Va, _In_ PAGING_LEVEL Level)
IMPORT_EXPORT_VMM VOID VmFuncSetRip(UINT64 Rip)
Set guest's RIP.
Definition Export.c:387
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallChangeMsrBitmapRead(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for changing MSR Bitmap (Read)
Definition DirectVmcall.c:65
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHookUnHookSingleAddressFromVmxRoot(UINT64 VirtualAddress, UINT64 PhysAddress, EPT_SINGLE_HOOK_UNHOOKING_DETAILS *TargetUnhookingDetails)
Remove single hook from the hooked pages list and invalidate TLB.
Definition Configuration.c:209
IMPORT_EXPORT_VMM VOID ConfigureChangeMsrBitmapReadOnSingleCore(UINT32 TargetCoreId, UINT64 MsrMask)
change the mask of msr bitmaps for read on a single core
Definition Configuration.c:554
IMPORT_EXPORT_VMM VOID VmFuncSetMovToCr3Vmexit(UINT32 CoreId, BOOLEAN Set)
Set vm-exit for mov-to-cr3.
Definition Export.c:177
IMPORT_EXPORT_VMM VOID BroadcastDisableMovToCr3ExitingOnAllProcessors()
routines for debugging threads (disable mov-to-cr3 exiting)
Definition Broadcast.c:491
IMPORT_EXPORT_VMM UINT64 GetGuestDr2()
Get the Guest Dr2 value.
Definition ManageRegs.c:688
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHookModifyPageWriteState(UINT32 CoreId, PVOID PhysicalAddress, BOOLEAN IsUnset)
Change PML EPT state for write @detail should be called from VMX-root.
Definition Configuration.c:411
IMPORT_EXPORT_VMM VOID VmFuncRegisterMtfBreak(UINT32 CoreId)
Register for break in the case of an MTF.
Definition Export.c:73
IMPORT_EXPORT_VMM BOOLEAN MemoryManagerReadProcessMemoryNormal(HANDLE PID, PVOID Address, DEBUGGER_READ_MEMORY_TYPE MemType, PVOID UserBuffer, SIZE_T Size, PSIZE_T ReturnSize)
Read process memory.
Definition MemoryManager.c:29
IMPORT_EXPORT_VMM VMX_SEGMENT_SELECTOR GetGuestDs()
Get the Guest Ds Selector.
Definition ManageRegs.c:139
IMPORT_EXPORT_VMM VOID VmFuncWriteExceptionBitmap(UINT32 BitmapMask)
Write on exception bitmap in VMCS DO NOT CALL IT DIRECTLY, instead use HvSetExceptionBitmap.
Definition Export.c:191
IMPORT_EXPORT_VMM VOID BroadcastEnableEferSyscallEventsOnAllProcessors()
routines for enabling syscall hooks on all cores
Definition Broadcast.c:502
IMPORT_EXPORT_VMM VOID BroadcastDisableMov2DebugRegsExitingForClearingEventsAllCores()
routines ONLY for disabling !dr command
Definition Broadcast.c:240
IMPORT_EXPORT_VMM VOID BroadcastUnsetExceptionBitmapAllCores(UINT64 ExceptionIndex)
routines for disabling exception bitmap
Definition Broadcast.c:299
IMPORT_EXPORT_VMM VOID BroadcastEnableBreakpointExitingOnExceptionBitmapAllCores()
routines to enable vm-exit for breakpoints (exception bitmap)
Definition Broadcast.c:63
IMPORT_EXPORT_VMM UINT64 GetGuestDr3()
Get the Guest Dr3 value.
Definition ManageRegs.c:701
IMPORT_EXPORT_VMM BOOLEAN ConfigureExecTrapAddProcessToWatchingList(UINT32 ProcessId)
Add the target process to the watching list.
Definition Configuration.c:60
IMPORT_EXPORT_VMM UINT64 GetGuestRFlags()
Get the Guest Rflags value.
Definition ManageRegs.c:409
IMPORT_EXPORT_VMM BOOLEAN VmFuncVmxGetCurrentExecutionMode()
Get the current VMX operation state.
Definition Export.c:552
IMPORT_EXPORT_VMM VOID SetGuestDsSel(PVMX_SEGMENT_SELECTOR Ds)
Set just the Guest Ds selector.
Definition ManageRegs.c:113
IMPORT_EXPORT_VMM VOID SetGuestEsSel(PVMX_SEGMENT_SELECTOR Es)
Set just the Guest Es selector.
Definition ManageRegs.c:248
IMPORT_EXPORT_VMM VOID ConfigureDirtyLoggingUninitializeOnAllProcessors()
routines for uninitializing dirty logging mechanism
Definition Configuration.c:105
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperWriteMemorySafe(_Inout_ UINT64 Destination, _In_ PVOID Source, _In_ SIZE_T SizeToWrite, _In_ CR3_TYPE TargetProcessCr3)
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHook2(UINT32 CoreId, PVOID TargetAddress, PVOID HookFunction, UINT32 ProcessId)
This function allocates a buffer in VMX Non Root Mode and then invokes a VMCALL to set the hook (inli...
Definition Configuration.c:295
IMPORT_EXPORT_VMM VOID BroadcastDisableMovDebugRegistersExitingAllCores()
routines for disabling !dr
Definition Broadcast.c:368
IMPORT_EXPORT_VMM VMX_SEGMENT_SELECTOR GetGuestSs()
Get the Guest Ss Selector.
Definition ManageRegs.c:94
IMPORT_EXPORT_VMM UINT64 VmFuncGetInterruptibilityState()
Read guest's interruptibility state.
Definition Export.c:398
IMPORT_EXPORT_VMM UINT64 GetGuestRIP()
Get the Guest RIP value.
Definition ManageRegs.c:446
IMPORT_EXPORT_VMM BOOLEAN VmFuncInitVmm(VMM_CALLBACKS *VmmCallbacks)
Initializes hypervisor.
Definition Export.c:530
IMPORT_EXPORT_VMM BOOLEAN DisassemblerShowInstructionsInVmxNonRootMode(PVOID Address, UINT32 Length, BOOLEAN Is32Bit)
Disassembler show the instructions.
Definition Disassembler.c:26
IMPORT_EXPORT_VMM VOID SetGuestCr0(UINT64 Cr0)
Set the Guest Cr0 Register.
Definition ManageRegs.c:531
IMPORT_EXPORT_VMM VMX_SEGMENT_SELECTOR GetGuestGs()
Get the Guest Gs Selector.
Definition ManageRegs.c:229
IMPORT_EXPORT_VMM CR3_TYPE SwitchToProcessMemoryLayout(_In_ UINT32 ProcessId)
IMPORT_EXPORT_VMM UINT32 VmFuncReadExceptionBitmap()
Read exception bitmap in VMCS.
Definition Export.c:203
IMPORT_EXPORT_VMM UINT64 PhysicalAddressToVirtualAddress(_In_ UINT64 PhysicalAddress)
IMPORT_EXPORT_VMM UINT64 PoolManagerRequestPool(POOL_ALLOCATION_INTENTION Intention, BOOLEAN RequestNewPool, UINT32 Size)
This function should be called from vmx-root in order to get a pool from the list.
Definition PoolManager.c:212
IMPORT_EXPORT_VMM UINT64 GetGuestCr0()
Get the Guest Cr0 value.
Definition ManageRegs.c:460
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHookMonitorFromVmxRoot(UINT32 CoreId, EPT_HOOKS_ADDRESS_DETAILS_FOR_MEMORY_MONITOR *MemoryAddressDetails)
This function allocates a buffer in VMX Non Root Mode and then invokes a VMCALL to set the hook.
Definition Configuration.c:358
IMPORT_EXPORT_VMM INT32 VmFuncVmxCompatibleStrncmp(const CHAR *Address1, const CHAR *Address2, SIZE_T Num)
VMX-root compatible strncmp.
Definition Export.c:746
IMPORT_EXPORT_VMM VOID SetGuestCr2(UINT64 Cr2)
Set the Guest Cr2 Register.
Definition ManageRegs.c:543
IMPORT_EXPORT_VMM VOID SetGuestGsSel(PVMX_SEGMENT_SELECTOR Gs)
Set just the Guest Gs selector.
Definition ManageRegs.c:203
#define IMPORT_EXPORT_VMM
Definition HyperDbgVmmImports.h:16
IMPORT_EXPORT_VMM VOID VmFuncEventInjectPageFaultRangeAddress(UINT32 CoreId, UINT64 AddressFrom, UINT64 AddressTo, UINT32 PageFaultCode)
Inject a range of page-faults.
Definition Export.c:643
IMPORT_EXPORT_VMM VOID SetGuestDr2(UINT64 value)
Set the Guest Dr2 Register.
Definition ManageRegs.c:615
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHookFromVmxRoot(PVOID TargetAddress)
This function invokes a direct VMCALL to setup the hook.
Definition Configuration.c:278
IMPORT_EXPORT_VMM UINT64 VmFuncClearSteppingBits(UINT64 Interruptibility)
Clear STI and MOV SS bits.
Definition Export.c:409
IMPORT_EXPORT_VMM VOID ConfigureSetExceptionBitmapOnSingleCore(UINT32 TargetCoreId, UINT32 BitMask)
set exception bitmap on a single core
Definition Configuration.c:512
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallInvalidateEptAllContexts(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for invalidating EPT (All Contexts)
Definition DirectVmcall.c:274
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallResetIoBitmap(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for resetting I/O Bitmaps (A & B)
Definition DirectVmcall.c:426
IMPORT_EXPORT_VMM VOID ConfigureSetExternalInterruptExitingOnSingleCore(UINT32 TargetCoreId)
set external interrupt exiting on a single core
Definition Configuration.c:459
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHookMonitor(UINT32 CoreId, EPT_HOOKS_ADDRESS_DETAILS_FOR_MEMORY_MONITOR *HookingDetails, UINT32 ProcessId)
This function allocates a buffer in VMX Non Root Mode and then invokes a VMCALL to set the hook.
Definition Configuration.c:318
IMPORT_EXPORT_VMM VOID SetGuestCsSel(PVMX_SEGMENT_SELECTOR Cs)
Set just the Guest Cs selector.
Definition ManageRegs.c:22
IMPORT_EXPORT_VMM VOID BroadcastDisableBreakpointExitingOnExceptionBitmapAllCores()
routines to disable vm-exit for breakpoints (exception bitmap)
Definition Broadcast.c:77
IMPORT_EXPORT_VMM VOID BroadcastDisableDbAndBpExitingAllCores()
routines to unset vm-exit on all #DBs and #BP on all cores
Definition Broadcast.c:49
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallResetExceptionBitmapOnlyOnClearingExceptionEvents(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for resetting exception bitmap on VMCS
Definition DirectVmcall.c:407
IMPORT_EXPORT_VMM BOOLEAN PoolManagerFreePool(UINT64 AddressToFree)
This function set a pool flag to be freed, and it will be freed on the next IOCTL when it's safe to r...
Definition PoolManager.c:136
IMPORT_EXPORT_VMM UINT64 MemoryMapperReserveUsermodeAddressOnTargetProcess(_In_ UINT32 ProcessId, _In_ BOOLEAN Allocate)
IMPORT_EXPORT_VMM VOID SetGuestRIP(UINT64 RIP)
Set the Guest RIP Register.
Definition ManageRegs.c:423
IMPORT_EXPORT_VMM INT32 VmFuncVmxCompatibleMemcmp(const CHAR *Address1, const CHAR *Address2, size_t Count)
VMX-root compatible memcmp.
Definition Export.c:787
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallEnableRdtscpExiting(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for enabling rdtsc/rdtscp exiting
Definition DirectVmcall.c:141
IMPORT_EXPORT_VMM VOID ConfigureEnableMovToControlRegisterExitingOnSingleCore(UINT32 TargetCoreId, DEBUGGER_EVENT_OPTIONS *BroadcastingOption)
enable mov 2 control register on a single core
Definition Configuration.c:526
IMPORT_EXPORT_VMM VOID SetGuestDr7(UINT64 value)
Set the Guest Dr7 Register.
Definition ManageRegs.c:651
IMPORT_EXPORT_VMM VOID VmFuncSetLoadDebugControls(BOOLEAN Set)
Set LOAD DEBUG CONTROLS on Vm-entry controls.
Definition Export.c:122
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperWriteMemoryUnsafe(_Inout_ UINT64 Destination, _In_ PVOID Source, _In_ SIZE_T SizeToWrite, _In_ UINT32 TargetProcessId)
IMPORT_EXPORT_VMM UINT64 VirtualAddressToPhysicalAddress(_In_ PVOID VirtualAddress)
Converts Virtual Address to Physical Address.
Definition Conversion.c:154
IMPORT_EXPORT_VMM VOID BroadcastUnsetExternalInterruptExitingOnlyOnClearingInterruptEventsAllCores()
routines for ONLY terminate !interrupt command
Definition Broadcast.c:395
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallDisableRdpmcExiting(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for disabling rdpmc exiting in primary cpu-based controls
Definition DirectVmcall.c:465
IMPORT_EXPORT_VMM VOID BroadcastSetExceptionBitmapAllCores(UINT64 ExceptionIndex)
routines for !exception command which
Definition Broadcast.c:283
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHookUnHookSingleAddress(UINT64 VirtualAddress, UINT64 PhysAddress, UINT32 ProcessId)
Remove single hook from the hooked pages list and invalidate TLB.
Definition Configuration.c:188
IMPORT_EXPORT_VMM BOOLEAN VmFuncNmiBroadcastInvalidateEptAllContexts(UINT32 CoreId)
Broadcast NMI requests for all contexts EPT invalidation.
Definition Export.c:463
IMPORT_EXPORT_VMM VOID ConfigureEnableRdtscExitingOnSingleCore(UINT32 TargetCoreId)
enable RDTSC exiting on a single core
Definition Configuration.c:472
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHook(PVOID TargetAddress, UINT32 ProcessId)
This function invokes a VMCALL to set the hook and broadcast the exiting for the breakpoints on excep...
Definition Configuration.c:261
IMPORT_EXPORT_VMM VOID BroadcastDisableMovToControlRegistersExitingAllCores(PDEBUGGER_EVENT_OPTIONS BroadcastingOption)
routines for disabling !crwrite
Definition Broadcast.c:341
IMPORT_EXPORT_VMM UINT64 VirtualAddressToPhysicalAddressByProcessCr3(_In_ PVOID VirtualAddress, _In_ CR3_TYPE TargetCr3)
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperWriteMemorySafeByPhysicalAddress(_Inout_ UINT64 DestinationPa, _In_ UINT64 Source, _In_ SIZE_T SizeToWrite)
IMPORT_EXPORT_VMM CR3_TYPE LayoutGetExactGuestProcessCr3()
Get cr3 of the target running process.
Definition Layout.c:75
IMPORT_EXPORT_VMM VOID VmFuncEventInjectBreakpoint()
Inject #BP to the guest (Event Injection)
Definition Export.c:719
IMPORT_EXPORT_VMM VOID ConfigureEnableEferSyscallHookOnSingleCore(UINT32 TargetCoreId)
routines for enabling EFER syscall hooks on a single core
Definition Configuration.c:426
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHookModifyPageReadState(UINT32 CoreId, PVOID PhysicalAddress, BOOLEAN IsUnset)
Change PML EPT state for read @detail should be called from VMX-root.
Definition Configuration.c:393
IMPORT_EXPORT_VMM VOID SetGuestCr4(UINT64 Cr4)
Set the Guest Cr4 Register.
Definition ManageRegs.c:567
IMPORT_EXPORT_VMM BOOLEAN VmFuncNmiBroadcastInvalidateEptSingleContext(UINT32 CoreId)
Broadcast NMI requests for single-context EPT invalidation.
Definition Export.c:448
IMPORT_EXPORT_VMM VOID VmFuncSetMovControlRegsExiting(BOOLEAN Set, UINT64 ControlRegister, UINT64 MaskRegister)
Set vm-exit for mov-to-cr0/4.
Definition Export.c:162
IMPORT_EXPORT_VMM VOID VmFuncEventInjectInterruption(UINT32 InterruptionType, UINT32 Vector, BOOLEAN DeliverErrorCode, UINT32 ErrorCode)
Inject interrupt/faults/exceptions.
Definition Export.c:662
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallDisableMov2CrExitingForClearingCrEvents(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for clearing mov 2 cr exiting bit ONLY in the case of disabling the events for !...
Definition DirectVmcall.c:524
IMPORT_EXPORT_VMM VOID BroadcastDisableMov2ControlRegsExitingForClearingEventsAllCores(PDEBUGGER_EVENT_OPTIONS BroadcastingOption)
routines ONLY for disabling !crwrite command
Definition Broadcast.c:227
IMPORT_EXPORT_VMM UINT64 GetGuestCr3()
Get the Guest Cr3 value.
Definition ManageRegs.c:488
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallSetHiddenBreakpointHook(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for putting hidden breakpoints (using EPT)
Definition DirectVmcall.c:255
IMPORT_EXPORT_VMM BOOLEAN CheckAddressValidityUsingTsx(CHAR *Address)
This function checks whether the address is valid or not using Intel TSX.
Definition AddressCheck.c:24
IMPORT_EXPORT_VMM VOID BroadcastChangeAllMsrBitmapWriteAllCores(UINT64 BitmapMask)
routines for !msrwrite command which
Definition Broadcast.c:187
IMPORT_EXPORT_VMM VOID VmFuncCheckAndEnableExternalInterrupts(UINT32 CoreId)
Check and enable external interrupts.
Definition Export.c:505
IMPORT_EXPORT_VMM VOID SetGuestCs(PVMX_SEGMENT_SELECTOR Cs)
Set the Guest Cs.
Definition ManageRegs.c:35
IMPORT_EXPORT_VMM VOID VmFuncSetTriggerEventForCpuids(BOOLEAN Set)
Set triggering events for CPUIDs.
Definition Export.c:587
IMPORT_EXPORT_VMM VOID SetGuestFsSel(PVMX_SEGMENT_SELECTOR Fs)
Set just the Guest Fs selector.
Definition ManageRegs.c:158
IMPORT_EXPORT_VMM VOID VmFuncSetSaveDebugControls(BOOLEAN Set)
Set SAVE DEBUG CONTROLS on Vm-exit controls.
Definition Export.c:134
IMPORT_EXPORT_VMM VOID BroadcastResetExceptionBitmapAllCores()
routines for reset !exception command
Definition Broadcast.c:312
IMPORT_EXPORT_VMM UINT64 PhysicalAddressToVirtualAddressByCr3(_In_ PVOID PhysicalAddress, _In_ CR3_TYPE TargetCr3)
IMPORT_EXPORT_VMM VOID VmFuncVmxBroadcastInitialize()
Export for initialize the VMX Broadcast mechanism.
Definition Export.c:697
IMPORT_EXPORT_VMM BOOLEAN VmFuncNmiBroadcastRequest(UINT32 CoreId)
Broadcast NMI requests.
Definition Export.c:433
IMPORT_EXPORT_VMM UINT32 DisassemblerLengthDisassembleEngineInVmxRootOnTargetProcess(PVOID Address, BOOLEAN Is32Bit)
Disassembler length disassembler engine.
Definition Disassembler.c:297
IMPORT_EXPORT_VMM VOID VmFuncInjectPendingExternalInterrupts(UINT32 CoreId)
Inject pending external interrupts.
Definition Export.c:330
IMPORT_EXPORT_VMM PVOID MemoryMapperGetPteVaByCr3(_In_ PVOID Va, _In_ PAGING_LEVEL Level, _In_ CR3_TYPE TargetCr3)
IMPORT_EXPORT_VMM VOID SetGuestDs(PVMX_SEGMENT_SELECTOR Ds)
Set the Guest Ds selector.
Definition ManageRegs.c:125
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallEnableMov2DebugRegsExiting(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for enabling mov to debug registers exiting
Definition DirectVmcall.c:160
IMPORT_EXPORT_VMM BOOLEAN CheckAddressPhysical(UINT64 PAddr)
Checks if the physical address is correct or not based on physical address width.
Definition AddressCheck.c:120
IMPORT_EXPORT_VMM UINT64 GetGuestTr()
Get the Guest Tr.
Definition ManageRegs.c:383
IMPORT_EXPORT_VMM BOOLEAN ConfigureExecTrapRemoveProcessFromWatchingList(UINT32 ProcessId)
Remove the target process from the watching list.
Definition Configuration.c:72
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallResetMsrBitmapRead(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for resetting MSR Bitmap Read
Definition DirectVmcall.c:369
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperReadMemorySafeByPhysicalAddress(_In_ UINT64 PaAddressToRead, _Inout_ UINT64 BufferToSaveMemory, _In_ SIZE_T SizeToRead)
IMPORT_EXPORT_VMM UINT64 GetGuestDr7()
Get the Guest Dr7 (breakpoint trigger) value.
Definition ManageRegs.c:727
IMPORT_EXPORT_VMM VOID SetGuestDr3(UINT64 value)
Set the Guest Dr3 Register.
Definition ManageRegs.c:627
IMPORT_EXPORT_VMM PVOID MemoryMapperSetExecuteDisableToPteOnTargetProcess(_In_ PVOID Va, _In_ BOOLEAN Set)
IMPORT_EXPORT_VMM VOID BroadcastDisableRdtscExitingForClearingEventsAllCores()
routines ONLY for disabling !tsc command
Definition Broadcast.c:213
IMPORT_EXPORT_VMM UINT32 VmFuncVmxCompatibleStrlen(const CHAR *s)
VMX-root compatible strlen.
Definition Export.c:599
IMPORT_EXPORT_VMM VOID SetGuestFs(PVMX_SEGMENT_SELECTOR Fs)
Set the Guest Fs selector.
Definition ManageRegs.c:170
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHookModifyInstructionFetchState(UINT32 CoreId, PVOID PhysicalAddress, BOOLEAN IsUnset)
Change PML EPT state for execution (execute) @detail should be called from VMX-root.
Definition Configuration.c:375
IMPORT_EXPORT_VMM UINT64 VmFuncGetLastVmexitRip(UINT32 CoreId)
get the last vm-exit RIP
Definition Export.c:318
IMPORT_EXPORT_VMM CR3_TYPE SwitchToProcessMemoryLayoutByCr3(_In_ CR3_TYPE TargetCr3)
IMPORT_EXPORT_VMM UINT64 GetGuestDr0()
Get the Guest Dr0 value.
Definition ManageRegs.c:662
IMPORT_EXPORT_VMM BOOLEAN VmFuncQueryModeExecTrap()
Get the current state of mode exec trap mechanism.
Definition Export.c:563
IMPORT_EXPORT_VMM VOID SetGuestRFlags(UINT64 RFlags)
Set the Guest RFLAGS Register.
Definition ManageRegs.c:398
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHook2FromVmxRoot(UINT32 CoreId, PVOID TargetAddress, PVOID HookFunction)
This function allocates a buffer in VMX Non Root Mode and then invokes a VMCALL to set the hook (inli...
Definition Configuration.c:338
IMPORT_EXPORT_VMM VOID VmFuncSetNmiExiting(BOOLEAN Set)
Set the NMI Exiting.
Definition Export.c:239
IMPORT_EXPORT_VMM UINT64 VirtualAddressToPhysicalAddressByProcessId(_In_ PVOID VirtualAddress, _In_ UINT32 ProcessId)
IMPORT_EXPORT_VMM VOID VmFuncInvalidateEptAllContexts()
Requests for all contexts EPT invalidation.
Definition Export.c:489
IMPORT_EXPORT_VMM VOID VmFuncSetInterruptWindowExiting(BOOLEAN Set)
Set Interrupt-window exiting.
Definition Export.c:215
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperCheckPteIsPresentOnTargetProcess(PVOID Va, PAGING_LEVEL Level)
This function checks whether the virtual address is present in the RAM or not.
Definition MemoryMapper.c:174
IMPORT_EXPORT_VMM BOOLEAN MemoryMapperReadMemorySafeOnTargetProcess(_In_ UINT64 VaAddressToRead, _Inout_ PVOID BufferToSaveMemory, _In_ SIZE_T SizeToRead)
IMPORT_EXPORT_VMM CR3_TYPE LayoutGetCurrentProcessCr3()
Get cr3 of the target running process.
Definition Layout.c:55
IMPORT_EXPORT_VMM VOID BroadcastEnableMovControlRegisterExitingAllCores(PDEBUGGER_EVENT_OPTIONS BroadcastingOption)
routines for !crwrite
Definition Broadcast.c:327
IMPORT_EXPORT_VMM VOID ConfigureChangeMsrBitmapWriteOnSingleCore(UINT32 TargetCoreId, UINT64 MsrMask)
change the mask of msr bitmaps for write on a single core
Definition Configuration.c:540
IMPORT_EXPORT_VMM VOID VmFuncUninitVmm()
Uninitialize Terminate Vmx on all logical cores.
Definition Export.c:541
IMPORT_EXPORT_VMM BOOLEAN ConfigureInitializeExecTrapOnAllProcessors()
routines for initializing user-mode, kernel-mode exec trap
Definition Configuration.c:37
IMPORT_EXPORT_VMM UINT64 VmFuncGetRip()
Read guest's RIP.
Definition Export.c:375
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHookUnHookAllByHookingTag(UINT64 HookingTag)
Remove all hooks from the hooked pages list using Hooking Tag.
Definition Configuration.c:157
IMPORT_EXPORT_VMM VOID BroadcastDisableRdtscExitingAllCores()
a broadcast that causes for disabling rdtsc/p exiting
Definition Broadcast.c:145
IMPORT_EXPORT_VMM UINT64 PhysicalAddressToVirtualAddressByProcessId(_In_ PVOID PhysicalAddress, _In_ UINT32 ProcessId)
IMPORT_EXPORT_VMM INT32 VmFuncVmxCompatibleWcsncmp(const wchar_t *Address1, const wchar_t *Address2, SIZE_T Num)
VMX-root compatible wcsncmp.
Definition Export.c:773
IMPORT_EXPORT_VMM VOID VmFuncSetExceptionBitmap(UINT32 CoreId, UINT32 IdtIndex)
Set exception bitmap in VMCS.
Definition Export.c:253
IMPORT_EXPORT_VMM BOOLEAN PoolManagerRequestAllocation(SIZE_T Size, UINT32 Count, POOL_ALLOCATION_INTENTION Intention)
Request to allocate new buffers.
Definition PoolManager.c:415
IMPORT_EXPORT_VMM VOID BroadcastDisableEferSyscallEventsOnAllProcessors()
routines for disabling syscall hooks on all cores
Definition Broadcast.c:513
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallSetExceptionBitmap(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for setting exception bitmap
Definition DirectVmcall.c:179
IMPORT_EXPORT_VMM UINT64 GetGuestCr2()
Get the Guest Cr2 value.
Definition ManageRegs.c:474
IMPORT_EXPORT_VMM BOOLEAN PoolManagerCheckAndPerformAllocationAndDeallocation()
This function performs allocations from VMX non-root based on g_RequestNewAllocation.
Definition PoolManager.c:302
IMPORT_EXPORT_VMM INT32 VmFuncVmxCompatibleStrcmp(const CHAR *Address1, const CHAR *Address2)
VMX-root compatible strcmp.
Definition Export.c:732
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallChangeMsrBitmapWrite(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for changing MSR Bitmap (Write)
Definition DirectVmcall.c:84
IMPORT_EXPORT_VMM VOID SetGuestGs(PVMX_SEGMENT_SELECTOR Gs)
Set the Guest Gs selector.
Definition ManageRegs.c:215
IMPORT_EXPORT_VMM VOID VmFuncSetRdtscExiting(UINT32 CoreId, BOOLEAN Set)
Set the RDTSC/P Exiting.
Definition Export.c:293
IMPORT_EXPORT_VMM VOID ConfigureEptHookAllocateExtraHookingPagesForMemoryMonitorsAndExecEptHooks(UINT32 Count)
Allocate (reserve) extra pages for storing details of page hooks for memory monitor and regular hidde...
Definition Configuration.c:227
IMPORT_EXPORT_VMM VOID VmFuncPerformRipIncrement(UINT32 CoreId)
Perform the incrementation of RIP.
Definition Export.c:22
IMPORT_EXPORT_VMM UINT32 DisassemblerLengthDisassembleEngine(PVOID Address, BOOLEAN Is32Bit)
Disassembler length disassemble engine.
Definition Disassembler.c:225
IMPORT_EXPORT_VMM VOID ConfigureDirtyLoggingInitializeOnAllProcessors()
routines for initializing dirty logging mechanism
Definition Configuration.c:94
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallEnableEferSyscall(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for enabling syscall hook using EFER SCE bit
Definition DirectVmcall.c:236
IMPORT_EXPORT_VMM VMX_SEGMENT_SELECTOR GetGuestFs()
Get the Guest Fs Selector.
Definition ManageRegs.c:184
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallInvalidateSingleContext(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for invalidating EPT (A Single Context)
Definition DirectVmcall.c:293
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallEnableMovToCrExiting(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for enabling mov to CR exiting
Definition DirectVmcall.c:217
IMPORT_EXPORT_VMM VOID ConfigureEnableEferSyscallEventsOnAllProcessors()
routines for enabling syscall hooks on all cores
Definition Configuration.c:132
IMPORT_EXPORT_VMM VOID VmFuncEventInjectPageFaultWithCr2(UINT32 CoreId, UINT64 Address, UINT32 PageFaultCode)
Inject #PF and configure CR2 register.
Definition Export.c:626
IMPORT_EXPORT_VMM VOID BroadcastDisableRdpmcExitingAllCores()
routines for disabling !pmc
Definition Broadcast.c:267
IMPORT_EXPORT_VMM BOOLEAN ConfigureEptHookUnHookSingleHookByHookingTagFromVmxRoot(UINT64 HookingTag, EPT_SINGLE_HOOK_UNHOOKING_DETAILS *TargetUnhookingDetails)
Remove single hook from the hooked pages by the given hooking tag.
Definition Configuration.c:170
IMPORT_EXPORT_VMM VOID SetGuestIdtr(UINT64 Idtr)
Set the Guest Idtr.
Definition ManageRegs.c:293
IMPORT_EXPORT_VMM VOID SetGuestEs(PVMX_SEGMENT_SELECTOR Es)
Set the Guest Es selector.
Definition ManageRegs.c:260
IMPORT_EXPORT_VMM NTSTATUS VmFuncVmxVmcall(unsigned long long VmcallNumber, unsigned long long OptionalParam1, unsigned long long OptionalParam2, unsigned long long OptionalParam3)
Export for running VMX VMCALLs.
Definition Export.c:683
IMPORT_EXPORT_VMM VOID ConfigureEptHookReservePreallocatedPoolsForEptHooks(UINT32 Count)
Allocate (reserve) pages for storing EPT hooks page hooks.
Definition Configuration.c:239
IMPORT_EXPORT_VMM VOID VmFuncSetExternalInterruptExiting(UINT32 CoreId, BOOLEAN Set)
Set the External Interrupt Exiting.
Definition Export.c:280
IMPORT_EXPORT_VMM VOID VmFuncDisableExternalInterruptsAndInterruptWindow(UINT32 CoreId)
Disable external-interrupts and interrupt window.
Definition Export.c:518
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallSetDisableExternalInterruptExitingOnlyOnClearingInterruptEvents(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for disabling external interrupt exiting only to clear !interrupt commands
Definition DirectVmcall.c:350
IMPORT_EXPORT_VMM NTSTATUS DirectVmcallChangeIoBitmap(UINT32 CoreId, DIRECT_VMCALL_PARAMETERS *DirectVmcallOptions)
routines for changing IO Bitmap
Definition DirectVmcall.c:103
IMPORT_EXPORT_VMM UINT64 GetGuestDr6()
Get the Guest Dr6 (breakpoint status) value.
Definition ManageRegs.c:714
enum _DEBUGGER_READ_MEMORY_TYPE DEBUGGER_READ_MEMORY_TYPE
different type of addresses
enum _DEBUGGER_EVENT_SYSCALL_SYSRET_TYPE DEBUGGER_EVENT_SYSCALL_SYSRET_TYPE
Type of handling !syscall or !sysret.
CR3 Structure.
Definition BasicTypes.h:130
request for performing a short-circuiting event
Definition Events.h:271
request for enable or disable transparent-mode
Definition RequestStructures.h:549
Used for sending direct VMCALLs on the VMX root-mode.
Definition DataTypes.h:294
Setting details for EPT Hooks (!monitor)
Definition DataTypes.h:331
Details of unhooking single EPT hooks.
Definition DataTypes.h:358
Prototype of each function needed by VMM module.
Definition VMM.h:181
Segment selector.
Definition DataTypes.h:436