HyperDbg Debugger
|
Headers relating to Exception Bitmap and Event (Interrupt and Exception) Injection. More...
Go to the source code of this file.
Classes | |
union | _INTERRUPT_INFO |
Interrupt injection and event format. More... | |
struct | _EVENT_INFORMATION |
Event information. More... | |
Macros | |
#define | RESERVED_MSR_RANGE_LOW 0x40000000 |
Reserved MSR low range. | |
#define | RESERVED_MSR_RANGE_HI 0x4000109F |
Reserved MSR high range. | |
#define | EXCEPTION_BITMAP_MASK_ALL 0xffffffff |
Exception bitmap for masking all exceptions/faults/traps. | |
Typedefs | |
typedef enum _INTERRUPT_TYPE | INTERRUPT_TYPE |
Type of interrupts. | |
typedef union _INTERRUPT_INFO | INTERRUPT_INFO |
Interrupt injection and event format. | |
typedef union _INTERRUPT_INFO * | PINTERRUPT_INFO |
typedef struct _EVENT_INFORMATION | EVENT_INFORMATION |
Event information. | |
typedef struct _EVENT_INFORMATION * | PEVENT_INFORMATION |
Enumerations | |
enum | _INTERRUPT_TYPE { INTERRUPT_TYPE_EXTERNAL_INTERRUPT = 0 , INTERRUPT_TYPE_RESERVED = 1 , INTERRUPT_TYPE_NMI = 2 , INTERRUPT_TYPE_HARDWARE_EXCEPTION = 3 , INTERRUPT_TYPE_SOFTWARE_INTERRUPT = 4 , INTERRUPT_TYPE_PRIVILEGED_SOFTWARE_INTERRUPT = 5 , INTERRUPT_TYPE_SOFTWARE_EXCEPTION = 6 , INTERRUPT_TYPE_OTHER_EVENT = 7 } |
Type of interrupts. More... | |
Functions | |
VOID | EventInjectInterruptOrException (_In_ VMEXIT_INTERRUPT_INFORMATION InterruptExit) |
re-inject interrupt or exception to the guest | |
VOID | EventInjectPageFaults (_Inout_ VIRTUAL_MACHINE_STATE *VCpu, _In_ VMEXIT_INTERRUPT_INFORMATION InterruptExit, _In_ UINT64 PageFaultAddress, _In_ PAGE_FAULT_EXCEPTION PageFaultCode) |
inject #PFs to the guest | |
VOID | EventInjectBreakpoint () |
Inject #BP to the guest (Event Injection) | |
VOID | EventInjectInterruption (INTERRUPT_TYPE InterruptionType, EXCEPTION_VECTORS Vector, BOOLEAN DeliverErrorCode, UINT32 ErrorCode) |
Injects interruption to a guest. | |
VOID | EventInjectGeneralProtection () |
Inject #GP to the guest (Event Injection) | |
VOID | EventInjectUndefinedOpcode (VIRTUAL_MACHINE_STATE *VCpu) |
Inject #UD to the guest (Invalid Opcode - Undefined Opcode) | |
VOID | EventInjectNmi (VIRTUAL_MACHINE_STATE *VCpu) |
Inject NMI to the guest (Event Injection) | |
VOID | EventInjectPageFaultWithoutErrorCode (UINT64 PageFaultAddress) |
Inject #PF to the guest (Page-Fault for EFER Injector) | |
VOID | EventInjectDebugBreakpoint () |
Inject Debug Breakpoint Exception. | |
VOID | EventInjectPageFaultWithCr2 (VIRTUAL_MACHINE_STATE *VCpu, UINT64 Address, UINT32 PageFaultCode) |
Inject page-fault with an address as cr2. | |
VOID | EventInjectPageFaultRangeAddress (VIRTUAL_MACHINE_STATE *VCpu, UINT64 AddressFrom, UINT64 AddressTo, UINT32 PageFaultCode) |
Inject a range of page-faults. | |
Headers relating to Exception Bitmap and Event (Interrupt and Exception) Injection.
#define EXCEPTION_BITMAP_MASK_ALL 0xffffffff |
Exception bitmap for masking all exceptions/faults/traps.
#define RESERVED_MSR_RANGE_HI 0x4000109F |
Reserved MSR high range.
#define RESERVED_MSR_RANGE_LOW 0x40000000 |
Reserved MSR low range.
typedef struct _EVENT_INFORMATION EVENT_INFORMATION |
Event information.
typedef union _INTERRUPT_INFO INTERRUPT_INFO |
Interrupt injection and event format.
typedef enum _INTERRUPT_TYPE INTERRUPT_TYPE |
Type of interrupts.
typedef struct _EVENT_INFORMATION * PEVENT_INFORMATION |
typedef union _INTERRUPT_INFO * PINTERRUPT_INFO |
enum _INTERRUPT_TYPE |
Type of interrupts.
VOID EventInjectBreakpoint | ( | ) |
Inject #BP to the guest (Event Injection)
VOID EventInjectDebugBreakpoint | ( | ) |
Inject Debug Breakpoint Exception.
VOID EventInjectGeneralProtection | ( | ) |
Inject #GP to the guest (Event Injection)
VOID EventInjectInterruption | ( | INTERRUPT_TYPE | InterruptionType, |
EXCEPTION_VECTORS | Vector, | ||
BOOLEAN | DeliverErrorCode, | ||
UINT32 | ErrorCode ) |
Injects interruption to a guest.
InterruptionType | Type of interrupt |
Vector | Vector Number of Interrupt (IDT Index) |
DeliverErrorCode | Deliver Error Code or Not |
ErrorCode | Error Code (If DeliverErrorCode is true) |
VOID EventInjectInterruptOrException | ( | _In_ VMEXIT_INTERRUPT_INFORMATION | InterruptExit | ) |
re-inject interrupt or exception to the guest
InterruptExit | interrupt info from vm-exit |
VOID EventInjectNmi | ( | VIRTUAL_MACHINE_STATE * | VCpu | ) |
Inject NMI to the guest (Event Injection)
VCpu | The virtual processor's state |
VOID EventInjectPageFaultRangeAddress | ( | VIRTUAL_MACHINE_STATE * | VCpu, |
UINT64 | AddressFrom, | ||
UINT64 | AddressTo, | ||
UINT32 | PageFaultCode ) |
Inject a range of page-faults.
VCpu | The virtual processor's state |
AddressFrom | Page-fault address (from) |
AddressTo | Page-fault address (to) |
Address | Page-fault address |
PageFaultCode | Page-fault error code |
VOID EventInjectPageFaults | ( | _Inout_ VIRTUAL_MACHINE_STATE * | VCpu, |
_In_ VMEXIT_INTERRUPT_INFORMATION | InterruptExit, | ||
_In_ UINT64 | PageFaultAddress, | ||
_In_ PAGE_FAULT_EXCEPTION | PageFaultCode ) |
inject #PFs to the guest
VCpu | The virtual processor's state |
InterruptExit | interrupt info from vm-exit |
PageFaultAddress | Page-fault address to be placed to cr2 register |
PageFaultCode | Page-fault error code |
VOID EventInjectPageFaultWithCr2 | ( | VIRTUAL_MACHINE_STATE * | VCpu, |
UINT64 | Address, | ||
UINT32 | PageFaultCode ) |
Inject page-fault with an address as cr2.
VCpu | The virtual processor's state |
Address | Page-fault address |
PageFaultCode | Page-fault error code |
Inject #PF to the guest (Page-Fault for EFER Injector)
PageFaultAddress | Address of page fault |
VOID EventInjectUndefinedOpcode | ( | VIRTUAL_MACHINE_STATE * | VCpu | ) |
Inject #UD to the guest (Invalid Opcode - Undefined Opcode)
VCpu | The virtual processor's state |