mirror of https://github.com/x64dbg/TitanEngine
las fpu changes
This commit is contained in:
parent
1ef361ba10
commit
650bb5a46b
|
|
@ -253,6 +253,51 @@
|
||||||
#define UE_SEG_DS 40
|
#define UE_SEG_DS 40
|
||||||
#define UE_SEG_CS 41
|
#define UE_SEG_CS 41
|
||||||
#define UE_SEG_SS 42
|
#define UE_SEG_SS 42
|
||||||
|
#define UE_x87_r0 43
|
||||||
|
#define UE_x87_r1 44
|
||||||
|
#define UE_x87_r2 45
|
||||||
|
#define UE_x87_r3 46
|
||||||
|
#define UE_x87_r4 47
|
||||||
|
#define UE_x87_r5 48
|
||||||
|
#define UE_x87_r6 49
|
||||||
|
#define UE_x87_r7 50
|
||||||
|
#define UE_X87_STATUSWORD 51
|
||||||
|
#define UE_X87_CONTROLWORD 52
|
||||||
|
#define UE_X87_TAGWORD 53
|
||||||
|
#define UE_MXCSR 54
|
||||||
|
#define UE_MMX0 55
|
||||||
|
#define UE_MMX1 56
|
||||||
|
#define UE_MMX2 57
|
||||||
|
#define UE_MMX3 58
|
||||||
|
#define UE_MMX4 59
|
||||||
|
#define UE_MMX5 60
|
||||||
|
#define UE_MMX6 61
|
||||||
|
#define UE_MMX7 62
|
||||||
|
#define UE_XMM0 63
|
||||||
|
#define UE_XMM1 64
|
||||||
|
#define UE_XMM2 65
|
||||||
|
#define UE_XMM3 66
|
||||||
|
#define UE_XMM4 67
|
||||||
|
#define UE_XMM5 68
|
||||||
|
#define UE_XMM6 69
|
||||||
|
#define UE_XMM7 70
|
||||||
|
#define UE_XMM8 71
|
||||||
|
#define UE_XMM9 72
|
||||||
|
#define UE_XMM10 73
|
||||||
|
#define UE_XMM11 74
|
||||||
|
#define UE_XMM12 75
|
||||||
|
#define UE_XMM13 76
|
||||||
|
#define UE_XMM14 77
|
||||||
|
#define UE_XMM15 78
|
||||||
|
#define UE_x87_ST0 79
|
||||||
|
#define UE_x87_ST1 80
|
||||||
|
#define UE_x87_ST2 81
|
||||||
|
#define UE_x87_ST3 82
|
||||||
|
#define UE_x87_ST4 83
|
||||||
|
#define UE_x87_ST5 84
|
||||||
|
#define UE_x87_ST6 85
|
||||||
|
#define UE_x87_ST7 86
|
||||||
|
|
||||||
|
|
||||||
#ifndef CONTEXT_EXTENDED_REGISTERS
|
#ifndef CONTEXT_EXTENDED_REGISTERS
|
||||||
#define CONTEXT_EXTENDED_REGISTERS 0
|
#define CONTEXT_EXTENDED_REGISTERS 0
|
||||||
|
|
|
||||||
|
|
@ -293,239 +293,254 @@ __declspec(dllexport) bool TITCALL GetFullContextDataEx(HANDLE hActiveThread, TI
|
||||||
__declspec(dllexport) ULONG_PTR TITCALL GetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister)
|
__declspec(dllexport) ULONG_PTR TITCALL GetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister)
|
||||||
{
|
{
|
||||||
ULONG_PTR retValue = 0;
|
ULONG_PTR retValue = 0;
|
||||||
CONTEXT DBGContext;
|
TITAN_ENGINE_CONTEXT_t titcontext;
|
||||||
memset(&DBGContext, 0, sizeof(CONTEXT));
|
|
||||||
|
|
||||||
DBGContext.ContextFlags = CONTEXT_ALL;
|
|
||||||
|
|
||||||
if(SuspendThread(hActiveThread) == (DWORD) - 1)
|
if(SuspendThread(hActiveThread) == (DWORD) - 1)
|
||||||
return retValue;
|
return false;
|
||||||
|
|
||||||
if(!GetThreadContext(hActiveThread, &DBGContext))
|
memset(&titcontext, 0, sizeof(titcontext));
|
||||||
|
|
||||||
|
if(! _GetFullContextDataEx(hActiveThread, & titcontext))
|
||||||
{
|
{
|
||||||
ResumeThread(hActiveThread);
|
ResumeThread(hActiveThread);
|
||||||
return retValue;
|
return false;
|
||||||
}
|
}
|
||||||
ResumeThread(hActiveThread);
|
ResumeThread(hActiveThread);
|
||||||
|
|
||||||
#ifdef _WIN64 //x64
|
#ifdef _WIN64 //x64
|
||||||
if(IndexOfRegister == UE_EAX)
|
if(IndexOfRegister == UE_EAX)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rax & 0xFFFFFFFF;
|
retValue = titcontext.cax & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_EBX)
|
else if(IndexOfRegister == UE_EBX)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rbx & 0xFFFFFFFF;
|
retValue = titcontext.cbx & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_ECX)
|
else if(IndexOfRegister == UE_ECX)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rcx & 0xFFFFFFFF;
|
retValue = titcontext.ccx & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_EDX)
|
else if(IndexOfRegister == UE_EDX)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rdx & 0xFFFFFFFF;
|
retValue = titcontext.cdx & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_EDI)
|
else if(IndexOfRegister == UE_EDI)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rdi & 0xFFFFFFFF;
|
retValue = titcontext.cdi & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_ESI)
|
else if(IndexOfRegister == UE_ESI)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rsi & 0xFFFFFFFF;
|
retValue = titcontext.csi & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_EBP)
|
else if(IndexOfRegister == UE_EBP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rbp & 0xFFFFFFFF;
|
retValue = titcontext.cbp & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_ESP)
|
else if(IndexOfRegister == UE_ESP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rsp & 0xFFFFFFFF;
|
retValue = titcontext.csp & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_EIP)
|
else if(IndexOfRegister == UE_EIP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rip & 0xFFFFFFFF;
|
retValue = titcontext.cip & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_EFLAGS)
|
else if(IndexOfRegister == UE_EFLAGS)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.EFlags & 0xFFFFFFFF;
|
retValue = titcontext.eflags & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_RAX)
|
else if(IndexOfRegister == UE_RAX)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rax;
|
retValue = titcontext.cax;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_RBX)
|
else if(IndexOfRegister == UE_RBX)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rbx;
|
retValue = titcontext.cbx;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_RCX)
|
else if(IndexOfRegister == UE_RCX)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rcx;
|
retValue = titcontext.ccx;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_RDX)
|
else if(IndexOfRegister == UE_RDX)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rdx;
|
retValue = titcontext.cdx;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_RDI)
|
else if(IndexOfRegister == UE_RDI)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rdi;
|
retValue = titcontext.cdi;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_RSI)
|
else if(IndexOfRegister == UE_RSI)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rsi;
|
retValue = titcontext.csi;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_RBP)
|
else if(IndexOfRegister == UE_RBP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rbp;
|
retValue = titcontext.cbp;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_RSP)
|
else if(IndexOfRegister == UE_RSP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rsp;
|
retValue = titcontext.csp;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_RIP)
|
else if(IndexOfRegister == UE_RIP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rip;
|
retValue = titcontext.cip;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_RFLAGS)
|
else if(IndexOfRegister == UE_RFLAGS)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.EFlags;
|
retValue = titcontext.eflags;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_R8)
|
else if(IndexOfRegister == UE_R8)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.R8;
|
retValue = titcontext.r8;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_R9)
|
else if(IndexOfRegister == UE_R9)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.R9;
|
retValue = titcontext.r9;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_R10)
|
else if(IndexOfRegister == UE_R10)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.R10;
|
retValue = titcontext.r10;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_R11)
|
else if(IndexOfRegister == UE_R11)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.R11;
|
retValue = titcontext.r11;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_R12)
|
else if(IndexOfRegister == UE_R12)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.R12;
|
retValue = titcontext.r12;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_R13)
|
else if(IndexOfRegister == UE_R13)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.R13;
|
retValue = titcontext.r13;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_R14)
|
else if(IndexOfRegister == UE_R14)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.R14;
|
retValue = titcontext.r14;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_R15)
|
else if(IndexOfRegister == UE_R15)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.R15;
|
retValue = titcontext.r15;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_CIP)
|
else if(IndexOfRegister == UE_CIP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rip;
|
retValue = titcontext.cip;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_CSP)
|
else if(IndexOfRegister == UE_CSP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Rsp;
|
retValue = titcontext.csp;
|
||||||
}
|
}
|
||||||
#else //x86
|
#else //x86
|
||||||
if(IndexOfRegister == UE_EAX)
|
if(IndexOfRegister == UE_EAX)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Eax;
|
retValue = titcontext.cax;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_EBX)
|
else if(IndexOfRegister == UE_EBX)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Ebx;
|
retValue = titcontext.cbx;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_ECX)
|
else if(IndexOfRegister == UE_ECX)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Ecx;
|
retValue = titcontext.ccx;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_EDX)
|
else if(IndexOfRegister == UE_EDX)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Edx;
|
retValue = titcontext.cdx;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_EDI)
|
else if(IndexOfRegister == UE_EDI)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Edi;
|
retValue = titcontext.cdi;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_ESI)
|
else if(IndexOfRegister == UE_ESI)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Esi;
|
retValue = titcontext.csi;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_EBP)
|
else if(IndexOfRegister == UE_EBP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Ebp;
|
retValue = titcontext.cbp;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_ESP)
|
else if(IndexOfRegister == UE_ESP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Esp;
|
retValue = titcontext.csp;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_EIP)
|
else if(IndexOfRegister == UE_EIP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Eip;
|
retValue = titcontext.cip;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_CIP)
|
else if(IndexOfRegister == UE_CIP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Eip;
|
retValue = titcontext.cip;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_CSP)
|
else if(IndexOfRegister == UE_CSP)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Esp;
|
retValue = titcontext.csp;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
else if(IndexOfRegister == UE_X87_STATUSWORD)
|
||||||
|
{
|
||||||
|
retValue = titcontext.x87fpu.StatusWord;
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_X87_CONTROLWORD)
|
||||||
|
{
|
||||||
|
retValue = titcontext.x87fpu.ControlWord;
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_X87_TAGWORD)
|
||||||
|
{
|
||||||
|
retValue = titcontext.x87fpu.TagWord;
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_MXCSR)
|
||||||
|
{
|
||||||
|
retValue = titcontext.MxCsr;
|
||||||
|
}
|
||||||
else if(IndexOfRegister == UE_EFLAGS)
|
else if(IndexOfRegister == UE_EFLAGS)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.EFlags;
|
retValue = titcontext.eflags;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_DR0)
|
else if(IndexOfRegister == UE_DR0)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Dr0;
|
retValue = titcontext.dr0;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_DR1)
|
else if(IndexOfRegister == UE_DR1)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Dr1;
|
retValue = titcontext.dr1;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_DR2)
|
else if(IndexOfRegister == UE_DR2)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Dr2;
|
retValue = titcontext.dr2;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_DR3)
|
else if(IndexOfRegister == UE_DR3)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Dr3;
|
retValue = titcontext.dr3;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_DR6)
|
else if(IndexOfRegister == UE_DR6)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Dr6;
|
retValue = titcontext.dr6;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_DR7)
|
else if(IndexOfRegister == UE_DR7)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.Dr7;
|
retValue = titcontext.dr7;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_SEG_GS)
|
else if(IndexOfRegister == UE_SEG_GS)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.SegGs;
|
retValue = titcontext.gs;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_SEG_FS)
|
else if(IndexOfRegister == UE_SEG_FS)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.SegFs;
|
retValue = titcontext.fs;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_SEG_ES)
|
else if(IndexOfRegister == UE_SEG_ES)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.SegEs;
|
retValue = titcontext.es;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_SEG_DS)
|
else if(IndexOfRegister == UE_SEG_DS)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.SegDs;
|
retValue = titcontext.ds;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_SEG_CS)
|
else if(IndexOfRegister == UE_SEG_CS)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.SegCs;
|
retValue = titcontext.cs;
|
||||||
}
|
}
|
||||||
else if(IndexOfRegister == UE_SEG_SS)
|
else if(IndexOfRegister == UE_SEG_SS)
|
||||||
{
|
{
|
||||||
retValue = DBGContext.SegSs;
|
retValue = titcontext.ss;
|
||||||
}
|
}
|
||||||
return retValue;
|
return retValue;
|
||||||
}
|
}
|
||||||
|
|
@ -715,6 +730,38 @@ __declspec(dllexport) bool TITCALL SetContextDataEx(HANDLE hActiveThread, DWORD
|
||||||
{
|
{
|
||||||
titcontext.csp = NewRegisterValue;
|
titcontext.csp = NewRegisterValue;
|
||||||
}
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM8)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[8]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM9)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[9]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM10)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[10]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM11)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[11]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM12)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[12]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM13)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[13]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM14)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[14]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM15)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[15]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
#else //x86
|
#else //x86
|
||||||
if(IndexOfRegister == UE_EAX)
|
if(IndexOfRegister == UE_EAX)
|
||||||
{
|
{
|
||||||
|
|
@ -813,6 +860,86 @@ __declspec(dllexport) bool TITCALL SetContextDataEx(HANDLE hActiveThread, DWORD
|
||||||
{
|
{
|
||||||
titcontext.ss = (unsigned short)NewRegisterValue;
|
titcontext.ss = (unsigned short)NewRegisterValue;
|
||||||
}
|
}
|
||||||
|
else if(IndexOfRegister == UE_X87_STATUSWORD)
|
||||||
|
{
|
||||||
|
titcontext.x87fpu.StatusWord = (unsigned short)NewRegisterValue;
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_X87_CONTROLWORD)
|
||||||
|
{
|
||||||
|
titcontext.x87fpu.ControlWord = (unsigned short)NewRegisterValue;
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_X87_TAGWORD)
|
||||||
|
{
|
||||||
|
titcontext.x87fpu.TagWord = (unsigned short)NewRegisterValue;
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_MXCSR)
|
||||||
|
{
|
||||||
|
titcontext.MxCsr = (unsigned short)NewRegisterValue;
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM0)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[0]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM1)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[1]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM2)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[2]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM3)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[3]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM4)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[4]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM5)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[5]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM6)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[6]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_XMM7)
|
||||||
|
{
|
||||||
|
memcpy(& (titcontext.XmmRegisters[7]), (void*) NewRegisterValue, 16);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_MMX0)
|
||||||
|
{
|
||||||
|
memcpy(&(titcontext.RegisterArea[0 * 10]), (void*) NewRegisterValue, 10);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_MMX1)
|
||||||
|
{
|
||||||
|
memcpy(&(titcontext.RegisterArea[1 * 10]), (void*) NewRegisterValue, 10);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_MMX2)
|
||||||
|
{
|
||||||
|
memcpy(&(titcontext.RegisterArea[2 * 10]), (void*) NewRegisterValue, 10);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_MMX3)
|
||||||
|
{
|
||||||
|
memcpy(&(titcontext.RegisterArea[3 * 10]), (void*) NewRegisterValue, 10);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_MMX4)
|
||||||
|
{
|
||||||
|
memcpy(&(titcontext.RegisterArea[4 * 10]), (void*) NewRegisterValue, 10);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_MMX5)
|
||||||
|
{
|
||||||
|
memcpy(&(titcontext.RegisterArea[5 * 10]), (void*) NewRegisterValue, 10);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_MMX6)
|
||||||
|
{
|
||||||
|
memcpy(&(titcontext.RegisterArea[0 * 10]), (void*) NewRegisterValue, 10);
|
||||||
|
}
|
||||||
|
else if(IndexOfRegister == UE_MMX7)
|
||||||
|
{
|
||||||
|
memcpy(&(titcontext.RegisterArea[0 * 10]), (void*) NewRegisterValue, 10);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ResumeThread(hActiveThread);
|
ResumeThread(hActiveThread);
|
||||||
|
|
|
||||||
|
|
@ -619,7 +619,6 @@ typedef struct
|
||||||
#define UE_SEG_DS 40
|
#define UE_SEG_DS 40
|
||||||
#define UE_SEG_CS 41
|
#define UE_SEG_CS 41
|
||||||
#define UE_SEG_SS 42
|
#define UE_SEG_SS 42
|
||||||
|
|
||||||
#define UE_x87_r0 43
|
#define UE_x87_r0 43
|
||||||
#define UE_x87_r1 44
|
#define UE_x87_r1 44
|
||||||
#define UE_x87_r2 45
|
#define UE_x87_r2 45
|
||||||
|
|
@ -628,6 +627,42 @@ typedef struct
|
||||||
#define UE_x87_r5 48
|
#define UE_x87_r5 48
|
||||||
#define UE_x87_r6 49
|
#define UE_x87_r6 49
|
||||||
#define UE_x87_r7 50
|
#define UE_x87_r7 50
|
||||||
|
#define UE_X87_STATUSWORD 51
|
||||||
|
#define UE_X87_CONTROLWORD 52
|
||||||
|
#define UE_X87_TAGWORD 53
|
||||||
|
#define UE_MXCSR 54
|
||||||
|
#define UE_MMX0 55
|
||||||
|
#define UE_MMX1 56
|
||||||
|
#define UE_MMX2 57
|
||||||
|
#define UE_MMX3 58
|
||||||
|
#define UE_MMX4 59
|
||||||
|
#define UE_MMX5 60
|
||||||
|
#define UE_MMX6 61
|
||||||
|
#define UE_MMX7 62
|
||||||
|
#define UE_XMM0 63
|
||||||
|
#define UE_XMM1 64
|
||||||
|
#define UE_XMM2 65
|
||||||
|
#define UE_XMM3 66
|
||||||
|
#define UE_XMM4 67
|
||||||
|
#define UE_XMM5 68
|
||||||
|
#define UE_XMM6 69
|
||||||
|
#define UE_XMM7 70
|
||||||
|
#define UE_XMM8 71
|
||||||
|
#define UE_XMM9 72
|
||||||
|
#define UE_XMM10 73
|
||||||
|
#define UE_XMM11 74
|
||||||
|
#define UE_XMM12 75
|
||||||
|
#define UE_XMM13 76
|
||||||
|
#define UE_XMM14 77
|
||||||
|
#define UE_XMM15 78
|
||||||
|
#define UE_x87_ST0 79
|
||||||
|
#define UE_x87_ST1 80
|
||||||
|
#define UE_x87_ST2 81
|
||||||
|
#define UE_x87_ST3 82
|
||||||
|
#define UE_x87_ST4 83
|
||||||
|
#define UE_x87_ST5 84
|
||||||
|
#define UE_x87_ST6 85
|
||||||
|
#define UE_x87_ST7 86
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue