Энциклопедия компьютерных вирусов

         

Shifter


Неопасный резидентный вирус. Перехватывает INT 21h и записывается в середину объектных модулей (OBJ-файлы) при их закрытии. При этом поражает объектные модули таким образом, чтобы при линковке модуля в COM-файл вирус оказался в начале файла. При запуске такого COM-файла вирус остается резидентным. При заражении объектного модуля вирус последовательно читает заголовки всех объектных записей (object records). В заголовок записи при этом входят ее тип и длина. Вирус обрабатывает четыре типа записей: Module End Record (тип 8Ah), External Names Definition Record (тип 8Ch), Logical Data Record (типы A0h или A2h). При обнаружении записи типа Data Record, вирус прибавляет к ее смещению (data offset) в сегменте длину вируса в COM-файле (983 байта). Затем он подсчитывает и сохраняет новую контрольную сумму записи. В результате все записи типа Data Record в зараженном объектном модуле имеют смещение на 983 байта вниз по сравнению с незараженным модулем. Таким образом вирус заставляет линкер поместить код и данные COM-файла на 983 байта вниз и освобождает место для своего (вируса) кода. Особое внимание "Shifter" уделяет первой записи типа Data Record. Если ее смещение не равно 0100h, вирус не заражает данный модуль. Таким образом вирус пытается отличить объектные модули COM-файлов от прочих модулей (EXE, SYS, LIB и т.д.). Кстати, смещение первой Data Record в уже зараженном OBJ-файле не равно 0100h, и вирус не заражает объектные модули дважды. Если очередная запись имеет тип Module End Record, вирус помещает ее полностью в свой буфер и записывает вместо нее новую запись типа Data Record, которая содержит код вируса. Смещение данной записи в сегменте равно 0100h, таким образом линкер поместит эту запись в начало файла. Затем вирус дописывает в конец файла считанную ранее запись Module End Record. Если очередная запись имеет тип External Names Definition Record, вирус проверяет текущее время и с вероятностью 1/4 сдвигает экран и выводит сообщение:

Shifting Objective .OBJ Virus (c) 1993 by Stormbringer Kudos for The Nightmare for his ideas and coolness.
Greets go out to Phalcon/Skism, Urnst Kouch, Mark Ludwig, NuKE, and everyone else in the community.

Длина файлов, зараженных вирусом "Shifter", увеличивается на различные значения. Зараженные (т.е. слинкованные из пораженного модуля) COM-файлы увеличиваются на 983 байта по сравнению с непораженными. Объектные модули увеличиваются при заражении на 990 байт (так как помимо кода вируса в OBJ-файл записывается служебная информация: тип, длина и контрольная сумма записи). "Shifter" пытается заражать только те файлы, которые должны линковаться в COM-файлы. Однако никто не мешает задать начальный адрес 0100h у большого многосегментного EXE-файла. Если вирус поразит объектный модуль такого файла, а затем этот модуль слинкуется в EXE, то при запуске этого EXE система, скорее всего, повиснет. Другие варианты вируса ("Shifter.758,760") никак не проявляют себя, содержат строки:

Shifting Objective Virus 3.0 (c) 1994 Stormbringer [Phalcon/Skism] Kudos go to The Nightmare!

Демонстрации вирусных эффектов:

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