В настоящее время я работаю над лекцией (и изучаю) о руткитах для Windows.Мне удалось подключить запись SSDT для NtWriteFile и отобразить простое сообщение на WinDbg, но теперь мне любопытно, каким будет лучший (и самый безопасный) способ изменения параметров перед передачей их исходной функции.В этом примере я пытаюсь изменить буфер, если он содержит «My String».Как я могу безопасно поменять содержимое буфера?
NTSTATUS ZwWriteFileHook(
IN HANDLE FileHandle,
IN HANDLE Event,
IN PIO_APC_ROUTINE ApcRoutine,
IN PVOID ApcContext,
IN PIO_STATUS_BLOCK IoStatusBlock,
IN PVOID Buffer,
IN ULONG Length,
IN PLARGE_INTEGER ByteOffset,
IN PULONG Key
)
{
...
if (!strncmp((PCHAR) Buffer, "My String", Length)) {
// Modify parameters here
}
ntStatus = ((PZwWriteFile) zwWriteFileOld)(FileHandle, Event,
ApcRoutine, ApcContext, IoStatusBlock, Buffer, Length, ByteOffset,
Key);
...
}
Спасибо.