"Win32.Cabanas" является первым известным 32-битным вирусом, работающим под Windows NT, Windows 95 и Win32s. Обнаружен во второй половине 1997. Имеет длину всего около 3K. Содержит текст:
(c) Win32.Cabanas v1.0 by jqwerty/29A
Автор этого вируса тот же, что и у печально известного макро-вируса "Cap". "Win32.Cabanas" является резидентным вирусом, однако время "жизни" резидентной части вируса ограничено временем работы зараженной программы - вирус не оставляет независимой процедуры, перехватывающей системные события и заражающей выполняемые файлы. Вместо этого вирус действует как часть зараженной программы и пользуется ее ресурсами (см. ниже). Вирус использует анти-эвристические и антиотладочные приемы, частично зашифрован/запакован, использует (впервые для Windows-вирусов) стелс-приемы.
При запуске зараженного файла "Win32.Cabanas" управление передается на тот же адрес, что и до заражения - вирус не изменяет адрес "точки входа" в файл, а записывает по этому адресу команду перехода на свою "точку входа" (JMP Virus_Code, как это делают некоторые DOS-вирусы).
Получив управление, вирус распаковывает и расшифровывает таблицу текстовых строк, которые являются именами Win32 KERNEL API, и затем ищет Base Address в KERNEL32.DLL. Для этого вирус при заражении файлов ищет в них адреса процедур GetModuleHandleA и GetModuleHandleW в Import Table и сохраняет необходимый указатель в списке ".idata". Поскольку системный загрузчик заполняет адреса этих функций при запуске зараженного файла, вирус автоматически получает их и использует в дальнейшем для своего распространения. Если же зараженный файл не содержит процедур GetModuleHandleA или GetModuleHandleW, вирус использует третий (недокументированный) способ вычисления Base Address KERNEL32.DLL (этот способ работает только под Win95 и не работает под NT).
Получив адрес ядра Windows32 и ModuleHandle, вирус такими же и другими приемами определяет адреса других системных функций - GetProcAddress, FindFirst, FindNext, FindClose, SetAttributes, CloseHandle и т.д.