27.05.2014 Views

А,В,Соколов, 0,М, Степанюк - Скачать документы

А,В,Соколов, 0,М, Степанюк - Скачать документы

А,В,Соколов, 0,М, Степанюк - Скачать документы

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Глава 2. Проблемы защиты информации 107<br />

Структура стандартного СО<strong>М</strong>-файла (программы) предельно проста. Он содержит<br />

только код и данные программы, не имея даже заголовка. <strong>В</strong> начале СО<strong>М</strong>-файла<br />

обычно находится команда безусловного перехода JMP, состоящая из трех байт. Благодаря<br />

простому строению СО<strong>М</strong>-файла в него очень просто добавить тело вируса и<br />

затем указать его адрес в команде JMP.<br />

После старта вирус ищет в текущем каталоге СО<strong>М</strong>-файлы. После нахождения нужного<br />

файла тело вируса добавляется в конец этого файла, туда же переносится оригинальный<br />

адрес перехода по JMP, на место которого записывается адрес команды JMP<br />

для безусловного перехода на тело вируса.<br />

После загрузки зараженного файла управление получает вирус. Закончив работу,<br />

он восстанавливает оригинальный адрес безусловного перехода JMP и передает управление<br />

программе, как это показано на рис. 2.19.<br />

После того как вирус закончит свою работу, он восстанавливает в исходное состояние<br />

первые три байта программы (в памяти компьютера) и передает управление на начало<br />

программы. Далее, при запуске зараженного файла, управление сначала получает вирус,<br />

и только затем — исходная программа. Благодаря такой схеме работы рассматриваемый<br />

вирус может спокойно существовать, будучи «выпущенным на волю» один раз.<br />

Кроме такого способа внедрения, существуют и другие способы внедрения СО<strong>М</strong>вирусов.<br />

Рассмотрим два варианта внедрения СО<strong>М</strong>-вируса в начало файла:<br />

1. Чтобы освободить место для себя, вирус переписывает начало программы в конец<br />

файла. После этого тело вируса записывается в начало файла, а небольшая его<br />

часть, обеспечивающая перенос вытесненного фрагмента программы, — в конец файла.<br />

При восстановлении первоначального вида программы тело вируса будет затерто,<br />

поэтому код вируса, восстанавливающий программу, должен находиться в безопасном<br />

месте, отдельно от основного тела вируса. Схема этого способа внедрения изображена<br />

на рис. 2.20.<br />

При загрузке файла, зараженного таким способом, управление получит вирус (так<br />

как он находится в начале файла). По окончании работы вирус передает управление<br />

коду, переносящему вытесненную часть программы на прежнее место. После восстановления<br />

(в памяти, не в файле) первоначального вида программы, она запускается.<br />

JMP | ПРОГР<strong>А</strong><strong>М</strong><strong>М</strong><strong>А</strong> | <strong>В</strong>ИРУС |JMP|<br />

i<br />

t<br />

<strong>В</strong>ирус получает управление<br />

JMP ПРОГР<strong>А</strong><strong>М</strong><strong>М</strong><strong>А</strong> JMP<br />

JMP | ПРОГР<strong>А</strong><strong>М</strong><strong>М</strong><strong>А</strong> | <strong>В</strong>ИРУС IJMPI Отработав, вирус передает<br />

— т — ' - — — ' - 1 - ' - управление в начало программы<br />

JMP - команда безусловного перехода<br />

Рис. 2.19. <strong>В</strong>недрение comcom-вируса в конец файла и его работа

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!