MiDbgReadWriteEnclaveUnaligned
NTSTATUS __stdcall MiDbgReadWriteEnclaveUnaligned(
VOID *EnclaveAddress,
VOID *Buffer,
UINT64 AmountToMove,
UINT64 EnclaveIsSource){
int v4;
size_t v5;
__int64 v7;
char *v8;
NTSTATUS result;
NTSTATUS v10;
UINT64 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, BytesTransferred);
v10 = result;
if( result >= 0 )
{
if( v4 )
{
memmove(Buffer, (char *)&VirtualAddress + v7, v5);
}
else
{
memmove((char *)&VirtualAddress + v7, Buffer, v5);
return KeDebugWriteEnclaveMemory(v8, &VirtualAddress, 8ui64, BytesTransferred);
}
return v10;
}
return result;
}Referenced by:
MiDbgReadWriteEnclave