|
Кто на сайте? |
Сейчас на сайте находятся: 13 гостей |
|
|
|
|
Чтение с винчестера через порты |
|
|
Чтение с винчестера через порты.
Представляю вашему вниманию две статьи из австралийского журнала VLAD.
Чтение и запись секторов напрямую через порты.
Очень полезная вещь, особенно для любителей записываться в MBR.
Опция "Virus Warning" в CMOS иногда (специально редко кто догадывается
ее включать, несмотря на то, что это практически непреодолимая преграда
для записи в MBR) бывает включенной, и при записи на экран выскакивает
этот самый Ворнинг с вопросом "Разрешить или запретить запись?" Естессно,
на английском, из-за чего боящиеся перечить компьютеру отвечают "Yes" -
единственное знакомое для них слово в этом окошке, однако, если юзер знает,
то вирусу вашему пришел конец.
"Virus Warning" легко снять (процедуры для снятия см. в предыдущих выпусках
нашего журнала), однако запись через порты позволяет это сделать короче и
и без лишнего геммороя. AWARD даже и не пикнул. Все AMIшные и AWARDовские
навороты летят ко всем ЕБН. Читайте и пользуйтесь. Сам возьму это на воору-
жение, надоело снимать Virus Warning.
Процедура тестировалась на нескольких IDE винтах,
другие типы винтов тестирование не проходили (я также тестировал. LG)
LovinGOD.
На эту работу у меня ушли месяцы, и теперь вы можете писать свой вирус в
загрузочный сектор и никакие резидентные сторожа и BIOS не смогут вам
в этом помешать. Мы разговариваем с винчестером напрямую, без обвешанных
проверками обработчиков прерываний.
Данная программа работает только для 286 и выше (здесь используюется
комманда INSB/W)
Техническая информация по портам:
|
Порт
|
Чтение/запись
|
Описание |
|
01f0h
|
r/w
|
Регистр данных, сюда пишутся/читаются байты |
|
01f1h
|
r
|
Регистр ошибки (для себя вы можете просмотреть их) |
|
01f2h
|
r/w
|
Счетчик секторов, кол-во секторов для чтения |
|
01f3h
|
r/w
|
Номер сектора, начальный номер сектора the actual sector wanted |
|
01f4h
|
r/w
|
Нижняя часть значения дорожки, (0-1024) |
|
01f5h
|
r/w
|
Верхняя часть значения дорожки; остальные более 1024 |
|
01f6h
|
r/w
|
Диск/Головка
bit 7 = 1 ;
bit 6 = 0 ;
bit 5 = 1 ;
bit 4 = 0 выбор диска 0, 1- выбор диска 1
bit 3-0 бит выбора головки
|
|
01f7h
|
r
|
Регистр статуса
bit 7 = 1 контроллер выполняет комманду
bit 6 = 1 диск готов
bit 5 = 1 ошибка записи
bit 4 = 1 поиск окончен
bit 3 = 1 буфер сектора нуждается в обработке
bit 2 = 1 чтение данных с диска откорректировано
bit 1 = 1 индекс - установить каждое вращение в 1
bit 0 = 1 предыдущая комманда закончилась ошибочно |
|
01f7h
|
w
|
Регистр комманд
комманды:
50h форматировать дорожку
20h читать сектора с попытками повторить
21h ------""------ без попыток повторить
22h читать длинный с попытками повторить
23h ------""------ без попыток повторить
30h читать сектора с попытками повтора
31h читать сектора без попыток потвора
32h читать длинный с попытками повтора
33h читать длинный без попыток повтора |
Большинство этого кода должно работать также на не-IDE жестких дисках.
Данный код предназначен для чтения, код для записи см. в следующей статье.
|
|
|
|
|
|
|
|