diff --git a/SDK/C/TitanEngine.h b/SDK/C/TitanEngine.h index a67881b..18bc252 100644 --- a/SDK/C/TitanEngine.h +++ b/SDK/C/TitanEngine.h @@ -35,6 +35,9 @@ typedef struct DECLSPEC_ALIGN(16) _M128A #define UE_STRUCT_HOOK_ENTRY 11 #define UE_STRUCT_FILE_STATUS_INFO 12 #define UE_STRUCT_FILE_FIX_INFO 13 +#define UE_STRUCT_X87FPUREGISTER 14 +#define UE_STRUCT_X87FPU 15 +#define UE_STRUCT_TITAN_ENGINE_CONTEXT 16 #define UE_ACCESS_READ 0 #define UE_ACCESS_WRITE 1 @@ -326,71 +329,6 @@ typedef struct DECLSPEC_ALIGN(16) _M128A #define CONTEXT_EXTENDED_REGISTERS 0 #endif -typedef struct -{ - BYTE data[10]; - int st_value; - int tag; -} x87FPURegister_t; - -typedef struct -{ - WORD ControlWord; - WORD StatusWord; - WORD TagWord; - DWORD ErrorOffset; - DWORD ErrorSelector; - DWORD DataOffset; - DWORD DataSelector; - DWORD Cr0NpxState; -} x87FPU_t; - -typedef struct -{ - ULONG_PTR cax; - ULONG_PTR ccx; - ULONG_PTR cdx; - ULONG_PTR cbx; - ULONG_PTR csp; - ULONG_PTR cbp; - ULONG_PTR csi; - ULONG_PTR cdi; -#ifdef _WIN64 - ULONG_PTR r8; - ULONG_PTR r9; - ULONG_PTR r10; - ULONG_PTR r11; - ULONG_PTR r12; - ULONG_PTR r13; - ULONG_PTR r14; - ULONG_PTR r15; -#endif //_WIN64 - ULONG_PTR cip; - ULONG_PTR eflags; - unsigned short gs; - unsigned short fs; - unsigned short es; - unsigned short ds; - unsigned short cs; - unsigned short ss; - ULONG_PTR dr0; - ULONG_PTR dr1; - ULONG_PTR dr2; - ULONG_PTR dr3; - ULONG_PTR dr6; - ULONG_PTR dr7; - BYTE RegisterArea[80]; - x87FPU_t x87fpu; - DWORD MxCsr; -#ifdef _WIN64 - M128A XmmRegisters[16]; - BYTE YmmRegisters[32 * 16]; -#else // x86 - M128A XmmRegisters[8]; - BYTE YmmRegisters[32 * 8]; -#endif -} TITAN_ENGINE_CONTEXT_t; - typedef struct { DWORD PE32Offset; @@ -656,6 +594,71 @@ typedef struct DWORD OriginalCOMTableSize; } FILE_FIX_INFO, *PFILE_FIX_INFO; +typedef struct +{ + BYTE data[10]; + int st_value; + int tag; +} x87FPURegister_t; + +typedef struct +{ + WORD ControlWord; + WORD StatusWord; + WORD TagWord; + DWORD ErrorOffset; + DWORD ErrorSelector; + DWORD DataOffset; + DWORD DataSelector; + DWORD Cr0NpxState; +} x87FPU_t; + +typedef struct +{ + ULONG_PTR cax; + ULONG_PTR ccx; + ULONG_PTR cdx; + ULONG_PTR cbx; + ULONG_PTR csp; + ULONG_PTR cbp; + ULONG_PTR csi; + ULONG_PTR cdi; +#ifdef _WIN64 + ULONG_PTR r8; + ULONG_PTR r9; + ULONG_PTR r10; + ULONG_PTR r11; + ULONG_PTR r12; + ULONG_PTR r13; + ULONG_PTR r14; + ULONG_PTR r15; +#endif //_WIN64 + ULONG_PTR cip; + ULONG_PTR eflags; + unsigned short gs; + unsigned short fs; + unsigned short es; + unsigned short ds; + unsigned short cs; + unsigned short ss; + ULONG_PTR dr0; + ULONG_PTR dr1; + ULONG_PTR dr2; + ULONG_PTR dr3; + ULONG_PTR dr6; + ULONG_PTR dr7; + BYTE RegisterArea[80]; + x87FPU_t x87fpu; + DWORD MxCsr; +#ifdef _WIN64 + M128A XmmRegisters[16]; + BYTE YmmRegisters[32 * 16]; +#else // x86 + M128A XmmRegisters[8]; + BYTE YmmRegisters[32 * 8]; +#endif +} TITAN_ENGINE_CONTEXT_t; + #ifdef __cplusplus extern "C" { diff --git a/TitanEngine/TitanEngine.Engine.cpp b/TitanEngine/TitanEngine.Engine.cpp index 790c264..0272a9b 100644 --- a/TitanEngine/TitanEngine.Engine.cpp +++ b/TitanEngine/TitanEngine.Engine.cpp @@ -350,6 +350,12 @@ __declspec(dllexport) bool TITCALL EngineCheckStructAlignment(DWORD StructureTyp return (sizeof(FILE_STATUS_INFO) == StructureSize); case UE_STRUCT_FILE_FIX_INFO: return (sizeof(FILE_FIX_INFO) == StructureSize); + case UE_STRUCT_X87FPUREGISTER: + return (sizeof(x87FPURegister_t) == StructureSize); + case UE_STRUCT_X87FPU: + return (sizeof(x87FPU_t) == StructureSize); + case UE_STRUCT_TITAN_ENGINE_CONTEXT: + return (sizeof(TITAN_ENGINE_CONTEXT_t) == StructureSize); } return false; } diff --git a/TitanEngine/stdafx.h b/TitanEngine/stdafx.h index ddb238f..6423b24 100644 --- a/TitanEngine/stdafx.h +++ b/TitanEngine/stdafx.h @@ -85,6 +85,9 @@ #define UE_STRUCT_HOOK_ENTRY 11 #define UE_STRUCT_FILE_STATUS_INFO 12 #define UE_STRUCT_FILE_FIX_INFO 13 +#define UE_STRUCT_X87FPUREGISTER 14 +#define UE_STRUCT_X87FPU 15 +#define UE_STRUCT_TITAN_ENGINE_CONTEXT 16 #ifndef CONTEXT_EXTENDED_REGISTERS #define CONTEXT_EXTENDED_REGISTERS 0