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

         

Запуск


При запуске зараженного файла управление получает код PKLITE. Этот код совпадает на 100% с оригинальным кодом распаковщика, который PKLITE 1.15 записывает в начало COM-файлов при их паковке. При заражении файла вирус корректирует данные блока PKLITE таким образом, что код PKLITE распаковывает 1CFh-байтный блок заголовка в 200h байт. После распаковки эти 200h байт оказываются заполненными нулями, за исключением первых трех байт - там содержится команда JMP_Virus. Таким образом, при запуске зараженного файла код PKLITE замещает первые 200h байт зараженной программы на команду JMP_Virus и нули:

Программа в памяти до распаковки: после распаковки:

0000 +------------+ +------------+ |PKLITE entry| |JMP Near | ---+ |code | | | | |------------| | | | 0200 |------------| |------------| | | | | | | . . . . . . . . | | | | | | |------------| |------------| | |Original | |Original | | |file header | |file header | | | | | | | |------------| |------------| <--+ |TPE polymorp| |TPE polymorp| |loop | |loop | |------------| |------------| |Encrypted | |Encrypted | |virus code | |virus code | | | | | +------------+ +------------+

Затем полиморфик-цикл расшифровывает код вируса, вирус перехватывает INT 21h, оставляет свой код резидентно в памяти, восстанавливает 200h байт начала программы и возвращает ей управление. Кстати, если распаковать зараженный файл при помощи PKLITE или популярной утилиты UNP, то результатом распаковки будет являться 200h-байтный файл, в начале которого находится команда JMP за пределы файла. Таким образом, распаковка зараженного файла портит его.



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