Истории о вирусах

Внедрение способом переноса


Вирусы данного типа размножаются следующим образом. Из инфициру-

емой программы от начала файла считывается часть кода, по длине рав-

ная длине вируса. На освободившееся место вписывается вирус,

а оригинальное начало программы переносится в конец файла. Отсюда

и название метода - "метод переноса". Есть и другие варианты. Иногда,

например, начало программы записывается в середину файла, а середина

переносится в конец, чтобы еще сильнее все запутать. Превосходство дан-

ного метода над другими описанными в том, что инфицированная про-

грамма исполняется в том же виде, в каком она была до заражения,

из файла с тем же именем и расширением. То есть программы, проверя-

ющие себя на предмет заражения вирусом, его не замечают. Корректно

исполняются и такие программы, которые ищут свои файлы конфигура-



ции с именами:

ИМЯ_И_ПУТЬ_К_САМОЙ_ПРОГРАММЕ +.INI

Недостаток данного метода проявляется при сбоях в работе компьюте-

ра. Если при исполнении инфицированной программы компьютер

"повиснет" или произойдет перезагрузка системы, инфицированная

программа окажется "чистой", то есть без вируса. Но, во-первых, "кто

не рискует, тот не пьет шампанского", а во-вторых, программы виснут

редко. Алгоритм работы такого вируса следующий:

1. Открыть файл, из которого получено управление.

2. Считать в буфер тело вируса.

3. Закрыть файл.

4. Найти файл-жертву.

5. Открыть файл-жертву.

6. Проверить файл на повторное заражение (здесь могут быть вариан-

ты, но чаще всего используется сигнатура).

7. Если файл уже инфицирован, перейти к пункту 3.

8. Считать в буфер из начала найденного файла фрагмент программы,

по длине равный телу вируса.

9. Записать в начало файла тело вируса из буфера.

10. Дописать в конец файла считанное начало программы из буфера.

Длина программы увеличилась на длину вируса.

11. Закрыть файл-жертву.

12. Открыть файл, из которого стартовали.

13. Считать в буфер начало инфицированной программы, расположен-

ное в конце файла.

14. Записать считанное начало программы поверх кода вируса в начало

файла.

15. Сократить файл до его оригинальной длины (то есть удалить часть

кода, по длине равную длине тела вируса, в конце файла).

16. Закрыть файл.

17. Процедурой Ехес запустить стартовый файл (ParamStr(O)) на ис-

полнение - выполнится инфицированная программа.

18. После завершения работы программы опять открыть стартовый

файл.

19. Записать в начало файла тело вируса, а оригинальное начало про-

граммы опять переместить в конец файла.

20. Закрыть файл.

21. Вернуть управление в DOS.



Содержание раздела