Вопрос № 24211: Меня зовут Артём.
Помогите мне плиз. Научите , опишите мне на asme , как работать с BIOS. И вообще реально ли писать
в BIOS программным способом.
Я знаю , что настройки BIOS хранятся в CMOS. Можно ли изменить эти настройки программно. Гла...Вопрос № 24238: Здравствуйте!
Я хочу узнать немного об DOSе. Дело касаеться опять вируса.
Какая разница между работой с файлом с помощью FCB и DTA. Вообще что такое FCB и DTA. Каую информацию он несет. Как я понял, DTA создается для каждого открытого файла....
Вопрос № 24.211
Меня зовут Артём.
Помогите мне плиз. Научите , опишите мне на asme , как работать с BIOS. И вообще реально ли писать
в BIOS программным способом.
Я знаю , что настройки BIOS хранятся в CMOS. Можно ли изменить эти настройки программно. Главное чтобы потом компьютер заработал.
Меня интересуют главным образом такой параметр как Power by on alarm и дата,время для его задания.
Как узнать этот адрес, куда что записывать, чтобы его изменить.
Есть ли разница между BIOS разных производителей.
Отправлен: 29.07.2005, 13:00
Вопрос задал: Temniy (статус: Посетитель)
Всего ответов отправлено: 1
Отвечает: EPsilon
Здравствуйте, Temniy!
Разница между производителчми есть... И в BIOS(CMOS) стандартизованны только адреса параметров диска, системное время, батарейка, результат самотестирования при запуске и все... Адрес узнать можно у производителя... Кстати - и разные прошивки одной и той-же платы могут иметь разные адреса...
Сам Alarm (будильник) стандартизован - и находиться по адресам 1- секунды, 3- минуты, 5-часы (все храняться в BCD формате)...
Приложение:
Ответ отправил: EPsilon (статус: Практикант)
Отправлен: 29.07.2005, 13:45
Вопрос № 24.238
Здравствуйте!
Я хочу узнать немного об DOSе. Дело касаеться опять вируса.
Какая разница между работой с файлом с помощью FCB и DTA. Вообще что такое FCB и DTA. Каую информацию он несет. Как я понял, DTA создается для каждого открытого файла. По смещению 1Еh содержится имя файла. Но как узнать полный путь? Ayl посоветовал мне прочитать список открытых файлов, но как не объяснил.
А допустьм такое: чтобы не искать имя файла могу ли я в перехваченом прерывании паралельно открыть и себе файл (создать и для себя манипулятор в режиме запись-чтение?). Не нарушаться ли права доступа?
А вот еще такая идея: когда файл читается я хочу убрать код вируса уже в буфере. Как это можно сделать? Присылаю часть кода.
Приложение:
Отправлен: 29.07.2005, 23:12
Вопрос задал: Igor Vlad. (статус: Посетитель)
Всего ответов отправлено: 1
Отвечает: Ayl
Здравствуйте, Igor Vlad.!
DTA - вообще-то это не метод работы с файлом, а адрес области обмена данными с диском (Disk Transfer Address). Ее используют функции MS DOS для поиска файлов в каталоге FindFirst и FindNext (4eh и 4fh).
DTA можно прочитать с помощью функции 2fh, а установить с помощью функции 1ah.
Открытые файлы не имеют никакого отношения к DTA.
FCB - это метод работы с файлами, являющийся рудиментом от ранних версий DOS'а. При его использовании можно работать только с файлами в текущем каталоге, причем даже нет вохможности сменить каталог (точнее, даже понятия "каталог" в момент создания этих функций вообще не было). Современные программы эти функции не используют.
Для работы с файлами в последних версиях DOS'а используются т.н. дескрипторы (описатели) файлов. Описатель представляет собой некоторый номер, уникальный для данной программы. На физическом уровне он представляет собой индекс в массиве указателей на структуру описания открытых файлов (для каждого открытого программой файла - своя структура). При начале работы программы ОС автоматически открывает 5 стандартных файлов: стандартный входной файл (устройство, связанное с клавиатурой), стандартный выходной файл (устройство,
связанное с монитором), стандартное устройство для вывода ошибок (монитор), стандартный принтер, дополнительное устройство.
Поэтому при открытии нового файла его номер будет 5.
Насчет структуры открытых файлов. На самом деле, это недокументированная часть MS DOS. У меня сейчас нет под рукой справочников по MS DOS, но я помню, что эта структура описывалась в книгах:
Касаткин. "Профессиональное программирование на Си. Том 2. Управление ресурсами"
Фролов. "Библиотека системного программиста. Том 3,4 (18,19, 2-е изд.). Операционная система MS DOS"
Ты можешь как открыть новый файл, так и работать с буфером чтения-записи. Только делать это нужно очень аккуратно.
Во-первых, если ты будешь работать по прерыванию 21h, то ты должен работать либо с прямым вызовом DOS'а, либо вообще игнорировать DOS. То есть в твоем куске не должно быть строки int 21h. Либо вешать кучу флагов, чтобы разобраться, кто вызывает 21-е прерывание.
Во-вторых, если происходит запрос на чтение из зараженного файла, ты можешь считать блок в свой буфер и уже из своего буфера вырезать ненужное. Потом дочитать в буфер недостающие байты из файла (чтобы вернуть вызвавшей программе именно то число байт, которое она запрашивала). И скопировать модифицированный буфер в приемник по адресу, указанному вызывающей программой.
--------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 01.08.2005, 14:27 Оценка за ответ: 5