Я пытаюсь прочитать данные ОЗУ из 0x00000001 и скопировать их в файл на жестком диске (просто учусь!), Поэтому я написал это, скомпилировал и запустил
#include <ntddk.h>
void DriverUnload(PDRIVER_OBJECT pDriverObject)
{
DbgPrint("Driver Unloaded!");
}
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
DWORD *pointer;
pointer = 0x00000001;
DriverObject->DriverUnload = DriverUnload;
DbgPrint("Driver Loaded!\n");
DbgPrint("Data at 0x00000000 is %x\n",*pointer);
return STATUS_SUCCESS;
}
так что я получил BSOD К счастью, я запускал это, используя мой Vmware :-)
я всегда думал, что только приложения не имеют прав на прямое чтение из памяти.
Теперь мой вопрос: драйвер использует прямой физический адрес или виртуальный адрес ???
я имею в виду, какой тип значения & указатель возвращает физический или виртуальный, как в случае программирования драйвера (Ring 1 или 2). Я знаю, что приложение Ring 3 вернет виртуальный адрес.
и да, я уже начал читать книги для водителей, просто хотел узнать быстрее.