Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

HDD - анатомия, обслуживание, профилактика поломок #9


Информационный Канал Subscribe.Ru

HDD
-анатомия
-обслуживание
-профилактика поломок
Выпуск #9 (Поддержка - сайт http://hdd.kulichki.com)

Новости
Уважаемые подписчики и читатели! Нашему проекту нужна помощь, конечно же, материальная. Все кто хочет нам помочь - кликайте на баннеры системы Link.ru на нашем сайте http://hdd.kulichki.com (слева внизу) или на этой странице. Заранее всем вам благодарен!

**********
Если у вас есть вопросы или возникли кое-какие проблемы пишите в гостевой книге на нашем сайте. Я обязательно постараюсь ответить, а возможно ответят остальные наши читатели! Зайти на гостевую!
**********


Нужны ведущие для раздела новостей нашего сайта. Все у кого есть свободное время - пишите мне. Пока что работа не будет оплачиваться, но ее не будет слишком много (нужно будет несколько раз в неделю собирать и присылать мне новости по теме "жесткие диски")

РЕКОМЕНДУЮ!!!
Рассылки Subscribe.Ru
Ежедневные обзоры компьютерных статей и программ.
Рассылки
CDюшная ПРАВДА


Новые статьи на нашем сайте:

HDD FAQ

Ответы на часто задаваемые вопросы. В статье даны ответы на такие вопросы как, например:
Слышал, что даже на абсолютно новых винчестерах уже есть дефектные сектора (bad sectors) - правда ли это и как такое может быть?

Решил прочитать SMART на своем жестком диске и обнаружил, что некоторые атрибуты отличаются от первоначальных 100%-ных значений. Насколько я понимаю, это означает, что какие-то узлы в HDD начали деградировать? Стоит ли верить SMART?

Мой диск при работе настолько сильно греется, что не терпит рука. Из-за чего он так кипит и нормально ли это?
Хотелось бы уточнить, какие существуют базовые правила эксплуатации HDD и рекомендации для продления его срока службы?
Читать подробнее >>
Софт
Несколько новых программ на нашем сайте:
1. Iometer 2003.12.16
В представлении не нуждается. Ни один нормальный тест или сравнение не обходится без этой программы!
Скачать >>

2. Disk Editor 2001
Эта программа должна быть у каждого. С ее помощью можно сделать почти все, что можно представить... сделать все, что можно делать с жестким диском. Качаеv все, у кого еще ее нету!
Скачать >>

3. Drive! 1.0.0
Неплохой Бенчмарк (Benchmark) для жестких дисков. Также умеет тестировать жесткий диск по нескольким параметрам. Дает некоторую информацию о жестких дисках и системе. Очень хорошее преимущество - не требует инсталляции!!!
Скачать >>




Восстановление и Ремонт

Fujitsu FAQ

Вопрос: У меня стоит винт Fujitsu MPGxxxxx (далее fuj). Долго ему еще осталось жить?
Ответ: В общем - неизвестно. Рано или поздно вымрут все, технологические дефекты не исправимы. Но если влажность и температура в месте, где стоит винт, невелики - он протянет дольше.

Вопрос: У меня стоит винт Fuj и последнее время машина стала виснуть после ~часа работы, винт стал останавливать шпиндель. При этом после перезагрузки винт не определяется, но, отлежавшись, он снова начинает работать. Что это с ним?
Ответ: Это он помирает так (первая стадия). Срочно сливайте нужную информацию - в любой момент он может перейти к окончательной стадии помирания. Сам винт можно использовать для хранения и таскания разных ненужностей, типа фильмов и музыки, но не более.

Вопрос: У меня стоял винт Fuj и однажды, после включения машины он раскрутился нормально, но не стал определяться, вместо названия модели какие-то кракозябры. Что с ним теперь делать ?
Ответ: Это уже вторая стадия. В процессе подыхания процессора Cirrus Logic (CL) испортилась часть служебной информации на винте, которую называют служебкой, а отдельные блоки которой - модулями. При несовпадении контрольной суммы даже не очень нужного для работы винта модуля (smart, etc) он работать не будет.

Вопрос: Ага, значит, ему надо прошивку обновить, возьму-ка я ему флешку перешью!
Ответ: Не надо флешку трогать, она тут не при чем. Испорчена информация на блинах, а не во флешке. И еще - перед тем, как что-то делать, обязательно надо сохранить старое. У Fuj AT серии на 10 и 20 Gb во флешке могут находиться специфические настройки на конкретный гермоблок (адаптивы), которые категорически нельзя портить. Для сохранения флешки и живых модулей есть программа FUJITSU Exlorer (с) Anthony Borisow. Для АТ-серии иногда (не всегда) помогает запуск утилиты фирменного обновления фирмвари - она умеет и модули подправить. Здесь и далее софт смотрите на http://hddremont.narod.ru/

Вопрос: Если были две стадии, то есть наверное и третья?
Ответ: Да, когда при сильно сдохшем CL винт не хочет даже раскручиваться. Есть еще и четвертая, она же последняя - когда в винт залили не родную фирмварь, от чего он начал стучать головками, затем его разобрали чтобы посмотреть, что же там стучит. Потом прожгли в плате дыру на газовой плите. А уж затем принесли для восстановления специалисту, который вам объяснил, кто вы после этого :)

Вопрос: А почему с ними такое происходит? Хорошие же были винты.
Ответ: История была примерно такова. Сначала зеленые возмутились использованием веществ, разрушающих озоновый слой, при производстве компаунда для заливки корпусов микросхем. Их заменили на фосфорсодержащие, но проверить на долговременную стабильность не успели. Тем временем Cirrus Logic закупил этот компаунд и запаковал в него процессора для Fujitsu. А оказалось, что через некоторое время под воздействием влажности воздуха компаунд выделяет вещества, создающие паразитные утечки на кристалле и разрушающие его. И вот мы имеем глюки. Да еще при пайке на MPG AT использовался агрессивный флюс, который ускорил процесс старения микросхем.

Вопрос: А что можно с этим теперь сделать? Винт то жалко.
Ответ: Принципиально проблема IMHO неразрешима. Т.е. издохнет все-равно, можно только отсрочить дату. А помогает, как и раньше с TDA5247HT, а еще раньше с процессорами от TV Funai - прогрев. Т.е. если надо просто запустить винт на время (от часов до дней) - возьмите фен (только обычный фен, для волос) и хорошо прогрейте им самую большую микросхему на винте, этот самый CL. Если не поможет - так хоть и не испортит ничего. Также может помочь надавливание на CL пальцем до хруста (CL, а не пальца :) ? теплоотводная медная площадка на брюхе CL отслаивается от кристалла и при надавливании хрустит.

Если это не помогло и на винте нет ценной информации - начинаем то, за что серьезные дяди ремонтники вас, как минимум, отматерят. Если нет уверенности в прямоте своих рук и опыта - лучше так не делать. Итак, из подручных материалов понадобится (в порядке возрастания цены и возможностей) газовая зажигалка, которая дает сильный факел, а не просто пламя (не знаю, как назвать - подправьте), либо китайская газовая горелка за $3, либо фен строительный от $20. Отдельно стоит консервная банка, поставленная на газовую плиту с прорезанным в ее верхней крышке отверстием по форме желаемого потока теплого воздуха ? она ничего не стОит, но лишь чуть хуже строительного фена. Снимая плату электроники с винта, постарайтесь не оборвать гибкий шлейфик от двигателя. Вы не знаете, как его снять? Тогда остальное точно не для вас. Итак, задача - просто продлить мучения винта. Можно прогреть CL сверху - это удобно сделать, наример, зажигалкой, и меньше шансов что-то испортить. Т.к. под кристаллом находится теплоотводная площадка, через которую тепло довольно хорошо отводится на слои металлизации в плате, серьезно прогревать и уж тем более отпаивать CL сверху не стоит.

Поэтому будем греть снизу и инструментом посерьезнее. Для инструмента, дающего тонкий и горячий поток воздуха обязательно непрерывное его перемещение, иначе очень быстро в месте нагрева текстолит перегреется, потом начнет вспучиваться (вам повезет, если остановитесь в этот момент - металлизация в отверстиях его довольно крепко держит) а уж потом почернеет и начнет выгорать. Просто поверьте на слово, что не стоит пытаться начинать свой опыт пайки горячим воздухом с вашего винта ? найдите дохлую 386+ мамку и потренируйтесь на ней. Итак, начинаем греть и греем до тех пор, пока от флюса (?) под CL не пойдет легкий дымок и не запахнет. Это происходит как раз перед тем, как начнет плавиться припой. Плавить его вам пока не надо - квалификация не позволяет. Остудили, поставили плату назад и смотрим - помогло или нет. Если не помогло, либо надо еще прогреть (уже с отпайкой), либо уже поздно и вы перегрели CL или флешку.


Вопрос: Да я крутой спец с паяльником, как отпаивать это?
Ответ: Ну во-первых повторю совет на счет предварительной тренировки на старой мамке. Во-вторых, хоть первый фуджей (и мамки до этого) я паял газовой горелкой, делать это кому-либо еще я очень не советую. Так что фен или плита, по вкусу. Для профессионалов - паяльная станция от $1000, но они если это все и читают, то только для прикола :) Перед пайкой надо немного прогреть плату, чтобы не был резких перепадов температуры. Затем начинаем греть место под CL, при этом не стоит трясти плату - когда припой расплавится, он расплавится везде, и даже раньше - там, где не надо, а соскочившие со свох мест SMD детальки в обвязке CL вам потом будет сложно вернуть на место. Сначала оно немного завоняет, потом расплавится припой на выводах CL, потом - припой, которым припаяна теплоотводная площадка на его пузе. Именно по-этому не стоит сразу его тянуть - можете оставить кристалл на плате :) Категорически нельзя прикладывать какое-либо усилие к ножкам CL - загнутые ножки потом очень трудно припаять. Снимая CL, будьте осторожны - надо поднимать его вверх, а не сдвигать вбок, чтобы не сдвинуть что-либо из обвязки CL. Затем мажем место под CL на плате спиртовым раствором канифоли и прогреваем (теперь сверху) еще раз - чтобы бугорки припоя на контактных площадках, которые наверняка приняли ужасную форму, разгладились, разбежались сопли между выводами и т.п. Припой с места теплоотвода на брюхе лучше убрать - иначе при пайке он либо не даст нам посадить CL на место, либо выдавится и устроит где-нибудь короткое. Вот с TDA все было проще - там лишний припой мог вытечь сквозь отверстия в плате... Ну о чем это я? Берем CL, переворачиваем его вверх ногами (не согните их!) и видим площадку теплоотвода с сантиметр площадью. Вот ее то и надо греть, горячим большим паяльником. Припой лишний - убрать. Потом моем и брюхо CL, и плату спиртом (или ацетоном), некоторые еще советуют оставить CL в нем отлежаться, намазываем тонким слоем флюса, закрепляем плату и начинаем ставить CL на место. Чем точнее поставите, тем больше шансов, что ноги припаяются все и именно туда, куда надо. И начинаем греть, так-же, снизу. Когда припой расплавится, CL просядет на свое место, можно его и придавить немного, если есть свободная рука. Если при нагреве CL соскользнул со своего места - начинайте все заново, хотя можно попробовать чуть-чуть его сдвинуть, но велик риск перегрева. А перегрев - это или подыхание CL (например, в короткое), или затирание флешки. Если CL переваливается с боку на бок при пайке - либо под брюхом осталось много припоя, либо он еще не расплавился.

Припаяли - не стоит торопиться включать, сначало надо отмыть флюс, проверить (зубочисткой или тонкой иголочкой), все ли ноги припаялись, нет ли где сопли между ногами. Если припаялось криво (ноги не на своих местах) - начинайте все с начала. Если не припаялось нескольео ножек - их можно припаять и обычным тонким паяльником, только убрав с него припой, и канифоли побольше. Хороший инструмент для расчистки соплей - сплющенная иголка от шприца.



Вопрос: Так, с пайкой понятно (ну или не очень), а что на счет служебки?
Ответ: Для проверки состояния служебки есть PCHDD (http://pchdd.narod.ru/), там на сайте все написано, запускаем - выбираем производителя ? делаем device_diag, должно читаться все, кроме 19 модуля (здесь и далее нумерация в шестнадцатеричной системе). Сохраняем старые модули и прошивку при помощи FUJITSU Exlorer, затем берем от винта с такой-же версией прошивки (70 можно залить любой) и зашиваем при помощи fujtool (http://vmsoft.nm.ru/), предварительно скопировав нужный в файл с именем, равным десятичному номеру модуля и расширением .m - ну или прочитайте им какой-нибудь модуль и посмотрите, как формируется файл. Можно вводить номер модуля и как $70, а не только, как 112 - паскаль :). Если заливается, но назад не считывается - вам поможет Fakel http://www.hddrepairs.narod.ru/, если и он не помогает, то HDDL (ftp://195.209.232.10/pub/soft/), но надо сначала прописать в default.ini

Valid_mode= 0000 fa 43 42 41 40 a0 c1 Read_sa_ram_XX= 0000 XX 02 00 00 00 00 c2 Read_sa_hdd_XX= 0000 XX 01 00 00 00 00 c2 Write_sa_ram_XX= 0000 XX 02 00 00 00 a0 64 Write_sa_hdd_XX= 0000 XX 01 00 00 00 a0 64

где XX - номер того модуля, который надо считать или записать. Можно сразу прописать все, что надо. Дальше запускаем HDDL, окно регистров (F9), выбираем Valid_mode из сохраненных, загрузить, послать, затем, если надо что-то считать с блинов - read_sa_hdd, загрузить, послать, в буфере получить и сохранить. Аналогично из памяти (ram). Если надо записать - в буфере делаем загрузить, выбираем файл, потом write_sa_hdd, загрузить, послать, винт поднимет DRQ, в буфере отправить. Модули из первого десятка критичны для информации на винте, заливать туда что-попало не стоит.

Лучше начать с безобидного 70. После заливки каждого отключить питание винта (для чего надо взять переходник от старого кулера и поставить выключатель с 2 группами контактов в разрыв желтого (+12) и красного (+5) проводов. Сдвоенный выключатель обязательно! для одновременности подачи и снятия питания) посмотреть, не стало ли читаться то, что раньше не читалось. После включения питания, естественно, надо сначала дождаться выхода винта в готовность (пропадания BUSY), а уж потом читать/писать. Архив (большой) прошивок винтам есть на http://hdd-recovery.by.ru/, за что всем дружно надо сказать большое спасибо Андрею Кирееву. Для тех, кто в танке - винт цеплять на второй порт, работать под DOSом.



Вопрос: А вот у меня maxtor(samsung, seagate, wd) и похоже у него служебка слетела, где бы к нему команды найти?
Ответ: А нигде. С остальными винтами такой халявы нету - вступайте в ряды винтоколупателей.





Пособие по восстановлению Fujitsu в стиле для домохозяек.

Используем только доступный софт.

Итак. Принесли Вам винт.

1. Подключаем его мастером на Secondary порт.
2. Прогой Fujitsu Explorer по клавишам F, S скачиваем зашивку и SA модули. Если эта прога не берет, тогда с пом. проги HDDl ( см. ниже )
3. Прогой PCHDD смотрим битые модули ( кстати PCHDD кладет адаптивы в отдельный файл ).
4. Находим эти модули на рабочих винтах или в инете.
5. Заливаем модули SA прогой FujTool v0.3 ( есть тонкость - прога именует модули в десятичной системе. Отсюда следует, что надо составить соответствие с прогой Fujitsu ). Сразу оговорюсь - не все модули зашивает, а если винт не виден в BIOS, то может вообще не работать.
Если у Вас эта ситуация попробуйте зашить прогой HDDl.

Как это сделать?

5.1. Сначала допишем ini - файл: _Valid_mode= 0000 fa 43 42 41 40 a0 c1 _Read_sa_19= 0000 19 01 00 00 00 00 c2 ( 19 - дано для примера ) Write_sa_19= 0000 19 01 00 00 00 a0 64 ( и добавте пустую строку )

5.2. Запускаем прогу, заходим в "окно регистров" В окне "сохраненные соманды" выбираем _Valid_mode "загрузить", "выполнить" Далее выбираем нужное и "загрузить" В пункте регистр: 19 - правим на нужный регистр и "послать".

5.3. В буфере обмена При _read_sa - "получить", "сохранить". При write_sa - "загрузить","отправить".

6. Выключаем питание. Смотрим, винт в BIOS определился? Если да, то проверяем его прогами FJDT и MHDD и тесты, тесты. Если нет - смотрим, что сделали не так.

Модуль 01 с другого винта шить нельзя. BIOS не видит винт если биты модули - 70, 2d, 32 (насчет других не знаю)

Анатомия

загрузочные вирусы

Что такое загрузочный вирус?

Загрузочные вирусы заражают загрузочный (boot) сектор флоппи-диска и boot-сектор или Master Boot Record (MBR) винчестера. Принцип действия загрузочных вирусов основан на алгоритмах запуска операционной системы при включении или перезагрузке компьютера - после необходимых тестов установленного оборудования (памяти, дисков и т.д.) программа системной загрузки считывает первый физический сектор загрузочного диска (A:, C: или CD-ROM в зависимости от параметров, установленных в BIOS Setup) и передает на него управление.

В случае дискеты или компакт-диска управление получает boot-сектор, который анализирует таблицу параметров диска (BPB - BIOS Parameter Block) высчитывает адреса системных файлов операционной системы, считывает их в память и запускает на выполнение. Системными файлами обычно являются MSDOS.SYS и IO.SYS, либо IBMDOS.COM и IBMBIO.COM, либо других в зависимости от установленной версии DOS, Windows или других операционных систем. Если же на загрузочном диске отсутствуют файлы операционной системы, программа, расположенная в boot-секторе диска выдает сообщение об ошибке и предлагает заменить загрузочный диск.

В случае винчестера управление получает программа, расположенная в MBR винчестера. Эта программа анализирует таблицу разбиения диска (Disk Partition Table), вычисляет адрес активного boot-сектора (обычно этим сектором является boot-сектор диска C:), загружает его в память и передает на него управление. Получив управление, активный boot-сектор винчестера проделывает те же действия, что и boot-сектор дискеты.

При заражении дисков загрузочные вирусы "подставляют" свой код вместо какой-либо программы, получающей управление при загрузке системы. Принцип заражения, таким образом, одинаков во всех описанных выше способах: вирус "заставляет" систему при ее перезапуске считать в память и отдать управление не оригинальному коду загрузчика, но коду вируса.

Заражение дискет производится известным единственным способом - вирус записывает свой код вместо оригинального кода boot-сектора дискеты. Винчестер заражается тремя возможными способами - вирус записывается либо вместо кода MBR, либо вместо кода boot-сектора загрузочного диска (обычно диска C:), либо модифицирует адрес активного boot-сектора в Disk Partition Table, расположенной в MBR винчестера.


При инфицировании диска вирус в большинстве случаев переносит оригинальный boot-сектор (или MBR) в какой-либо другой сектор диска (например, в первый свободный). Если длина вируса больше длины сектора, то в заражаемый сектор помещается первая часть вируса, остальные части размещаются в других секторах (например, в первых свободных).
Незараженный диск
0     1     2             . . . (Номер сектора)
+---------------------   ------------------------------------
|%%%%%|     |     |        |     |     |     |     |     |
+---------------------   ------------------------------------
|
+--  Boot-сектор  или  Master Boot Record
Зараженный диск (подмена boot/MBR)
0     1     2      . . .
+---------------------   ------------------------------------
|#####|     |     |        |     |%%%%%|#####|#####|#####|
+---------------------   ------------------------------------
|                                |     |     | ... |
+--  Начало вируса               | +---------------+
| +--  Продолжение вируса
|
+-- Сохраненный Boot-сектор
или Master Boot Record
Зараженный диск (подмена активного boot-cектора в Disk Partition Table)
0     1     2      . . .
+---------------------   ------------------------------
|%%%%#|     |     |        |     |#####|#####|#####|
+---------------------   ------------------------------
|                            ^ |     | ... |
+--  Модифицированная -------+ |-----------+
Disk Partition Table      +--  Основной код вируса

Существует несколько вариантов размещения на диске первоначального загрузочного сектора и продолжения вируса: в сектора свободных кластеров логического диска, в неиспользуемые или редко используемые системные сектора, в сектора, расположенные за пределами диска.

Если продолжение вируса размещается в секторах, которые принадлежат свободным кластерам диска (при поиске этих секторов вирусу приходится анализировать таблицу размещения файлов - FAT), то, как правило, вирус помечает в FAT эти кластеры как сбойные (так называемые псевдосбойные кластеры). Этот способ используется вирусами "Brain", "Ping-Pong" и некоторыми другими. В вирусах семейства "Stoned" задествован другой метод. Эти вирусы размещают первоначальный загрузочный сектор в неиспользуемом или редко используемом секторе - в одном из секторов вничестера (если такие есть), расположенных между MBR и первым boot-сектором, а на дискете такой сектор выбирается из последних секторов корневого каталога.

Некоторые вирусы записывают свой код в последние сектора винчестера, поскольку эти сектора используются только тогда, когда винчестер полностью заполнен информацией (что является довольно редким явлением, если учесть размеры современных дисков). Однако такие вирусы приводят к порче файловой системы OS/2, которая в некоторых случаях хранит активный boot-сектора и системные данные как раз в последних секторах винчестера.

Реже используется метод сохранения продолжения вируса за пределами диска. Достигается это двумя способами. Первый сводится к уменьшению размеров логических дисков: вирус вычитает необходимые значения из соответствующих полей BPB boot-сектора и Disk Partition Table винчестера (если заражается винчестер), уменьшает таким образом размер логичесного диска и записывает свой код в "отрезанные" от него сектора.

Второй способ - запись данных за пределами физического разбиения диска. В случае флоппи-дисков вирусу для этого приходится форматировать на диске дополнительный трек (метод нестандартного форматирования), например, 40-й трек на 360K дискете или 80-й трек на 1.2M и 1.4M дискетах. Существуют вирусы, записывающие свой код за пределами доступного пространства винчестера, если, разумеется, это допускается установленным оборудованием (см. вирус "Hare"). Конечно, существуют и другие методы размещения вируса на диске, например, вирусы семейства "Azusa" содержат в своем теле стандартный загрузчик MBR и при заражении записываются поверх оригинального MBR без его сохранения.

При заражении большинство вирусов копирует в код своего загрузчика системную информацию, хранящуюся в первоначальном загрузчике (для MBR этой информацией является Disk Partition Table, для Boot-сектора дискет - BIOS Parameter Block). В противном случае система окажется неспособной загрузить себя, поскольку дисковые адреса компонент системы высчитываются на основе этой информации. Такие вирусы довольно лекго удаляются переписыванием заново кода системного загрузчика в boot-секторе и MBR - для этого необходимо загрузиться с незараженной системной дискеты и использовать команды SYS для обезвреживания дискет и логических дисков винчестера или FDISK/MBR для лечения зараденного MBR-сектора.

Однако некоторые 100%-стелс вирусы не сохраняют эту информацию или даже более того - преднамеренно шифруют ее. При обращении системы или других программ к зараженным секторам вирус подставляет их незараженные оригиналы, и загрузка системы происходит без каких-либо сбоев, однако лечение MBR при помощи FDISK/MBR в случае такого вируса приводит к потере информации о разбиении диска (Disk Partition Table). В этом случае диск может быть "оживлен" либо переформатированием с потерей всей информации, либо восстановлением Disk Partition Table "вручную", что требует определенной квалификации.

Следует также отметить тот факт, что загрузочные вирусы очень редко "уживаются" вместе на одном диске - часто они используют одни и те же дисковые сектора для размещения своего кода/данных. В результате код/данные первого вируса оказываются испорченными при заражении вторым вирусом, и система либо зависает при загрузке, либо зацикливается (что также приводит к ее зависанию).

Пользователям новых операционных систем (Novell, Win95, OS/2) загрузочные вирусы также могут доставить неприятности. Несмотря на то, что перечисленные выше системы работают с дисками напрямую (минуя вызовы BIOS), что блокирует вирус и делает невозможным дальнейшее его распространение, код вируса все-таки, хоть и очень редко, получает управление при перезагрузке системы. Поэтому вирус "March6", например, может годами "жить" в MBR сервера и никак не влиять при этом на его (сервера) работу и производительность. Однако при случайной перезагрузке 6-го марта этот вирус полностью уничтожит все данные на диске.

Подявляющее большинство резидентных загрузочных вирусов для выделения системной памяти для своей резидентной копии использует один и тот же прием: они уменьшают объем DOS-памяти (слово по адресу 0040:0013) и копируют свой код в "отрезанный" блок памяти. Объем DOS-памяти обычно уменьшается на единицу (один килобайт) в случае коротких загрузочных вирусов, код которых занимает один сектор дискового пространства (512 байт). Вторая половина килобайта используется такими вирусами как буфер чтения/записи при заражении дисков. Если же размер вируса больше одного килобайта или он использует нестандартные методы заражения, требующие большего объема буфера чтения/записи, объем памяти уменьшается на несколько килобайт (среди известных вирусов максимальное значение у вируса RDA.Fighter - 30K).

В дальнейшем некоторые вирусы "ждут" загрузки DOS и восстанавливают первоначальное значение объема системной памяти - в результате они оказываются расположенными не за пределами DOS, а как отдельный блок DOS-памяти. Некоторые загрузочные вирусы вообще не используют и не изменяют значение объема системной памяти. Они копируют себя в какую-либо область памяти, неиспользуемую вплоть до загрузки DOS, ждут загрузки DOS и затем инсталлируют свой код в системе всеми возможными в DOS способами.

Такими вирусами используются несколько способов перехвата момента загрузки DOS. Наиболее "популятный" способ - проверка значения INT 21h (прерывание DOS-функций). Если это значение изменилось, вирусы считают, что инсталляция DOS завершена. Проверка значения INT 21h проводится при вызовах INT 8, 1Ch (прерывания таймера, для этого вирусы помимо прерываний обращения к дискам перехватывают также прерывания таймера) или при вызовах INT 13h. Менее популярный способ - проверка данных, считываемых с диска (для этого требуется только перехват INT 13h). Если буффер чтения содержит заголовок EXE-файла, вирусы считают, что загрузка DOS завершена, поскольку в память для выполнения загружается EXE-файл.

Для того, чтобы перехватить обращения к дискам, большинство загрузочных вирусов перехватывают INT 13h - основное прерывание для работы с дисками. Реже используется перехват INT 40h - прерывание для работы с флоппи-дисками. Еще реже используются различные экзотические способы перехвата прерываний BIOS и DOS, возникающих при работе с дискетами.

В случае перехвата INT 13h/40h вирусы обрабатывают команды чтения/записи секторов (AH=2,3), проверяют диск на зараженность и записывают в его загрузочный сектор или MBR винчестера свой код. Реже перехватываются другие команды - от команды Reset Disk (AH=0) вплоть до команд "длинного" чтения/записи (AH=0Ah,0Bh).

Большая часть загрузочных вирусов не проверяет системную память на наличие своей уже установленной TSR-копии - они либо используют стелс-приемы и повторный запуск кода вируса невозможен, либо ориентируются на то, что кода вируса загружается однократно в момент загрузки DOS - после этого коды загрузочных секторов дисков больше не выполняются ни при каких условиях. Часть вирусов проверяют наличие своей копии - для этого используются либо специальные вызовы INT 13h с каким-либо нестандартным значением, либо помечается какой-либо заведомо неиспользуемый байт (или слово) в таблице векторов прерываний или в области данных BIOS (0040:00??). Существуют, конечно же, и другие способы детектирования своей TSR-копии.

Загрузочные стелс-вирусы для скрытия своего кода используют два основных способа. Первый из них заключается в том, что вирус перехватывает команды чтения зараженного сектора (INT 13h) и подставляет вместо него незараженный оригинал. Этот способ делает вирус невидимым для любой DOS-программы, включая антивирусы, неспособные "лечить" оперативную память компьютера. Возможен перехват команд чтения секторов на уровне более низком, чем INT 13h.

Второй способ направлен против антивирусов, поддерживающих команды прямого чтения секторов через порты контроллера диска. Такие вирусы при запуске любой программы (включая антивирус) восстанавливают зараженные сектора, а после окончания ее работы снова заражают диск. Поскольку для этого вирусу приходится перехватывать запуск и окончание работы программ, то он должен перехватывать также DOS-прерывание INT 21h.

С некоторыми оговорками стелс-вирусами можно назвать вирусы, которые вносят минимальные изменения в заражаемый сектор (например, при заражении MBR правят только активный адрес загрузочного сектора - изменению подлежат только 3 байта), либо маскируются под код стандартного загрузчика.

Алгоритм работы загрузочного вируса

Практически все загрузочные вирусы резидентны. Они внедряются в память компьютера при загрузке с инфицированного диска. При этом системный загрузчик считывает содержимое первого сектора диска, с которого производится загрузка, помещает считанную информацию в память и передает на нее (т.е. на вирус) управление. После этого начинают выполняться инструкции вируса, который:

  • как правило, уменьшает объем свободной памяти (слово по адресу 0040:0013), копируют в освободившееся место свой код и считывает с диска свое продолжение (если оно есть). В дальнейшем некоторые вирусы "ждут" загрузки DOS и восстанавливают это слово в его первоначальное значение. В результате они оказываются расположенными не за пределами DOS, а как отдельные блоки DOS-памяти.
  • перехватывает необходимые вектора прерываний (обычно - INT 13H), считывает в память оригинальный boot-сектор и передает на него управление. В дальнейшем загрузочный вирус ведет себя так же, как резидентный файловый: перехватывает обращения операционной системы к дискам и инфицирует их, в зависимости от некоторых условий совершает деструктивные действия или вызывает звуковые или видеоэффекты.

Существуют нерезидентные загрузочные вирусы - при загрузке они заражают MBR винчестера и дискеты, если те присутствуют в дисководах. Затем такие вирусы передают управление оригинальному загрузчику и на работу компьютера более не влияют.

Обнаружение загрузочного вируса

В загрузочных секторах дисков расположены, как правило, небольшие программы, назначение которых состоит в определении размеров и границ логических дисков (для MBR винчестера) или загрузке операционной системы (для boot-сектора).

В начале следует прочитать содержимое сектора, подозрительного на наличие вируса. Для этой цели удобно использовать DISKEDIT из "Нортоновских утилит" или AVPUTIL из профессионального комплекта AVP.

Некоторые загрузочные вирусы практически сразу можно обнаружить по наличию различных текстовых строк (например, вирус "Stoned" содержит строки: "Your PC is now Stoned!", "LEGALISE MARIJUANA!"). Некоторые вирусы, поражающие boot-секторы дисков, наоборот, определяются по отсутствию строк, которые обязательно должны присутствовать в boot-секторе. К таким строкам относятся имена системных файлов (например, строка "IO SYSMSDOS SYS") и строки сообщений об ошибках. Отсутствие или изменение строки-заголовка boot-сектора (строка, содержащая номер версии DOS или название фирмы-производителя программного обеспечения, например, "MSDOS5.0" или "MSWIN4.0") также может служить сигналом о заражении вирусом, если на компьютере не установлена Windows95/NT - эти системы по неизвестной мне причине записывают в заголовок загрузочных секторов дискет случайные строки текста.

Стандартный загрузчик MS-DOS, расположенный в MBR, занимает меньше половины сектора, и многие вирусы, поражающие MBR винчестера, довольно просто заметить по увеличению длины кода, расположенного в секторе MBR.

Однако существуют вирусы, которые внедряются в загрузчик без изменения его текстовых строк и с минимальными изменениями кода загрузчика. Для того чтобы обнаружить такой вирус, в большинстве случаев достаточно отформатировать дискету на заведомо незараженном компьютере, сохранить в виде файла ее boot-сектор, затем некоторое время использовать ее на зараженном компьютере (записать/прочитать несколько файлов), а после этого на незараженном компьютере сравнить ее boot-сектор с оригинальным. Если в коде загрузочного сектора произошли изменения - вирус пойман. Существуют также вирусы, использующие более сложные приемы заражения, например, изменяющие при инфицировании MBR всего 3 байта Disk Partition Table, соответствующие адресу активного загрузочного сектора. Для идентификации такого вируса придется провести более детальное исследование кодов загрузочного сектора вплоть до полного анализа алгоритма работы его кода. Приведенные рассуждения основываются на том, что стандартные загрузчики (программы, записываемые операционной системой в загрузочные сектора) реализуют стандартные алгоритмы загрузки операционной системы и оформляются в соответствии с ее стандартами. Если же диски отформатированы утилитами, не входящими в состав DOS (например, Disk Manager), то для обнаружения в них вируса следует проанализировать алгоритм работы и оформление загрузчиков, создаваемых такой утилитой.

Восстановление загрузочных секторов

Восстановление секторов в большинстве случаев является довольно простой операцией и проделывается при помощи DOS'овской команды SYS (загрузочные сектора дискет и логических дисков винчестера) или командой FDISK/MBR (Master Boot Record винчестера). Можно, конечно же, воспользоваться утилитой FORMAT, однако практически во всех случаях команды SYS вполне достаточно.

Следует иметь в виду, что лечение секторов необходимо производить только при условии отсутствия вируса в оперативной памяти. Если копия вируса в памяти не обезврежена, то вполне вероятно, что вирус повторно заразит дискету или винчестер после того, как код вируса будет удален (даже если воспользоваться утилитой FORMAT).

Будьте также крайне осторожны при использовании FDISK/MBR. Эта команда заново переписывает код программы-загрузчика системы и не изменяет таблицу разбиения диска (Disk Partition Table). FDISK/MBR является 100% лекарством для большинства загрузочных вирусов, однако, если вирус шифрует Disk Partition Table или использует нестандартные способы заражения, FDISK/MBR может привести к полной потере информации на диске. Поэтому перед запуском FDISK/MBR убедитесь в корректности Disk Partition Table. Для этого требуется загрузиться с незараженной DOS-дискеты и проверить корректность этой таблицы (наиболее удобная программа для этой цели - Norton Disk Editor).

Если же восстановление секторов при помощи SYS/FDISK невозможно, то следует разобраться в алгоритме работы вируса, обнаружить на диске первоначальный boot/MBR-сектор и перенести его на законное место (для этого подходят Norton Disk Editor или AVPUTIL). При этом надо постоянно иметь в виду, что при перезаписи системных загрузчиков необходимо соблюдать особую осторожность, поскольку результатом неправильного исправления сектора MBR или boot-сектора может быть потеря всей информации на диске (дисках).

Из книги Евгения Касперского "Компьютерные вирусы"
http://www.viruslist.com


Юмор
Новости рынка программного обеспечения: вышла русская версия Windows XP в переводе Гоблина.

Недавно изобрел универсальный растворитель. Теперь думаю, в чем его хранить.

Ругаться со своим начальником - все равно что бороться со свиньей, лежащей в грязи: в какой-то момент ты замечаешь, что обливаешься грязью, в то время как эта свинья ловит кайф.


INFO
Все вопросы и предложения касающиеся рассылки и сайта http://hdd.kulichki.com присылайте мне на адрес prudko@list.ru
Архив рассылки (#1, #2, #3, #4, #5, #6, #7, #8) вы можете почитать на http://subscribe.ru/archive/comp.hard.hdd/


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное