MCPcopy Create free account

hub / github.com/SinaKarvandi/Hypervisor-From-Scratch / functions

Functions326 in github.com/SinaKarvandi/Hypervisor-From-Scratch

↓ 72 callersFunctionVmxRead
* @brief Read a value from the VMCS. * * @param Field - The VMCS field to read a value from. * @return The value read from the VMCS. 0 is returned
Part 5 - Setting up VMCS & Running Guest Code/VMCS-Checks/CheckGuestVmcsFieldsForVmEntry.c:80
↓ 10 callersFunctionPoolManagerAllocateAndAddToPoolTable
Allocate the new pools and add them to pool table */ Should b ecalled in vmx non-root This function doesn't need lock as it just calls once from PASSI
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/PoolManager.c:119
↓ 10 callersFunctionVirtualAddressToPhysicalAddress
Converts Virtual Address to Physical Address */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Common.c:110
↓ 9 callersFunctionPrintChars
Part 3 - Setting up Our First Virtual Machine/MyHypervisorDriver/MyHypervisorDriver/Driver.c:135
↓ 9 callersFunctionPrintChars
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/Driver.c:143
↓ 9 callersFunctionPrintChars
Part 4 - Address Translation Using Extended Page Table (EPT)/MyHypervisorDriver/MyHypervisorDriver/Driver.c:141
↓ 9 callersFunctionPrintChars
Part 5 - Setting up VMCS & Running Guest Code/MyHypervisorDriver/MyHypervisorDriver/Driver.c:150
↓ 8 callersFunctionFillGuestSelectorData
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/VMX.c:253
↓ 8 callersFunctionFillGuestSelectorData
Part 5 - Setting up VMCS & Running Guest Code/MyHypervisorDriver/MyHypervisorDriver/VMX.c:270
↓ 8 callersFunctionHvFillGuestSelectorData
Fill the guest's selector data */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/HypervisorRoutines.c:293
↓ 8 callersFunctionHvFillGuestSelectorData
Fill the guest's selector data */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/HypervisorRoutines.c:290
↓ 8 callersFunctionIsValidGuestPat
* @brief Checks whether the PAT value is valid for the guest. * * @param Pat - The PAT value to check. * @return TRUE if the PAT value is valid for
Part 5 - Setting up VMCS & Running Guest Code/VMCS-Checks/CheckGuestVmcsFieldsForVmEntry.c:198
↓ 8 callersFunctionVirtualAddressToPhysicalAddress
Converts Virtual Address to Physical Address */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Common.c:110
↓ 8 callersFunctionVirtualToPhysicalAddress
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/Memory.c:8
↓ 8 callersFunctionVirtualToPhysicalAddress
Part 5 - Setting up VMCS & Running Guest Code/MyHypervisorDriver/MyHypervisorDriver/Memory.c:8
↓ 7 callersFunctionAdjustControls
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/VMX.c:242
↓ 7 callersFunctionSpinlockUnlock
----------------------------------------------------------------------------------------------
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Spinlock.c:57
↓ 7 callersFunctionVirtualToPhysicalAddress
Part 4 - Address Translation Using Extended Page Table (EPT)/MyHypervisorDriver/MyHypervisorDriver/Memory.c:7
↓ 6 callersFunctionSpinlockLock
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Spinlock.c:29
↓ 6 callersFunctionValidateSegmentAccessRightsHelper
* @brief Checks validity of the guest segment register. * * @param SegmentType - The type of segment. * @param AccessRightsAsUInt32 - The access ri
Part 5 - Setting up VMCS & Running Guest Code/VMCS-Checks/CheckGuestVmcsFieldsForVmEntry.c:232
↓ 5 callersFunctionAdjustControls
Part 5 - Setting up VMCS & Running Guest Code/MyHypervisorDriver/MyHypervisorDriver/VMX.c:259
↓ 5 callersFunctionEptSetPML1AndInvalidateTLB
This function set the specific PML1 entry in a spinlock protected area then invalidate the TLB , this function should be called from vmx root-mode
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:872
↓ 5 callersFunctionHvAdjustControls
Returns the Cpu Based and Secondary Processor Based Controls and other controls based on hardware support */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/HypervisorRoutines.c:102
↓ 5 callersFunctionHvAdjustControls
Returns the Cpu Based and Secondary Processor Based Controls and other controls based on hardware support */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/HypervisorRoutines.c:97
↓ 4 callersFunctionInvvpid
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Vpid.c:5
↓ 4 callersFunctionMathPower
Part 5 - Setting up VMCS & Running Guest Code/MyHypervisorDriver/MyHypervisorDriver/Processor.c:8
↓ 4 callersFunctionPoolManagerRequestAllocation
Request to allocate new buffers */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/PoolManager.c:270
↓ 4 callersFunctionPrintIrpInfo
Part 3 - Setting up Our First Virtual Machine/MyHypervisorDriver/MyHypervisorDriver/Driver.c:575
↓ 4 callersFunctionPrintIrpInfo
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/Driver.c:587
↓ 4 callersFunctionPrintIrpInfo
Part 4 - Address Translation Using Extended Page Table (EPT)/MyHypervisorDriver/MyHypervisorDriver/Driver.c:581
↓ 4 callersFunctionPrintIrpInfo
Part 5 - Setting up VMCS & Running Guest Code/MyHypervisorDriver/MyHypervisorDriver/Driver.c:593
↓ 4 callersFunctionSetBit
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/Processor.c:97
↓ 4 callersFunctionSetBit
Set Bits for a special address (used on MSR Bitmaps) */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Common.c:72
↓ 4 callersFunctionSetBit
Set Bits for a special address (used on MSR Bitmaps) */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Common.c:72
↓ 3 callersFunctionEventInjectInterruption
Injects interruption to a guest
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Events.c:7
↓ 3 callersFunctionGetSegmentDescriptor
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/VMX.c:180
↓ 3 callersFunctionGetSegmentDescriptor
Part 5 - Setting up VMCS & Running Guest Code/MyHypervisorDriver/MyHypervisorDriver/VMX.c:200
↓ 3 callersFunctionHvGetSegmentDescriptor
Get Segment Descriptor */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/HypervisorRoutines.c:135
↓ 3 callersFunctionHvGetSegmentDescriptor
Get Segment Descriptor */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/HypervisorRoutines.c:129
↓ 3 callersFunctionMathPower
Part 3 - Setting up Our First Virtual Machine/MyHypervisorDriver/MyHypervisorDriver/Processor.c:6
↓ 3 callersFunctionMathPower
Part 4 - Address Translation Using Extended Page Table (EPT)/MyHypervisorDriver/MyHypervisorDriver/Processor.c:6
↓ 3 callersFunctionPoolManagerRequestPool
This function should be called from vmx-root in order to get a pool from the list */ Returns a pool address or retuns null If RequestNewPool is TRUE t
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/PoolManager.c:80
↓ 2 callersFunctionEptGetPml1Entry
Get the PML1 entry for this physical address if the page is split. Return NULL if the address is invalid or the page wasn't already split. */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Ept.c:96
↓ 2 callersFunctionEptHookWriteAbsoluteJump
Write an absolute x64 jump to an arbitrary address to a buffer. */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:525
↓ 2 callersFunctionEptPageHook
This function allocates a buffer in VMX Non Root Mode and then invokes a VMCALL (VMCALL_EXEC_HOOK_PAGE) To set the hook */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Ept.c:623
↓ 2 callersFunctionEptPerformPageHook
This function returns false in VMX Non-Root Mode if the VM is already initialized This function have to be called through a VMCALL in VMX Root Mod
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:641
↓ 2 callersFunctionEptVmxRootModePageHook
This function returns false in VMX Non-Root Mode if the VM is already initialized This function have to be called through a VMCALL (VMCALL_EXEC_HO
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Ept.c:540
↓ 2 callersFunctionHvSetMonitorTrapFlag
Set the monitor trap flag */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/HypervisorRoutines.c:522
↓ 2 callersFunctionInvept
Invoke the Invept instruction */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Invept.c:5
↓ 2 callersFunctionInvept
Invoke the Invept instruction */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Invept.c:5
↓ 2 callersFunctionInveptAllContexts
Invalidates all contexts in ept cache table */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Invept.c:26
↓ 2 callersFunctionInveptSingleContext
Invalidates a single context in ept cache table */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Invept.c:17
↓ 2 callersFunctionInveptWrapper
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/EPT.c:162
↓ 2 callersFunctionInveptWrapper
Part 4 - Address Translation Using Extended Page Table (EPT)/MyHypervisorDriver/MyHypervisorDriver/EPT.c:155
↓ 2 callersFunctionInveptWrapper
Part 5 - Setting up VMCS & Running Guest Code/MyHypervisorDriver/MyHypervisorDriver/EPT.c:161
↓ 2 callersFunctionLogCheckForNewMessage
return of this function shows whether the read was successfull or not (e.g FALSE shows there's no new buffer available.)*/
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Logging.c:264
↓ 2 callersFunctionLogSendBuffer
Save buffer to the pool */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Logging.c:72
↓ 2 callersFunctionPhysicalToVirtualAddress
Part 3 - Setting up Our First Virtual Machine/MyHypervisorDriver/MyHypervisorDriver/Memory.c:13
↓ 2 callersFunctionPhysicalToVirtualAddress
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/Memory.c:14
↓ 2 callersFunctionPhysicalToVirtualAddress
Part 4 - Address Translation Using Extended Page Table (EPT)/MyHypervisorDriver/MyHypervisorDriver/Memory.c:13
↓ 2 callersFunctionPhysicalToVirtualAddress
Part 5 - Setting up VMCS & Running Guest Code/MyHypervisorDriver/MyHypervisorDriver/Memory.c:14
↓ 2 callersFunctionPoolManagerCheckAndPerformAllocation
This function performs allocations from VMX non-root based on RequestNewAllocation */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/PoolManager.c:160
↓ 2 callersFunctionVirtualToPhysicalAddress
Part 3 - Setting up Our First Virtual Machine/MyHypervisorDriver/MyHypervisorDriver/Memory.c:7
↓ 1 callersFunctionAdjustCr0
* @brief Returns the CR0 value after the FIXED0 and FIXED1 MSR values are applied. * * @param Cr0 - The CR0 value to apply the FIXED0 and FIXED1 MSR
Part 5 - Setting up VMCS & Running Guest Code/VMCS-Checks/CheckGuestVmcsFieldsForVmEntry.c:103
↓ 1 callersFunctionAdjustCr4
* @brief Returns the CR4 value after the FIXED0 and FIXED1 MSR values are applied. * * @param Cr4 - The CR4 value to apply the FIXED0 and FIXED1 MSR
Part 5 - Setting up VMCS & Running Guest Code/VMCS-Checks/CheckGuestVmcsFieldsForVmEntry.c:160
↓ 1 callersFunctionAdjustGuestCr0
* @brief Returns the CR0 value after the FIXED0 and FIXED1 MSR values are applied * for the guest. * * @param Cr0 - The CR0 value to apply the
Part 5 - Setting up VMCS & Running Guest Code/VMCS-Checks/CheckGuestVmcsFieldsForVmEntry.c:126
↓ 1 callersFunctionAdjustGuestCr4
* @brief Returns the CR4 value after the FIXED0 and FIXED1 MSR values are applied * for the guest. * * @param Cr4 - The CR4 value to apply the
Part 5 - Setting up VMCS & Running Guest Code/VMCS-Checks/CheckGuestVmcsFieldsForVmEntry.c:183
↓ 1 callersFunctionAllocateMsrBitmap
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/Memory.c:168
↓ 1 callersFunctionAllocateVmcsRegion
Part 3 - Setting up Our First Virtual Machine/MyHypervisorDriver/MyHypervisorDriver/Memory.c:80
↓ 1 callersFunctionAllocateVmcsRegion
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/Memory.c:88
↓ 1 callersFunctionAllocateVmcsRegion
Part 4 - Address Translation Using Extended Page Table (EPT)/MyHypervisorDriver/MyHypervisorDriver/Memory.c:80
↓ 1 callersFunctionAllocateVmcsRegion
Part 5 - Setting up VMCS & Running Guest Code/MyHypervisorDriver/MyHypervisorDriver/Memory.c:86
↓ 1 callersFunctionAllocateVmmStack
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/Memory.c:147
↓ 1 callersFunctionAllocateVmxonRegion
Part 3 - Setting up Our First Virtual Machine/MyHypervisorDriver/MyHypervisorDriver/Memory.c:22
↓ 1 callersFunctionAllocateVmxonRegion
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/Memory.c:23
↓ 1 callersFunctionAllocateVmxonRegion
Part 4 - Address Translation Using Extended Page Table (EPT)/MyHypervisorDriver/MyHypervisorDriver/Memory.c:22
↓ 1 callersFunctionAllocateVmxonRegion
Part 5 - Setting up VMCS & Running Guest Code/MyHypervisorDriver/MyHypervisorDriver/Memory.c:23
↓ 1 callersFunctionClearVmcsState
Part 6 - Virtualizing An Already Running System/MyHypervisorDriver/MyHypervisorDriver/VMX.c:146
↓ 1 callersFunctionClearVmcsState
Part 5 - Setting up VMCS & Running Guest Code/MyHypervisorDriver/MyHypervisorDriver/VMX.c:171
↓ 1 callersFunctionEptAllocateAndCreateIdentityPageTable
Allocates page maps and create identity page table */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Ept.c:298
↓ 1 callersFunctionEptAllocateAndCreateIdentityPageTable
Allocates page maps and create identity page table */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:303
↓ 1 callersFunctionEptBuildMtrrMap
Build MTRR Map of current physical addresses */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Ept.c:42
↓ 1 callersFunctionEptBuildMtrrMap
Build MTRR Map of current physical addresses */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:53
↓ 1 callersFunctionEptCheckFeatures
Check whether EPT features are present or not */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Ept.c:11
↓ 1 callersFunctionEptCheckFeatures
Check whether EPT features are present or not */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:12
↓ 1 callersFunctionEptGetPml1Entry
Get the PML1 entry for this physical address if the page is split. Return NULL if the address is invalid or the page wasn't already split. */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:106
↓ 1 callersFunctionEptGetPml2Entry
Get the PML2 entry for this physical address. */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Ept.c:141
↓ 1 callersFunctionEptGetPml2Entry
Get the PML2 entry for this physical address. */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:151
↓ 1 callersFunctionEptHandleEptViolation
Handle VM exits for EPT violations. Violations are thrown whenever an operation is performed on an EPT entry that does not provide permissions to
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Ept.c:504
↓ 1 callersFunctionEptHandleEptViolation
Handle VM exits for EPT violations. Violations are thrown whenever an operation is performed on an EPT entry that does not provide permissions to
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:488
↓ 1 callersFunctionEptHandleHookedPage
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:596
↓ 1 callersFunctionEptHandleMisconfiguration
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Ept.c:527
↓ 1 callersFunctionEptHandleMisconfiguration
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:515
↓ 1 callersFunctionEptHandleMonitorTrapFlag
Handle vm-exits for Monitor Trap Flag to restore previous state */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:509
↓ 1 callersFunctionEptHandlePageHookExit
Check if this exit is due to a violation caused by a currently hooked page. Returns FALSE * if the violation was not due to a page hook. * * If
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Ept.c:443
↓ 1 callersFunctionEptHandlePageHookExit
Check if this exit is due to a violation caused by a currently hooked page. Returns FALSE * if the violation was not due to a page hook. * * If
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:441
↓ 1 callersFunctionEptHookInstructionMemory
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:543
↓ 1 callersFunctionEptLogicalProcessorInitialize
Initialize EPT for an individual logical processor. Creates an identity mapped page table and sets up an EPTP to be applied to the VMCS later. */
Part 7 - Using EPT & Page-level Monitoring Features/MyHypervisorDriver/MyHypervisorDriver/Ept.c:390
↓ 1 callersFunctionEptLogicalProcessorInitialize
Initialize EPT for an individual logical processor. Creates an identity mapped page table and sets up an EPTP to be applied to the VMCS later. */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:392
↓ 1 callersFunctionEptPageHook
This function allocates a buffer in VMX Non Root Mode and then invokes a VMCALL to set the hook */
Part 8 - How To Do Magic With Hypervisor!/Hypervisor From Scratch/MyHypervisorDriver/Ept.c:790
next →1–100 of 326, ranked by callers