разгружающихся архивных программ), длина ExeSize может оказаться чрезмерно большой, так что программа не сможет загрузиться в память или не сможет работать нормальным образом. Некоторые безграмотно написанные вирусы не учитывают это обстоятельство и быстро выдают себя, т.к. зараженные программы перестают работать.
Другой способ внедрения вируса — пристыковка кода вируса до начала загружаемой части программы и сразу за заголовком файла (см. рис.6.1).
а) б) в) L - загружаемая в память часть файла
Рис.6.1. Варианты внедрения вируса в тело файла: а) незараженный файл; б) вирус в конце файла;
вирус в начале файла; в) вирус в середине файла
Такой способ внедрения позволяет не загружать в память весь ЕХЕ—фа&л, а длина загруженной программы увеличивается только на мину кода вируса. Несмотря на кажущееся преимущество такого способа, он используется достаточно редко. Его реализация значительно сложнее, так как перед передачей управления основной программе вирус должен перенести 256 байт префикса программного сегмента (Р5Р) в конец собственного кода так, чтобы они непосредственно предшествовали телу программы — в противном случае будет нарушена важная связь программы с PSP или относительная адресация в самой программе. Кроме того, в процессе заражения он должен увеличить на величину VirusSize поле ItemOfs каждого элемента таблицы перемещения и абсолютного адреса, указываемого этим элементом. В отличие от стандартного загрузчика ДОС вирусу приходится корректировать не загруженную программу, а ее файловый образ. Так как в ЕХЕ— программе средней сложности может бытп несколько сотен элементов таблицы перемещения, процесс настройки таблицы вирусом приводит к заметному увеличению времени запуска программы, что может обнаружиться пользователем. На этапе размножения вирусы стремятся по возможности скрыть от пользователя результат своей