|
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 |