информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Kik закрывается, все ушли на криптофронт 
 Sophos открывает Sandboxie 
 Большой вторник патчей от MS 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / site updates
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Я? Путаю? Да не может такого быть! :-) 20.08.09 13:22  Число просмотров: 1623
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
А если серьезно, я просто думал, что gdtr/idtr тоже содержат физические адреса. Ошибся, но нулевые адреса от этого не стали использоваться для чего то кроме отлова нулевых указателей.

> > Причем здесь GDT/IDT? Физические адреса несколько
> > отличаются от линейных, ага

> Естественно! Только не путай сегментацию со страничной
> организацей. У дескриптора страницы отсутствует поле
Выше

> Все сегменты в ядре NT имеют базу 0.
Не все :-P
Но не суть. Мы сейчас говорим именно о флетовых сегметах (да в общем о любых, которые позволяют обратиться к ЛИНЕЙНОМУ адресу 0).

> > > Очень похоже, что эти 64Кб отведены на поддержку
> схемы
> > > адерсации (каталог таблиц страниц, GDT системы и
> IDT)
Каталог страниц всю жизнь начинался с C0000000. Да и вообще крайне логично не держать в юзерских адресах вообще ничего критичного, а до ядерных адресов "не достают" юзерские селекторы.
Ну провел небольшой тест:
kd> dd nt!KiAbiosGdt l poi(nt!KeNumberProcessors)
80551ee0  8003f000

---

KiAbiosGdt - это такая табличка, в которой хранятся базовые адреса для gdt для всех процессоров.

Ну еще и такое писал:
int
main() {
	long gdt = 0, idt = 0;
	__asm {
		sgdt gdt
		sidt idt
	}
}

---
Тоже выдает старшие адреса

kd> !pte 0
               VA 00000000
PDE at 00000000C0600000    PTE at 00000000C0000000
contains 0000000002AB0067  contains 0000000000000000
pfn 2ab0 ---DA--UWEV

---
Нет там ничего. Для него даже PTE нет.

> > > никак не связаны с нулевым указателем.
Только с ним и связаны. Там вообще памяти нет.

> > Отлов разыменований нулпоинтеров - ЕДИНСТВЕННОЕ
> > предназначение той дырки в адресном пространстве.
>
> Для этого не обязательно отслеживать обращение к 16-ти
> страницам, достаточно только к одной - к первой страницы
> первого каталога.
А давно ли все структуры данных стали меньше 4к?
struct Data {
    int padding[10000];
    int field;
};

struct Data *data = (struct Data *)NULL;
data->field = 1;

---

Можно было бы и больше зарезервировать, но 64к кажется достаточно большим, чтобы отловить подавляющее большинство структур

> 64Кб как раз максимальный размер таблицы дескрипторов
> сегментов. Почти уверен, что место полностью отведено под
> IDT, хранящую дескрипторы шлюзов ловушек прерываний.
Зря уверен. Там нет памяти. Вообще. MEM_FREE. Np. Да и с чего бы хранить такую важную инфу в юзерском адресном пространстве?
<site updates> Поиск 








Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2019 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach