Bitdefender Hypervisor Memory Introspection
_WINDOWS_GUEST Struct Reference

Holds information about a Windows guest. More...

#include <winguest.h>

Data Fields

QWORD PsCreateSystemThread
 Guest virtual address of the PsCreateSystemThread kernel function. More...
 
QWORD ExAllocatePoolWithTag
 Guest virtual address of the ExAllocatePoolWithTag kernel function. More...
 
QWORD ExFreePoolWithTag
 Guest virtual address of the ExFreePoolWithTag kernel function. More...
 
QWORD SyscallAddress
 Guest virtual address of the SYSCALL/SYSENTER handler. More...
 
DWORD NtBuildNumberValue
 The value of the NtBuildNumber kernel variable. More...
 
QWORD KeServiceDescriptorTable
 Guest virtual address of the KeServiceDescriptorTable variable. More...
 
QWORD Ssdt
 Guest virtual address of the SSDT structure inside the kernel. More...
 
DWORD NumberOfServices
 The number of entries in the SSDT. More...
 
QWORD HalpInterruptControllerGva
 Guest virtual address of the HalpInterruptController (owned by hal.dll). More...
 
QWORD PropperSyscallGva
 Guest virtual address of the KiSystemServiceUser function. More...
 
PCHAR NtBuildLabString
 
PCHAR VersionString
 A NULL terminated string containing Windows version information. More...
 
PCHAR ServerVersionString
 A NULL terminated string containing Windows server version information. More...
 
WIN_PRODUCT_TYPE ProductType
 The product type. Obtained directly from the guest during initialization. More...
 
QWORD PsActiveProcessHead
 Guest virtual address of the PsActiveProcessHead kernel variable. More...
 
QWORD PsLoadedModuleList
 Guest virtual address of the PsLoadedModuleList kernel variable. More...
 
QWORD MmPfnDatabase
 Guest virtual address of the PFN data base. More...
 
QWORD ObpRootDirectoryObject
 Guest virtual address of the ObpRootDirectoryObject. More...
 
QWORD DriverDirectory
 Guest virtual address of the Driver namespace directory. More...
 
QWORD FileSystemDirectory
 Guest virtual address of the FileSystem namespace directory. More...
 
BYTEKernelBuffer
 A buffer containing the entire kernel image. More...
 
DWORD KernelBufferSize
 The size of the KernelBuffer. More...
 
DWORD RemainingSections
 The number of kernel sections not yet read into KernelBuffer. More...
 
LIST_HEAD InitSwapHandles
 A list of swap handles used to read KernelBuffer. More...
 
WIN_OPAQUE_FIELDS OsSpecificFields
 OS-dependent and specific information (variables, offsets, etc). More...
 

Detailed Description

Holds information about a Windows guest.

Definition at line 810 of file winguest.h.

Field Documentation

◆ DriverDirectory

QWORD _WINDOWS_GUEST::DriverDirectory

Guest virtual address of the Driver namespace directory.

Definition at line 839 of file winguest.h.

Referenced by IntWinObjCheckDrvDirSearchState(), and IntWinObjParseDriverDirectory().

◆ ExAllocatePoolWithTag

QWORD _WINDOWS_GUEST::ExAllocatePoolWithTag

Guest virtual address of the ExAllocatePoolWithTag kernel function.

Definition at line 813 of file winguest.h.

Referenced by IntWinAgentInject(), and IntWinGuestResolveImports().

◆ ExFreePoolWithTag

QWORD _WINDOWS_GUEST::ExFreePoolWithTag

Guest virtual address of the ExFreePoolWithTag kernel function.

Definition at line 814 of file winguest.h.

Referenced by IntWinAgentInject(), and IntWinGuestResolveImports().

◆ FileSystemDirectory

QWORD _WINDOWS_GUEST::FileSystemDirectory

Guest virtual address of the FileSystem namespace directory.

Definition at line 840 of file winguest.h.

Referenced by IntWinObjCheckDrvDirSearchState(), and IntWinObjParseDriverDirectory().

◆ HalpInterruptControllerGva

QWORD _WINDOWS_GUEST::HalpInterruptControllerGva

Guest virtual address of the HalpInterruptController (owned by hal.dll).

Definition at line 820 of file winguest.h.

◆ InitSwapHandles

LIST_HEAD _WINDOWS_GUEST::InitSwapHandles

A list of swap handles used to read KernelBuffer.

Definition at line 855 of file winguest.h.

Referenced by IntWinGuestCancelKernelRead(), IntWinGuestNew(), and IntWinGuestReadKernel().

◆ KernelBuffer

BYTE* _WINDOWS_GUEST::KernelBuffer

A buffer containing the entire kernel image.

It can be used instead of reading from the guest memory when values from non-writable parts of the kernel are needed. This boosts performance, as it can save us from quite a lot of GVA to GPA translations and GPA mappings inside the host. Because certain parts of the kernel may be swapped out, this buffer is filled using IntSwapMemRead, with IntWinGuestSectionInMemory as the swap in handler. This means that it is not necessarily read in a sequential manner. While RemainingSections is not 0, the buffer is not yet filled and no hooks are placed inside the guest. It is guaranteed that the buffer is fully read after IntWinGuestFinishInit is called.

Definition at line 851 of file winguest.h.

Referenced by IntAlertEptFillFromVictimZone(), IntDetSetHook(), IntExceptWinKernelGetOriginator(), IntPeFindKernelExport(), IntPtiMonitorAllPtWriteCandidates(), IntSlackAllocWindows(), IntSwapgsStartMitigation(), IntWinAgentFindSyscallLinkage(), IntWinApiFindFunctionRva(), IntWinGuestFindDriversNamespace(), IntWinGuestFindKernelObjectsInternal(), IntWinGuestReadKernel(), IntWinGuestSectionInMemory(), IntWinGuestUninit(), IntWinHalFindPerformanceCounterInternal(), IntWinInfHookGetEtwpDebuggerData(), and IntWinStackTraceGet64().

◆ KernelBufferSize

◆ KeServiceDescriptorTable

QWORD _WINDOWS_GUEST::KeServiceDescriptorTable

Guest virtual address of the KeServiceDescriptorTable variable.

Definition at line 817 of file winguest.h.

Referenced by IntExceptGetVictimEpt(), IntWinDrvHeadersInMemory(), and IntWinGuestResolveImports().

◆ MmPfnDatabase

QWORD _WINDOWS_GUEST::MmPfnDatabase

Guest virtual address of the PFN data base.

Definition at line 837 of file winguest.h.

Referenced by DbgDumpPfn(), IntWinGuestFindKernelObjectsInternal(), and IntWinPfnModifyRefCount().

◆ NtBuildLabString

PCHAR _WINDOWS_GUEST::NtBuildLabString

A NULL terminated string containing the NtBuildLab kernel variable.

Definition at line 823 of file winguest.h.

Referenced by IntWinGetVersionString(), IntWinGuestResolveImports(), and IntWinGuestUninit().

◆ NtBuildNumberValue

DWORD _WINDOWS_GUEST::NtBuildNumberValue

The value of the NtBuildNumber kernel variable.

Definition at line 816 of file winguest.h.

Referenced by IntGuestGetInfo(), IntWinGuestFinishInit(), and IntWinGuestResolveImports().

◆ NumberOfServices

DWORD _WINDOWS_GUEST::NumberOfServices

The number of entries in the SSDT.

Definition at line 819 of file winguest.h.

Referenced by IntDetSetHook(), IntExceptGetVictimEpt(), IntMtblCheckAccess(), and IntWinGuestResolveImports().

◆ ObpRootDirectoryObject

QWORD _WINDOWS_GUEST::ObpRootDirectoryObject

Guest virtual address of the ObpRootDirectoryObject.

Definition at line 838 of file winguest.h.

Referenced by IntWinGuestFindDriversNamespace(), IntWinObjFindRootDirectory(), and IntWinObjHandleRootDirTagInMemory().

◆ OsSpecificFields

WIN_OPAQUE_FIELDS _WINDOWS_GUEST::OsSpecificFields

OS-dependent and specific information (variables, offsets, etc).

Definition at line 857 of file winguest.h.

Referenced by IntWinAgentHandleDriverVmcall(), and IntWinProcMapEprocess().

◆ ProductType

WIN_PRODUCT_TYPE _WINDOWS_GUEST::ProductType

The product type. Obtained directly from the guest during initialization.

Definition at line 833 of file winguest.h.

Referenced by IntWinGetVersionString(), and IntWinGuestFinishInit().

◆ PropperSyscallGva

QWORD _WINDOWS_GUEST::PropperSyscallGva

Guest virtual address of the KiSystemServiceUser function.

Definition at line 821 of file winguest.h.

Referenced by IntWinAgentFindPropperSyscall().

◆ PsActiveProcessHead

QWORD _WINDOWS_GUEST::PsActiveProcessHead

Guest virtual address of the PsActiveProcessHead kernel variable.

Definition at line 835 of file winguest.h.

Referenced by IntWinGuestFindKernelObjects(), IntWinGuestFindKernelObjectsInternal(), and IntWinProcIterateGuestProcesses().

◆ PsCreateSystemThread

QWORD _WINDOWS_GUEST::PsCreateSystemThread

Guest virtual address of the PsCreateSystemThread kernel function.

Definition at line 812 of file winguest.h.

Referenced by IntWinAgentInject(), and IntWinGuestResolveImports().

◆ PsLoadedModuleList

QWORD _WINDOWS_GUEST::PsLoadedModuleList

Guest virtual address of the PsLoadedModuleList kernel variable.

Definition at line 836 of file winguest.h.

Referenced by DbgDumpGuestModules(), IntWinDrvIterateLoadedModules(), and IntWinGuestFindKernelObjectsInternal().

◆ RemainingSections

DWORD _WINDOWS_GUEST::RemainingSections

The number of kernel sections not yet read into KernelBuffer.

Definition at line 854 of file winguest.h.

Referenced by IntThrSafeCheckThreads(), IntWinAgentFindSyscallLinkage(), IntWinGuestReadKernel(), and IntWinGuestSectionInMemory().

◆ ServerVersionString

PCHAR _WINDOWS_GUEST::ServerVersionString

A NULL terminated string containing Windows server version information.

This is obtained from a CAMI file and is set by IntCamiLoadWindows.

Definition at line 831 of file winguest.h.

Referenced by IntCamiLoadWindows(), IntWinGetVersionString(), and IntWinGuestUninit().

◆ Ssdt

QWORD _WINDOWS_GUEST::Ssdt

Guest virtual address of the SSDT structure inside the kernel.

Definition at line 818 of file winguest.h.

Referenced by IntDetSetHook(), IntExceptGetVictimEpt(), IntMtblCheckAccess(), and IntWinGuestResolveImports().

◆ SyscallAddress

QWORD _WINDOWS_GUEST::SyscallAddress

Guest virtual address of the SYSCALL/SYSENTER handler.

Definition at line 815 of file winguest.h.

Referenced by IntWinAgentFindInstruction(), and IntWinGuestNew().

◆ VersionString

PCHAR _WINDOWS_GUEST::VersionString

A NULL terminated string containing Windows version information.

This is obtained from a CAMI file and is set by IntCamiLoadWindows.

Definition at line 827 of file winguest.h.

Referenced by IntCamiLoadWindows(), IntWinGetVersionString(), and IntWinGuestUninit().


The documentation for this struct was generated from the following file: