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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
...И еще вопрос. 13.02.02 18:54  Число просмотров: 655
Автор: Chingachguk <Chingachguk> Статус: Member
Отредактировано 13.02.02 18:56  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
> Так на каком этапе проц генерит эксептион в примере
> mov eax, 0
> mov [eax], 1 <<< Тута.
> ?????

Вообще-то z0 все уже написал.
Просто хотел дополнить и спросить. Если посмотреть, как выполняется самая простая прога под вин, то вот что видать:

- код начинается ВСЕГДА с смещения 401000h.(возможно, это зависит от компилятора(я имею в виду +1000h));
- если выполнить инструкцию вида:

mov al,ds:[400000h] ; все работает OK

Но вот если выполнить эту:

mov al,ds:[400000h-1] ; То возникает исключение 0Eh - PageFault.

Итак, доступ куда нам дает селектор в ds. Смотрим:

ldt ds ; Выдать описалово на локальный дескриптор(в ds):

Sel ... Base Limit DPL Attr
0167 ... 0000 0000FFFF 3 P RW ED

Я полагаю, используется страничное преобразование линейного адреса.
В данном случае 400000h - это не минимальный физ. адрес, по которому можно читать/писать (это не так, ибо, например Base+Limit меньше+бит гранулярности вроде выставлен).
Пусть используются 4-х килобайтные страницы, тогда физический адрес формируется вроде так:

Биты 12-21 используются как индекс в таблице "базовых" физических адресов, оттуда берем базу, смещение берем(уже в ней) из битов 0-11, биты >=22 - индекс в каталоге страниц.

Я правильно понял ? Ж)
<programming> Поиск 






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


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