OSDev

для всех
Текущее время: 29 апр 2024, 09:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Два вопроса
СообщениеДобавлено: 31 окт 2011, 18:27 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
1) Если система загрузилась с HDD\Floopy\CD, как определить номер этого устройства на шине ATA (Master\Slave и контроллер)?
2) По Long-mode:
Цитирую официальную документацию на AMD64.
Цитата:
Long mode allows an IRET to pop a null selector into SS from the stack under the following conditions:
• The target mode is 64-bit mode.
• The target CPL<3.

То есть загрузка нулевого селектора при возврате в 3е кольцо не работает. При этом загрузка любого НЕ нулевого селектора в SS у меня приводит к исключению #GP, в коде ошибки - этот самый селектор. Пробовал загружать селекторы дескрипторов данных и даже пустых дескрипторов и дескрипторов кода, все безрезультатно.
Какие значения для SS являются рабочими?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса
СообщениеДобавлено: 31 окт 2011, 19:09 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
1) Поищи на wasm.ru неоднократно обсуждалось.
а) EDD int 13h функция 48h.
б) сигнатурный поиск.
с) Детерминистически, адрес/путь прописан в загрузочной записи.
2) Возьми второй том от intel найди инструкцию iret и посмотри в каких случаях будет генерироваться #GP.


Последний раз редактировалось pavia 31 окт 2011, 19:31, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса
СообщениеДобавлено: 31 окт 2011, 19:11 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
1) сначала из dl берешь номер загрузочного диска BIOS, а потом с помощью информационных функций BIOS или какими-либо экспериментальными методами определяешь местоположение этого диска.
2) я не большой спец. по длинному режиму, но думаю, обычный селектор сегмента данных для чтения/записи с RPL=3 может использоваться в качестве значения SS.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса
СообщениеДобавлено: 31 окт 2011, 19:18 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
pavia, б и с (в?) не надежны. Можно давать команды устройству посредством BIOS, а затем анализировать регистры соответствующих контроллеров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса
СообщениеДобавлено: 31 окт 2011, 19:40 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
По чему не надёжно. Берём время из биоса записываем во второй сектор при помощи int. Ищем эту консонанту при помощи портов. Потом записываем новое время и повторный поиск тем самым мы удалили ложные срабатывания. Недостаток запись может быть не реализована.
по поводу анализа регистров ихмо это ещё более не надёжно.
Может тогда проще автоматический реверс биоса сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса
СообщениеДобавлено: 31 окт 2011, 19:56 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
По поводу диска - значит я правильно предполагал, чего-нибудь записать и считать. Спасибо.
По поводу SS - я пробовал юзать дескриптор данных. В LM в таковом можно менять только два бита - P и S (по крайней мере так написано в доках). DPL там вообще игнорируется, но я пробовал и его менять. И RPL селектора стека пробовал ставить в 3. Ничего не помогает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса
СообщениеДобавлено: 31 окт 2011, 20:12 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
pavia, я исключаю любой метод детекта, где нужно что-то писать, тем более многократно. Почему ненадежен анализ регистров, не понимаю - объясни.

Bargest, для номеров дисков 80h+ первоочередной способ детекта - это функция 48h.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса
СообщениеДобавлено: 31 окт 2011, 20:18 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
1) Анализ регистров после операции
2) Анализ регистров во время операции

В первом случае БИОС может восстановить состояние регистров на момент начало чтения, что ты будешь делать?
В первом и во втором случае откуда мы знаем что биос не задействует регистры других устройств?


Последний раз редактировалось pavia 31 окт 2011, 20:19, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса
СообщениеДобавлено: 31 окт 2011, 20:19 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
EDD же может не быть.
А если запись на диск не реализована - то диск меня не интересует.
Насчет категорического "нет" на запись - можно предварительно считать сектор, потом вернуть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Два вопроса
СообщениеДобавлено: 31 окт 2011, 20:40 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
При создании/разметке диска записываем уникальную сигнатуру.
Дальше при загрузке не составит труда загрузиться.
Из проблем вижу только одну - совпадение сигнатур. Когда она может быть? Только при копировании диска один к одному.
Но постойте. Копии идентичны можем загружаться с любой. Поэтому такое поведение можно записать как особенность загрузчика. Для CD копий подходит хорошо.
Смена мастер на слейв проходит не заметно. Копирования диска на другой диск и загрузка со второго будет работать, тоже на ура.
Основная проблема сделали копию что-то в ней поменяли. А сигнатуру не поменяли. Тут решаемо записью на диск.
Так как такое мало вероятно для CD и более вероятно для HDD.
Для флешек, так как их скорее всего будут копировать один в один, то нужно проверка через запись.

Всё надёжно.


Последний раз редактировалось pavia 31 окт 2011, 20:47, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB