MiDbgReadWriteEnclaveUnaligned
INT64 __stdcall MiDbgReadWriteEnclaveUnaligned(
PVOID EnclaveAddress,
PVOID Buffer,
UINT64 AmountToMove,
UINT64 EnclaveIsSource){
int v4;
unsigned int v5;
__int64 v7;
char *v8;
INT64 result;
unsigned int v10;
__int64 BytesTransferred[5];
__int64 VirtualAddress;
VirtualAddress = 0i64;
BytesTransferred[0] = 0i64;
v4 = EnclaveIsSource;
v5 = AmountToMove;
v7 = (unsigned __int8)EnclaveAddress & 7;
v8 = (char *)EnclaveAddress - v7;
result = KeDebugReadEnclaveMemory((char *)EnclaveAddress - v7, &VirtualAddress, 8ui64, (UINT64 *)BytesTransferred);
v10 = result;
if( (int)result >= 0 )
{
if( v4 )
{
memmove((UINT8 *)Buffer, (UINT8 *)&VirtualAddress + v7, v5);
}
else
{
memmove((UINT8 *)&VirtualAddress + v7, (UINT8 *)Buffer, v5);
return(unsigned int)KeDebugWriteEnclaveMemory(v8, &VirtualAddress, 8ui64, (UINT64 *)BytesTransferred);
}
return v10;
}
return result;
}Referenced by:
MiDbgReadWriteEnclave