Я пытаюсь прочитать массив символов, а затем записать его в другой процесс в драйвере ядра. Для этого мне нужно скопировать массив char, который я прочитал из OtherProcess, и записать его в MyProcess. Проблема в том, что всякий раз, когда драйвер достигает RtlCopyMemory, он застревает и никогда не возвращается. Это также чертовски запаздывает из моего компьютера, пока он застрял.
unsigned char* tempBytes;
if (!NT_SUCCESS(KeReadProcessMemory(myProcess, (PVOID)ReadByteArrayRequest.Address, (PVOID)&tempBytes, ReadByteArrayRequest.bytes))) {
log("Could not read byte array at address: %i with %i bytes", ReadByteArrayRequest.Address, ReadByteArrayRequest.bytes);
return STATUS_NOT_FOUND;
}
ReadByteArrayRequest._return = (unsigned char*)ExAllocatePool(PagedPool, ReadByteArrayRequest.bytes); // alternative to malloc
RtlCopyMemory((void*)ReadByteArrayRequest._return, tempBytes, ReadByteArrayRequest.bytes); // driver gets stuck on this & lags out pc
if (!NT_SUCCESS(Write<KeReadByteArrayRequest>(myOtherProcess, READ_BYTE_ARRAY_REQUEST, ReadByteArrayRequest))) {
log("There was an error when sending response for ReadByteArrayRequest");
return STATUS_NOT_FOUND;
}
ExFreePool((PVOID)ReadByteArrayRequest._return); // we can't use free