|
libintrovirt v0.57.4
IntroVirt introspection library
|
Abstraction for the Windows NT kernel. More...
#include <NtKernel.hh>
Public Member Functions | |
| virtual const DBGKD_GET_VERSION64 & | KdVersionBlock () const =0 |
| Get the KdVersionBlock from the kernel. | |
| virtual const KDDEBUGGER_DATA64 & | KdDebuggerDataBlock () const =0 |
| Get the KdDebuggerDataBlock from the kernel. | |
| virtual const ServiceDescriptorTable & | KeServiceDescriptorTable () const =0 |
| Get the KeServiceDescriptorTable. | |
| virtual const ServiceDescriptorTable & | KeServiceDescriptorTableShadow () const =0 |
| Get the KeServiceDescriptorTableShadow. | |
| virtual bool | hasObHeaderCookie () const =0 |
| Check if the kernel has an ObHeaderCookieValue. | |
| virtual uint8_t | ObHeaderCookie () const =0 |
| Get the ObHeaderCookie if one exists. | |
| virtual const nt::NtBuildLab & | NtBuildLab () const =0 |
| Get the build label. | |
| virtual uint16_t | NtBuildNumber () const =0 |
| Get the build number. | |
| virtual uint16_t | MajorVersion () const =0 |
| Get the major version of the kernel. | |
| virtual uint16_t | MinorVersion () const =0 |
| Get the minor version of the kernel. | |
| virtual unsigned int | cpu_count () const =0 |
| Get the number of CPUs that Windows has configured. | |
| virtual guest_ptr< void > | symbol (const std::string &name) const =0 |
| Return true if the kernel is a 64-bit version. | |
| virtual const guest_ptr< void > & | ptr () const =0 |
| Get the base address of the kernel. | |
| virtual uint64_t | InvalidPteMask () const =0 |
| Get the value of the InvalidPteMask field from MI_SYSTEM_INFORMATION. | |
| virtual const TypeTable & | types () const =0 |
| Get the type table. | |
| virtual const pe::PE & | pe () const =0 |
| Get the PE (Portable Executable) image of the kernel. | |
| virtual std::shared_ptr< OBJECT_DIRECTORY > | RootDirectoryObject () const =0 |
| Get the PDB for the kernel image. | |
| virtual std::unique_ptr< HANDLE_TABLE > | CidTable ()=0 |
| Get the PspCidTable from the kernel. | |
| virtual std::unique_ptr< const HANDLE_TABLE > | CidTable () const =0 |
| Get the PspCidTable from the kernel. | |
| virtual std::vector< std::shared_ptr< const LDR_DATA_TABLE_ENTRY > > | PsLoadedModuleList () const =0 |
| Get the kernel's loaded module list. | |
| virtual std::string | get_device_drive_letter (const nt::DEVICE_OBJECT &device) const =0 |
| Get the drive letter associated with a device. | |
| virtual KPCR & | kpcr (const Vcpu &vcpu)=0 |
| Get the KPCR for the given vcpu. | |
| virtual const KPCR & | kpcr (const Vcpu &vcpu) const =0 |
| Get the KPCR that belongs to the given vcpu (const overload) | |
| virtual const WindowsGuest & | guest () const =0 |
| Get the guest the kernel is running on. | |
| virtual bool | x64 () const =0 |
| Check if the kernel is for x64. | |
| virtual const mspdb::PDB & | pdb () const =0 |
| Get the PDB file for this type container. | |
| virtual std::shared_ptr< THREAD > | thread (const guest_ptr< void > &ptr) const =0 |
| Get the THREAD at the given address. | |
| virtual std::shared_ptr< PROCESS > | process (const guest_ptr< void > &ptr) const =0 |
| Get the PROCESS at the given address. | |
| virtual std::string | profile_path () const =0 |
| Get the introvirt profile directory for this kernel. | |
| virtual | ~NtKernel ()=default |
Abstraction for the Windows NT kernel.
|
virtualdefault |
|
pure virtual |
Get the PspCidTable from the kernel.
The PspCidTable is a special HANDLE_TABLE, containing all of the PROCESS and THREAD objects.
| SymbolNotFoundException | If the PspCidTable symbol does not exist |
|
pure virtual |
Get the PspCidTable from the kernel.
The PspCidTable is a special HANDLE_TABLE, containing all of the PROCESS and THREAD objects.
| SymbolNotFoundException | If the PspCidTable symbol does not exist |
|
pure virtual |
Get the number of CPUs that Windows has configured.
|
pure virtual |
Get the drive letter associated with a device.
| device | The device to get a drive letter for |
|
pure virtual |
Get the guest the kernel is running on.
|
pure virtual |
Check if the kernel has an ObHeaderCookieValue.
|
pure virtual |
Get the value of the InvalidPteMask field from MI_SYSTEM_INFORMATION.
|
pure virtual |
Get the KdDebuggerDataBlock from the kernel.
This is a structure used by debuggers
|
pure virtual |
Get the KdVersionBlock from the kernel.
This is a structure used by debuggers
|
pure virtual |
Get the KeServiceDescriptorTable.
This is the first system call table in the kernel. It seems to only contain NT system call information.
|
pure virtual |
Get the KeServiceDescriptorTableShadow.
This is the second system call table in the kernel. It seems to contain NT + Win32k system call information.
|
pure virtual |
Get the major version of the kernel.
|
pure virtual |
Get the minor version of the kernel.
|
pure virtual |
Get the build label.
|
pure virtual |
Get the build number.
|
pure virtual |
Get the ObHeaderCookie if one exists.
|
pure virtual |
|
pure virtual |
Get the PE (Portable Executable) image of the kernel.
|
pure virtual |
Get the PROCESS at the given address.
| ptr | Guest address of the process object |
|
pure virtual |
Get the introvirt profile directory for this kernel.
|
pure virtual |
Get the kernel's loaded module list.
|
pure virtual |
Get the base address of the kernel.
|
pure virtual |
Get the PDB for the kernel image.
This is just a helper call to pe().pdb().
Get the RootDirectoryObject from the kernel
| SymbolNotFoundException | If the ObpRootDirectoryObject symbol does not exist |
|
pure virtual |
Return true if the kernel is a 64-bit version.
Look up a symbol by name and return its address
| name | The name of the symbol to retrieve |
| SymbolNotFoundException | If the symbol does not exist |
|
pure virtual |
Get the type table.
|
pure virtual |
Check if the kernel is for x64.