Try using MmCopyVirtualMemory
Works without disabling WP.
Requires a signed driver (Microsoft WHQL-signed or test-signed in Debug mode).
`
NTSTATUS WriteKernelMemory(PVOID TargetAddress, PVOID SourceAddress, SIZE_T Size) {
SIZE_T BytesWritten;
return MmCopyVirtualMemory(
PsGetCurrentProcess(), SourceAddress,
PsGetCurrentProcess(), TargetAddress,
Size, KernelMode, &BytesWritten
);
}
Thank you