Initial commit

This commit is contained in:
Xoro-1337
2025-11-06 15:36:24 -05:00
parent a738b93280
commit b24c1ddcbc
45 changed files with 65790 additions and 0 deletions

155
xbdm/imp/xexhv.h Normal file
View File

@@ -0,0 +1,155 @@
/*++
Copyright (c) 2000-2005 Microsoft Corporation
Module Name:
xexhv.h
Abstract:
This module defines the structures of the Xenon Executable (XEX)
format that are used by the hypervisor.
--*/
#ifndef _XEXHV_H_
#define _XEXHV_H_
//
// Define the root security information of an executable image.
//
typedef struct _HV_IMAGE_INFO {
//
// The signature of this object.
//
UCHAR Signature[256];
//
// The size of this object.
//
ULONG InfoSize;
//
// Flags describing this image.
//
ULONG ImageFlags;
//
// Specifies the address at which this module is to be loaded.
//
ULONG LoadAddress;
//
// The hash of the image's first page descriptor.
//
UCHAR ImageHash[20];
//
// The number of import tables for this image.
//
ULONG ImportTableCount;
//
// The digest of the first import table.
//
UCHAR ImportDigest[20];
//
// Specifies the media identifier for this image. This must immediately
// follow the import/export information.
//
UCHAR MediaID[16];
//
// Specifies the key used to encrypt this image.
//
UCHAR ImageKey[16];
//
// The address of this image's export table, if any.
//
ULONG ExportTableAddress;
//
// The hash of the header information.
//
UCHAR HeaderHash[20];
//
// Game regions in which this image is allowed to run.
//
ULONG GameRegion;
} HV_IMAGE_INFO, *PHV_IMAGE_INFO;
#define XEX_SECURITY_FLAG_MFG_MODE 0x00000006
#define XEX_SECURITY_FLAG_MFG_UTIL 0x00000002 // runs in verified mfg mode
#define XEX_SECURITY_FLAG_MFG_SUPPORT 0x00000004 // runs in all mfg modes
#define XEX_SECURITY_FLAG_MFG_AWARE 0x00000006 // runs in all modes
#define XEX_SECURITY_FLAG_XGD2_MEDIA 0x00000008
#define XEX_SECURITY_FLAG_HV_PRIVS_MASK 0x000FFF00
#define XEX_SECURITY_FLAG_HV_PRIVS_SHIFT 8
#define XEX_SECURITY_FLAG_SMALL_PAGES 0x10000000
#define XEX_SECURITY_FLAG_NO_REGION 0x20000000
#define XEX_SECURITY_FLAG_REVOCABLE 0x40000000
#define XEX_SECURITY_FLAG_REQUIRE_COOKIE 0x80000000
#define XEX_HV_PRIVILEGE_CARDEA_KEY 0
#define XEX_HV_PRIVILEGE_XEIKA_KEY 1
#define XEX_HV_PRIVILEGE_TITLE_USER_MODE 2
#define XEX_HV_PRIVILEGE_SYSTEM_USER_MODE 3
#define XEX_HV_PRIVILEGE_ORANGE_0 4
#define XEX_HV_PRIVILEGE_ORANGE_1 5
#define XEX_HV_PRIVILEGE_ORANGE_2 6
//
// Define a page descriptor for image data.
//
typedef struct _HV_PAGE_INFO {
//
// Information describing the page range. The high 3 bits describe the
// page access policy, and the low 29 bits are the number of pages over
// which to apply it.
//
ULONG PageDescription;
//
// The digest of the next range's page descriptor plus the next range's
// data.
//
UCHAR DataDigest[20];
} HV_PAGE_INFO, *PHV_PAGE_INFO;
#define XEX_SECURITY_PAGE_COUNT_SHIFT 4
#define XEX_SECURITY_PAGE_PROTECT_MASK 0x0000000F
#define XEX_SECURITY_PAGE_ENCRYPT 0x00000008
#define XEX_SECURITY_PAGE_PROTECT 0x00000004
#define XEX_SECURITY_PAGE_NOEXECUTE 0x00000002
#define XEX_SECURITY_PAGE_NOWRITE 0x00000001
#define XEX_SECURITY_PAGE_CODE \
(XEX_SECURITY_PAGE_NOWRITE)
#define XEX_SECURITY_PAGE_READONLY \
(XEX_SECURITY_PAGE_NOEXECUTE | XEX_SECURITY_PAGE_NOWRITE)
#define XEX_SECURITY_PAGE_READWRITE \
(XEX_SECURITY_PAGE_NOEXECUTE)
//
// Define the header for image exports.
//
typedef struct _HV_IMAGE_EXPORT_TABLE {
ULONG Magic[3];
ULONG ModuleNumber[2];
ULONG Version[3];
ULONG ImageBaseAddress;
ULONG Count;
ULONG Base;
} HV_IMAGE_EXPORT_TABLE, *PHV_IMAGE_EXPORT_TABLE;
#define XEX_EXPORT_MAGIC_0 0x48000000
#define XEX_EXPORT_MAGIC_1 0x00485645
#define XEX_EXPORT_MAGIC_2 0x48000000
#endif // _XEXHV_H_