Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

А я раньше думал, что всё понимаю...

5.9K
21 мая 2009 года
assign
60 / / 13.12.2005
Здравствуйте, товарищи!

Вот накарябал простой драйверок, чтобы уяснить некоторые подробности устройства ядра Windows XP.

Код:
#include <ntddk.h>

// Этот псевдодрайвер предназначен для исследования ядра Windows XP.
//
// Задача:
//
// 1. Извлечь содержимое регистра процессора CR3 (адрес каталога страниц).
//    
// 2. Выполнить п.1 для регистров GDTR и IDTR.
//
// 3. Показать результат в окне программы Debug View с помощью функции native API DbgPrint(PCH fmt, ...).
///////////////////////////////////////////////////////////////////////////////////


    typedef struct P48 {
        unsigned short limit;
        unsigned base;    
    } P48;



void OnUnload(IN PDRIVER_OBJECT DriverObject);


NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
    unsigned CR3_Value;
    P48 GDTR;
    P48 IDTR;
   
    DriverObject->DriverUnload = OnUnload;

    __asm{  

    ; получаем CR3
    mov    eax, cr3
    mov    dword ptr CR3_Value, eax
    ; Получаем GDTR
    sgdt   GDTR
    ; получаем IDTR
    sidt   IDTR

    }

    // показываем
    DbgPrint("CR3 = %08X\n", CR3_Value);
    DbgPrint("GDT base = %08X\n", GDTR.base);
    DbgPrint("IDT base = %08X\n", IDTR.base);

    return STATUS_SUCCESS;
}


void OnUnload(IN PDRIVER_OBJECT DriverObject)
{
    DbgPrint("Driver unloaded success...");
}


И что же я вижу?

Таблицы GDT и IDT находятся выше 0xF0000000. А я всегда думал, что регистры-указатели системных объектов, вроде Global descriptor table должны содержать физические адреса.
Ведь адрес 0xF0000000 явно виртуальный. У моего компьютера ведь памяти всего 768Мб.
260
21 мая 2009 года
Ramon
1.1K / / 16.08.2003
Откройте томик №3 Интеловского мануала и прочитайте раздел "Global and Local Descriptor Tables" например.
261
21 мая 2009 года
ahilles
1.5K / / 03.11.2005
Регистры IDTR и GDTR содержат виртуальные адреса. В третьем томике где-то в начале есть рисунок, на котором нарисована общая модель памяти процессора.
5.9K
23 мая 2009 года
assign
60 / / 13.12.2005
Ладно, щас скачаю мануал, буду курить.
Есть ещё вопросы. Если курение мануала не поможет - приду к вам.
6.0K
22 сентября 2009 года
spyrytus
51 / / 14.07.2006
Цитата: assign
Ладно, щас скачаю мануал, буду курить.


А где можно скачать данный мануал ? - киньте ссылочку пожалуйста ...

5.9K
23 сентября 2009 года
assign
60 / / 13.12.2005
Цитата: spyrytus
А где можно скачать данный мануал ? - киньте ссылочку пожалуйста ...



http://www.intel.com/products/processor/manuals/

6.0K
23 сентября 2009 года
spyrytus
51 / / 14.07.2006


Большое спасибо ...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог