HyperDbg Debugger
Toggle main menu visibility
Loading...
Searching...
No Matches
Events.h
Go to the documentation of this file.
1
12
#pragma once
13
15
// Definitions //
17
22
#ifndef RESERVED_MSR_RANGE_LOW
23
# define RESERVED_MSR_RANGE_LOW 0x40000000
24
#endif
// !RESERVED_MSR_RANGE_LOW
25
30
#ifndef RESERVED_MSR_RANGE_HI
31
# define RESERVED_MSR_RANGE_HI 0x4000109F
32
#endif
// !RESERVED_MSR_RANGE_HI
33
38
#define EXCEPTION_BITMAP_MASK_ALL 0xffffffff
39
41
// Enums //
43
48
typedef
enum
_INTERRUPT_TYPE
49
{
50
INTERRUPT_TYPE_EXTERNAL_INTERRUPT
= 0,
51
INTERRUPT_TYPE_RESERVED
= 1,
52
INTERRUPT_TYPE_NMI
= 2,
53
INTERRUPT_TYPE_HARDWARE_EXCEPTION
= 3,
54
INTERRUPT_TYPE_SOFTWARE_INTERRUPT
= 4,
55
INTERRUPT_TYPE_PRIVILEGED_SOFTWARE_INTERRUPT
= 5,
56
INTERRUPT_TYPE_SOFTWARE_EXCEPTION
= 6,
57
INTERRUPT_TYPE_OTHER_EVENT
= 7
58
}
INTERRUPT_TYPE
;
59
61
// Structures //
63
68
typedef
union
_INTERRUPT_INFO
69
{
70
struct
71
{
72
UINT32
Vector
: 8;
73
/* 0=Ext Int, 1=Rsvd, 2=NMI, 3=Exception, 4=Soft INT,
74
* 5=Priv Soft Trap, 6=Unpriv Soft Trap, 7=Other */
75
UINT32
InterruptType
: 3;
76
UINT32
DeliverCode
: 1;
/* 0=Do not deliver, 1=Deliver */
77
UINT32
Reserved
: 19;
78
UINT32
Valid
: 1;
/* 0=Not valid, 1=Valid. Must be checked first */
79
}
Fields
;
80
UINT32
Flags
;
81
}
INTERRUPT_INFO
, *
PINTERRUPT_INFO
;
82
87
typedef
struct
_EVENT_INFORMATION
88
{
89
INTERRUPT_INFO
InterruptInfo
;
90
UINT32
InstructionLength
;
91
UINT64
ErrorCode
;
92
}
EVENT_INFORMATION
, *
PEVENT_INFORMATION
;
93
95
// Functions //
97
98
VOID
99
EventInjectInterruptOrException
(_In_ VMEXIT_INTERRUPT_INFORMATION InterruptExit);
100
101
VOID
102
EventInjectPageFaults
(_Inout_
VIRTUAL_MACHINE_STATE
* VCpu,
103
_In_ VMEXIT_INTERRUPT_INFORMATION InterruptExit,
104
_In_ UINT64 PageFaultAddress,
105
_In_ PAGE_FAULT_EXCEPTION PageFaultCode);
106
107
VOID
108
EventInjectBreakpoint
();
109
110
VOID
111
EventInjectInterruption
(
INTERRUPT_TYPE
InterruptionType,
112
EXCEPTION_VECTORS
Vector,
113
BOOLEAN
DeliverErrorCode,
114
UINT32
ErrorCode);
115
116
VOID
117
EventInjectGeneralProtection
();
118
119
VOID
120
EventInjectUndefinedOpcode
(
VIRTUAL_MACHINE_STATE
* VCpu);
121
122
VOID
123
EventInjectNmi
(
VIRTUAL_MACHINE_STATE
* VCpu);
124
125
VOID
126
EventInjectPageFaultWithoutErrorCode
(UINT64 PageFaultAddress);
127
128
VOID
129
EventInjectDebugBreakpoint
();
130
131
VOID
132
EventInjectPageFaultWithCr2
(
VIRTUAL_MACHINE_STATE
* VCpu, UINT64 Address,
UINT32
PageFaultCode);
133
134
VOID
135
EventInjectPageFaultRangeAddress
(
VIRTUAL_MACHINE_STATE
* VCpu,
136
UINT64 AddressFrom,
137
UINT64 AddressTo,
138
UINT32
PageFaultCode);
BOOLEAN
UCHAR BOOLEAN
Definition
BasicTypes.h:35
UINT32
unsigned int UINT32
Definition
BasicTypes.h:54
EXCEPTION_VECTORS
enum _EXCEPTION_VECTORS EXCEPTION_VECTORS
Exceptions enum.
VIRTUAL_MACHINE_STATE
struct _VIRTUAL_MACHINE_STATE VIRTUAL_MACHINE_STATE
The status of each core after and before VMX.
EventInjectNmi
VOID EventInjectNmi(VIRTUAL_MACHINE_STATE *VCpu)
Inject NMI to the guest (Event Injection).
Definition
Events.c:96
EventInjectPageFaults
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
Definition
Events.c:192
EventInjectInterruptOrException
VOID EventInjectInterruptOrException(_In_ VMEXIT_INTERRUPT_INFORMATION InterruptExit)
re-inject interrupt or exception to the guest
Definition
Events.c:155
EventInjectUndefinedOpcode
VOID EventInjectUndefinedOpcode(VIRTUAL_MACHINE_STATE *VCpu)
Inject UD to the guest (Invalid Opcode - Undefined Opcode).
Definition
Events.c:79
EventInjectPageFaultWithoutErrorCode
VOID EventInjectPageFaultWithoutErrorCode(UINT64 PageFaultAddress)
Inject PF to the guest (Page-Fault for EFER Injector).
Definition
Events.c:124
EventInjectInterruption
VOID EventInjectInterruption(INTERRUPT_TYPE InterruptionType, EXCEPTION_VECTORS Vector, BOOLEAN DeliverErrorCode, UINT32 ErrorCode)
Injects interruption to a guest.
Definition
Events.c:24
EventInjectBreakpoint
VOID EventInjectBreakpoint()
Inject BP to the guest (Event Injection).
Definition
Events.c:46
EventInjectPageFaultRangeAddress
VOID EventInjectPageFaultRangeAddress(VIRTUAL_MACHINE_STATE *VCpu, UINT64 AddressFrom, UINT64 AddressTo, UINT32 PageFaultCode)
Inject a range of page-faults.
Definition
Events.c:237
INTERRUPT_INFO
union _INTERRUPT_INFO INTERRUPT_INFO
Interrupt injection and event format.
EventInjectDebugBreakpoint
VOID EventInjectDebugBreakpoint()
Inject Debug Breakpoint Exception.
Definition
Events.c:112
EVENT_INFORMATION
struct _EVENT_INFORMATION EVENT_INFORMATION
Event information.
PEVENT_INFORMATION
struct _EVENT_INFORMATION * PEVENT_INFORMATION
EventInjectGeneralProtection
VOID EventInjectGeneralProtection()
Inject GP to the guest (Event Injection).
Definition
Events.c:62
PINTERRUPT_INFO
union _INTERRUPT_INFO * PINTERRUPT_INFO
_INTERRUPT_TYPE
_INTERRUPT_TYPE
Type of interrupts.
Definition
Events.h:49
INTERRUPT_TYPE_HARDWARE_EXCEPTION
@ INTERRUPT_TYPE_HARDWARE_EXCEPTION
Definition
Events.h:53
INTERRUPT_TYPE_EXTERNAL_INTERRUPT
@ INTERRUPT_TYPE_EXTERNAL_INTERRUPT
Definition
Events.h:50
INTERRUPT_TYPE_PRIVILEGED_SOFTWARE_INTERRUPT
@ INTERRUPT_TYPE_PRIVILEGED_SOFTWARE_INTERRUPT
Definition
Events.h:55
INTERRUPT_TYPE_SOFTWARE_EXCEPTION
@ INTERRUPT_TYPE_SOFTWARE_EXCEPTION
Definition
Events.h:56
INTERRUPT_TYPE_RESERVED
@ INTERRUPT_TYPE_RESERVED
Definition
Events.h:51
INTERRUPT_TYPE_NMI
@ INTERRUPT_TYPE_NMI
Definition
Events.h:52
INTERRUPT_TYPE_SOFTWARE_INTERRUPT
@ INTERRUPT_TYPE_SOFTWARE_INTERRUPT
Definition
Events.h:54
INTERRUPT_TYPE_OTHER_EVENT
@ INTERRUPT_TYPE_OTHER_EVENT
Definition
Events.h:57
INTERRUPT_TYPE
enum _INTERRUPT_TYPE INTERRUPT_TYPE
Type of interrupts.
EventInjectPageFaultWithCr2
VOID EventInjectPageFaultWithCr2(VIRTUAL_MACHINE_STATE *VCpu, UINT64 Address, UINT32 PageFaultCode)
Inject page-fault with an address as cr2.
Definition
Events.c:281
_EVENT_INFORMATION
Event information.
Definition
Events.h:88
_EVENT_INFORMATION::InterruptInfo
INTERRUPT_INFO InterruptInfo
Definition
Events.h:89
_EVENT_INFORMATION::ErrorCode
UINT64 ErrorCode
Definition
Events.h:91
_EVENT_INFORMATION::InstructionLength
UINT32 InstructionLength
Definition
Events.h:90
_INTERRUPT_INFO
Interrupt injection and event format.
Definition
Events.h:69
_INTERRUPT_INFO::Fields
struct _INTERRUPT_INFO::@364260040131233062267073053063171213310371264062 Fields
_INTERRUPT_INFO::Reserved
UINT32 Reserved
Definition
Events.h:77
_INTERRUPT_INFO::Vector
UINT32 Vector
Definition
Events.h:72
_INTERRUPT_INFO::DeliverCode
UINT32 DeliverCode
Definition
Events.h:76
_INTERRUPT_INFO::Valid
UINT32 Valid
Definition
Events.h:78
_INTERRUPT_INFO::Flags
UINT32 Flags
Definition
Events.h:80
_INTERRUPT_INFO::InterruptType
UINT32 InterruptType
Definition
Events.h:75
hyperdbg
hyperhv
header
vmm
vmx
Events.h
Generated by
1.17.0