Возможная опасность разрушения жёстких дисков
Рекомендую провести резервное копирование всего ценного.
У меня опять отвалились часы от ноутбука. В прошлый раз после замены батарейки
разрушился жёсткий диск до невосстановимого состояния.
На диске может быть резервная копия системы, с которой обычно можно её
восстановить. Но если разрушается диск, этот вариант не работает. Работает
копирование на внешние диски, флэшки и т.д.
Ситуация странная. Я попыталась представить, как это можно сделать. И можно ли
это сделать программно, т.е с помощью вируса.
Допускаю, что можно.
Напомню общую схему работы компьютера. У него есть процессор и внешние
устройства. Процессор умеет считывать информацию с устройств и записывать её.
Он знает, куда прицеплено устройство. Точно также, микроконтроллер знает, на
какой ножке (пине) появился ноль или единица.
Это всё есть на аппаратном уровне, т.е это то,
что умеет процессор – компьютер – микроконтроллер без программного обеспечения.
Программное обеспечение берёт эту информацию от ножек – пинов, как-то её
интерпретирует и выполняет какие-то действия. Все действия – это запись чего-то
в другие ножки – пины.
Операционная система это те самые программы, часть которых работает напрямую с
аппаратным уровнем (берёт с одних ножек, пишет в другие). Запись с ножек на
ножки обычно сложна, потому программисты обычно используют уже готовые функции
операционной системы. Но никто не мешает работать с аппаратными ресурсами
напрямую.
Здесь, например:
http://akostina76.ucoz.ru/blog/2016-09-12-3431
… а беру картинку символа напрямую из оперативной памяти,
просто потому, что я знаю, где в памяти лежат кодировки символов. Это уже тот самый аппаратный уровень вместо
использования стандартных программ операционной системы.
Все устройства, подключенные к компьютеру сложны, т.е
имеют свои микроконтроллеры. Общение компьютера с
устройствам осуществляется по определённому протоколу. Они отправляют друг
другу какие-то последовательности нулей и единиц.
Часы реального времени это тикающая микросхема, прицепленная к счётчику. Раз в
компьютерный тик значение счетчика увеличивается на 1. А микроконтроллер этих
часов позволяет считывать значение (получить дату и время) и устанавливать его
(задать компьютерные дату и время).
Но сама по себе микросхема умеет только тикать, и передавать нули и единицы.
Годом, месяцем и т.д это все делает драйвер,
написанный программистом.
Драйвер очень близкого к часам температурного датчика разобран тут:
https://akostina76.ucoz.ru/blog/2022-11-04-7818
Причём в этом драйвере явная ошибка, из-за которой, наконец,
стало понятно почему он так редко сообщал температуру.
Любой драйвер – программный текст. Вирус может его изменить. Например, драйвер
может получать правильное значение, но передавать компьютеру 1 января 1980 года
как будто отвалилась батарейка.
В прошлый раз замена батарейки исправила ситуацию с часами, но грохнула старый
жёсткий диск. С новым жёстким диском два месяца проблем не было. Как это
понимать?
Достаточно одного лишнего бита в постоянной памяти часов, чтобы можно было
записать туда некий флажок («1» вместо «0»), который никто не увидит. Но драйвер будет его считывать и если там «1»,
будет возвращать ту самую пустую дату. А когда
батарейка отключится при замене по настоящему, этот флажок сбросится вместе с
датой в временем.
В стародавние времена в такие «серые» и обычно неиспользуемые участки памяти
засовывали тексты вирусов. Пусть,
например, на содержание экрана достаточно 865 байт. Но компьютеру неудобно с
таким работать. Ему проще, когда 1000. Значит, в оперативной памяти будет 865 используемых байт, а за ними то самое пустое и
неиспользуемое место. Вряд ли на дату и время нужно точное количество байт (по
8 бит), наверняка там (в памяти часов) есть тот свободный бит, который можно
использовать под этот «флажок».
Т.е один вирус должен портить драйвер часов реального времени и устанавливать в
них «флажок» блокирующий считывание этого самого времени.
А второй вирус должен при загрузке компьютера фиксировать отсутствие той самой
даты и устанавливать где-то компьютере другой флажок (о том, что не было даты).
И после замены батарейки (и сбросе блокирующего
флажка) и, соответственно, появлении
даты он должен ломать жёсткий диск.
Для работы с диском раньше использовалось прерывание int 13h:
http://www.codenet.ru/progr/dos/int_0012.php
Прерывания и обработчики прерываний это те самые функции
операционной системы, позволяющие программисту не разбираться в том, как
компьютер общается с внешним устройством при помощи нулей и единиц. Общение с
диском особо сложно. Кому интересно можно изучить драйвер SD-карточки:
https://amperkot.ru/spb/catalog/modul_chteniya_i_zapisi_microsd_card_reader_spi-23871298.html
Должно быть похоже на те самые
функции int 13h.
Использование этого int13h настойчиво рекомендовалось. И то, с осторожностью.
Максимум, что удалось мне – подвесить компьютер. Запортить диск до
необходимости форматирований точно можно. Допускаю, что можно и сжечь его электронику
примерно таким способом:
https://akostina76.ucoz.ru/blog/2023-10-18-8432
Допускаю, что с моим диском случилось именно это.
Вирусу, портящему диск, проблема часов не обязательна. Эта проблема вносят в
ситуацию неопределенность. Всё-таки открывалась коробка, вдруг что-то
неаккуратно было с электронами.
Но такая штука может прилететь и активизироваться сразу. И её уже не найти будет. Антивирусники хорошо
ловят известные вирусы, массированную атаку нового они не увидят. Контроль
пакетов на входе (брандмауэр) тоже может не справится.
Сломанный жесткий диск это не столько страшно, сколько долго. Его надо купить.
На него надо все поставить. Но уже точно не надо терять информацию. Лучше скопировать
все ценное на внешние носители.
|