cheat-engine/DBVM UEFI/helpers.h
2021-08-02 14:05:04 +02:00

151 lines
3.5 KiB
C

/*
* helpers.h
*
* Created on: Nov 11, 2017
* Author: eric
*/
#ifndef HELPERS_H_
#define HELPERS_H_
extern EFI_SYSTEM_TABLE *st;
#pragma pack(2) //alignment of 2 bytes
typedef struct tagGDT
{
UINT16 wLimit;
UINT64 vector;
} GDT, *PGDT;
#pragma pack()
#pragma pack(1) //alignment of 1 byte
typedef struct tagINT_VECTOR
{
UINT16 wLowOffset;
UINT16 wSelector;
UINT8 bUnused;
UINT8 bAccessFlags;
/*
unsigned gatetype : 3; //101=Task, 110=interrupt, 111=trap
unsigned gatesize : 1; //1=32bit, 0=16bit
unsigned zero : 1;
unsigned DPL : 2;
unsigned P : 1;
*/
UINT16 wHighOffset;
UINT32 TopOffset;
UINT32 Reserved;
} INT_VECTOR, *PINT_VECTOR;
#pragma pack()
#pragma pack(2) //allignemnt of 2 byte
typedef struct tagIDT
{
UINT16 wLimit;
PINT_VECTOR vector;
} IDT, *PIDT;
#pragma pack()
typedef struct
{
unsigned CF :1; // 0
unsigned reserved1 :1; // 1
unsigned PF :1; // 2
unsigned reserved2 :1; // 3
unsigned AF :1; // 4
unsigned reserved3 :1; // 5
unsigned ZF :1; // 6
unsigned SF :1; // 7
unsigned TF :1; // 8
unsigned IF :1; // 9
unsigned DF :1; // 10
unsigned OF :1; // 11
unsigned IOPL :2; // 12+13
unsigned NT :1; // 14
unsigned reserved4 :1; // 15
unsigned RF :1; // 16
unsigned VM :1; // 17
unsigned AC :1; // 18
unsigned VIF :1; // 19
unsigned VIP :1; // 20
unsigned ID :1; // 21
unsigned reserved5 :10; // 22-31
unsigned reserved6 :8;
unsigned reserved7 :8;
unsigned reserved8 :8;
unsigned reserved9 :8;
} EFLAGS,*PEFLAGS;
extern int testfunction(void);
extern int brk(void);
extern unsigned long long readMSR(int msr);
extern void writeMSR(int msr, unsigned long long value);
VOID *AllocatePersistentMemory(int size);
VOID *FreePersistentMemory(void *memory, int size);
EFI_STATUS AllocatePages(IN EFI_ALLOCATE_TYPE Type, IN EFI_MEMORY_TYPE MemoryType, IN UINTN NoPages, OUT EFI_PHYSICAL_ADDRESS *Memory );
extern void setCR0(UINT64 newcr0);
extern UINT64 getCR0(void);
extern UINT64 getCR2(void);
extern UINT64 getCR3(void);
extern UINT64 getCR4(void);
extern UINT16 getSS(void);
extern UINT16 getCS(void);
extern UINT16 getDS(void);
extern UINT16 getES(void);
extern UINT16 getFS(void);
extern UINT16 getGS(void);
extern UINT16 getGDT(PGDT gdt);
extern UINT16 getIDT(PIDT idt);
extern UINT16 getLDT(void);
extern UINT16 getTR(void);
extern UINT64 getDR0(void);
extern UINT64 getDR1(void);
extern UINT64 getDR2(void);
extern UINT64 getDR3(void);
extern UINT64 getDR6(void);
extern UINT64 getDR7(void);
extern EFLAGS getEflags(void);
extern UINT64 getRSP(void);
extern UINT64 getRBP(void);
extern UINT64 getRAX(void);
extern UINT64 getRBX(void);
extern UINT64 getRCX(void);
extern UINT64 getRDX(void);
extern UINT64 getRSI(void);
extern UINT64 getRDI(void);
extern UINT64 getR8(void);
extern UINT64 getR9(void);
extern UINT64 getR10(void);
extern UINT64 getR11(void);
extern UINT64 getR12(void);
extern UINT64 getR13(void);
extern UINT64 getR14(void);
extern UINT64 getR15(void);
extern UINT64 getAccessRights(UINT64 segment);
extern UINT64 getSegmentLimit(UINT64 segment);
extern void disableInterrupts(void);
extern void enableInterrupts(void);
extern UINT64 dovmcall(void *vmcallinfo, unsigned int level1pass);
extern void dovmcall2(void *vmcallinfo, unsigned int level1pass, UINT64 *r1, UINT64 *r2);
extern UINT64 getTSC(void);
extern void timeCheck(UINT64 *arr);
extern UINTN cpucount;
#endif /* HELPERS_H_ */