Внедрение способом переноса
Вирусы данного типа размножаются следующим образом. Из инфициру-
емой программы от начала файла считывается часть кода, по длине рав-
ная длине вируса. На освободившееся место вписывается вирус,
а оригинальное начало программы переносится в конец файла. Отсюда
и название метода - "метод переноса". Есть и другие варианты. Иногда,
например, начало программы записывается в середину файла, а середина
переносится в конец, чтобы еще сильнее все запутать. Превосходство дан-
ного метода над другими описанными в том, что инфицированная про-
грамма исполняется в том же виде, в каком она была до заражения,
из файла с тем же именем и расширением. То есть программы, проверя-
ющие себя на предмет заражения вирусом, его не замечают. Корректно
исполняются и такие программы, которые ищут свои файлы конфигура-
ции с именами:
ИМЯ_И_ПУТЬ_К_САМОЙ_ПРОГРАММЕ +.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.