Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.46.18] |
|
Сообщ.
#1
,
|
|
|
Как найти LDT в Win2000?
sldt ax - в ax нуль. Почему? |
Сообщ.
#2
,
|
|
|
Потому что LDT в NT/2000/XP вообще нет!
В NT/2000/XP LDT для новой задачи в отличие от Win9x не создается, поэтому sldt ax будет давать всегда в результате AX=0. Не парься, таким макаром ты в Ring0 в NT не влезешь. Кроме написания драйвера я других возможностей не знаю. |
Сообщ.
#3
,
|
|
|
2 rivitna:
У меня есть вопрос. Как же обходится XP,2000 без LDT ? (просто в книге написано, что задачи которые используют GDT работают в нулевом кольце, но не работают же все приложения в этих осях в этом кольце... это же неразумно :-/). Вот я тут чиал ещё книгу (Фроловы однако умные ребята :)): <br>Дело в том, что 32-разрядная операционная система Windows NT создает для каждого 32-разрядного приложения отдельную локальную таблицу дескрипторов LDT и, следовательно, отдельное адресное пространство. Поэтому никакое приложение ни при каких обстоятельствах не может иметь доступа к адресному пространству другого приложения. <br> |
Сообщ.
#4
,
|
|
|
По моему Ilyia прав. Не могут все задачи использовать GDT.
Я просмотрел размер своей GDT. Она занимает 1024. Это 128 дескрипора. Если посмотреть диспечер задач, то там занято 3401 дескрипора (на этот момет). Можно, конечно, не верить винде. Но все равно чувствуется, что не может быть всего 128 дескрипора. Хорошо, допустим, rivanta, ты прав. Как написать драйвер? |
Сообщ.
#5
,
|
|
|
Дык.... LDT-то и не нужен. Все сегментные регистры и их дескрипторы одинаковые, меняется только таблица страниц. Это в 32-битных виндовых прогах. В 16-битных, по-видимому, нужен. (Это насколько я себе представляю.)
А если интересно насчёт перехода в ноль, читай на http://z0mbie.host.sk/ 4 статьи "Война в Ring0". Там и про НТ и 2000, в частности, есть. |
Сообщ.
#6
,
|
|
|
2 Ilyia:
Цитата Вот я тут чиал ещё книгу (Фроловы однако умные ребята ): Дело в том, что 32-разрядная операционная система Windows NT создает для каждого 32-разрядного приложения отдельную локальную таблицу дескрипторов LDT и, следовательно, отдельное адресное пространство. Поэтому никакое приложение ни при каких обстоятельствах не может иметь доступа к адресному пространству другого приложения. Я заочно знаком с этими умными ребятами, по крайней мере, вместе ТЗ писали... И знаком с их методами работы... Не стоит на нее ссылаться, как на Библию по PM. Книжка хорошая, однако была написана в 1992 году, то есть на момент существования NT 3.51 и Windows 3.1... Видишь ли, Ilyia, команда "SLDT AX" - PL-независима, то есть должна выполняться для любого уровня привилегий, это дальше уже когда полезешь в GDT, получишь от NT исключение GP. Если AX=0, то железобетонно, что для пользовательского приложения LDT не создается. Да и в Win9x по большому счету она тоже не нужна, потому что чаще всего пуста. Далее... Не нужно много сегментов и соотвественно дескрипторов, потому что защита памяти в Win32 реализована по сегментно-страничному принципу, а не СЕГМЕНТНОМ!!! Подозреваю, что про это говорил Kernel Panic. 2 Bardn: Боюсь объема форума не хватит для рассказа про написание драйвера, пользуй DDK и примеры оттуда. Проще писать в NuMega DriverStudio. 2 Kernel Panic: Плохому учишь!!! Не есть хорошо! (в данном форуме не приветствуется явно хакерская и вирусная информация - буду наказывать, на это есть соответствующие сайты) Да и боюсь, мало что полезного почерпает оттуда товарищ! |