mirror of
https://github.com/HyperDbg/HyperDbg.git
synced 2026-07-19 14:04:38 +00:00
95 lines
1.7 KiB
C
95 lines
1.7 KiB
C
/**
|
|
* @file PlatformIntrinsicsVmx.h
|
|
* @author Sina Karvandi (sina@hyperdbg.org)
|
|
* @brief Cross platform APIs for intrinsic functions (VMX instructions)
|
|
* @details
|
|
* @version 0.19
|
|
* @date 2026-04-27
|
|
*
|
|
* @copyright This project is released under the GNU Public License v3.
|
|
*
|
|
*/
|
|
#pragma once
|
|
|
|
#if defined(__linux__)
|
|
# include "../../../../include/SDK/HyperDbgSdk.h"
|
|
#endif // defined(__linux__)
|
|
|
|
//////////////////////////////////////////////////
|
|
// VMX Instructions //
|
|
//////////////////////////////////////////////////
|
|
|
|
//
|
|
// VMPTRST
|
|
//
|
|
extern inline VOID
|
|
VmxVmptrst(UINT64 * VmcsPhysicalAddress);
|
|
|
|
//
|
|
// VMPTRLD
|
|
//
|
|
extern inline UCHAR
|
|
VmxVmptrld(UINT64 * VmcsPhysicalAddress);
|
|
|
|
//
|
|
// VMCLEAR
|
|
//
|
|
extern inline UCHAR
|
|
VmxVmclear(UINT64 * VmcsPhysicalAddress);
|
|
|
|
//
|
|
// VMXON
|
|
//
|
|
extern inline UCHAR
|
|
VmxVmxon(UINT64 * VmxonRegionPhysicalAddress);
|
|
|
|
//
|
|
// VMLAUNCH
|
|
//
|
|
extern inline VOID
|
|
VmxVmlaunch(VOID);
|
|
|
|
//
|
|
// VMRESUME
|
|
//
|
|
extern inline VOID
|
|
VmxVmresume(VOID);
|
|
|
|
//
|
|
// VMXOFF
|
|
//
|
|
extern inline VOID
|
|
VmxVmxoff(VOID);
|
|
|
|
//
|
|
// VMREAD
|
|
//
|
|
extern inline UCHAR
|
|
VmxVmread64(size_t Field, UINT64 FieldValue);
|
|
|
|
extern inline UCHAR
|
|
VmxVmread32(size_t Field, UINT32 FieldValue);
|
|
|
|
extern inline UCHAR
|
|
VmxVmread16(size_t Field, UINT16 FieldValue);
|
|
|
|
extern inline UCHAR
|
|
VmxVmread64P(size_t Field, UINT64 * FieldValue);
|
|
|
|
extern inline UCHAR
|
|
VmxVmread32P(size_t Field, UINT32 * FieldValue);
|
|
|
|
extern inline UCHAR
|
|
VmxVmread16P(size_t Field, UINT16 * FieldValue);
|
|
|
|
//
|
|
// VMWRITE
|
|
//
|
|
extern inline UCHAR
|
|
VmxVmwrite64(size_t Field, UINT64 FieldValue);
|
|
|
|
extern inline UCHAR
|
|
VmxVmwrite32(size_t Field, UINT32 FieldValue);
|
|
|
|
extern inline UCHAR
|
|
VmxVmwrite16(size_t Field, UINT16 FieldValue);
|