INFECTED VOICE ISSUE 98'06 (C)1994-98, by STEALTH group online h/p/v/a zine (russian) http://sourceofkaos.com/stealth mailto:noxyucT@usa.net ----------------------------------------------------------------------- Using FPU to spoof heuristic scanners. (C)1998, by Gloomy Tanat ----------------------------------------------------------------------- Итак, вы написали свой первый вирус, но всеми горячо любимый dR. wEB ужасно ругается на наличие в нем ... ну например процедуры поиска *.com файлов (он просто не понимает, что ваш вирус не может без этого обойтись) ... что же вам делать ? Если вы старый, умудренный опытом вирусописатель, то я думаю для вас не составит проблемы уговорить его помолчать, но если вы только начали проявлять себя на этом уникальном поле деятельности, то этот весьма разговор- чивый товарисчъ может причинить вам массу неудобств ... остается одно, либо попробовать самому разобраться с ним, либо искать помощи у более знающих людей. Я не могу претендовать на звание особо сведущего человека в этой области, но уже могу дать oдин совет ... Вот как поступил я находясь в подобной ситуации. Исходя из того, что wEB не может (или не хочет) эмулировать рaботу сопроцессора я естественно обратил свой взор на этот вид работы, чего и вам советую ... все уже поняли о чем речь, для совсем новичков расскажу подробнее ... Моя работа с сопром сводилась к тому, что я crypt'овал или область где хранятся данные необходимые для нормальной работы вируса (то бишь маску для поиска и прочие нужные вещи), или саму процедуру поиска и заражения файлов, а decrypt'ор при своих расчетах пользовался услугами сопроцессора ... например простейшая процедура crypt'ования : ; encrypt: decrypt: mov dx, word ptr [cryptdta] lea bx, [enc_beg] mov cx, (enc_end - enc_beg + 1) / 2 xor_loop: xor word ptr [bx], dx add bx, 2 loop xor_loop cryptdta dw 2 ; превращалась в этo : ; encrypt: decrypt: mov dx, word ptr [cryptdta] lea bx, [enc_beg] mov cx, (enc_end - enc_beg + 1) / 2 xor_loop: xor word ptr [bx], dx fild x ; x=1 fild y ; y=1 fadd ; x+y fistp z ; z=2 add bx, z ; mov bx, 2 loop xor_loop x dw 1 y dw 1 z dw ? cryptdta dw 2 ; ; enc_beg: ... тут все, что wEB не должен разглядеть ... enc_end: ; все просто, но wEB'ушка (да простят меня за то, что я так ласково, но мне wEB откровенно нравится) со своим не умением работы с сопром просто не видит всего того, что происходит в crypt'ованной области вируса, безуспешно покрутив цикл decrypt'a он послушно говорит - 'Ok' и отходит на покой ... Вот и все, что я хотел вам рассказать, сам я занимаюсь всем этим ужасно малое количество времени, посему имею пока мало оригинальных (может это и не оригинально, но я этого нигде не видел и придумал сам) идей ... будет больше - обязательно с вами поделюсь ... дальше я привожу список основных команд для работы с сопром, узнайте их дабы не уподобляться старику dOCTOR'y wEB'y ... Всего вам наилучшего ... --- основные команды сопроцессора --- ; FWAIT ожидание окончания работы сопроцессора, синхронизирует работу основного процессора и сопроцессора, приостанавливает работу процессора до завершения текущей операции сопроцессором, в процессорах Pentium, 80486DX и сопроцессоре 80387 это делается автоматически, для сопроцессора 8087 - необходимо наличие команды fwait. ; FINIT инициализация сопроцессора, действие подобное аппаратному сбросу сопроцессора ; FILD преобразование заданного целочисленного операнда в действительное представление и загрузка его в стек, операндом может быть только переменная описанная как слово, двойное и четверное слово, команда влияет на флаг IE. ; FADD сложение двух действительных чисел, может применяться без операндов, с одним или двумя операндами, влияет на флаги PE, UE, OE, DE, IE. ; FIST преобразование числа из вершины стека в целое число и запись его в поле памяти, влияет на флаги PE, IE, необходимо указывать один операнд, округляет число из вершины стека до целого значения и записывает в указанный операнд. ; FISTP тоже самое + выталкивание из стека ; FMUL умножение двух действительных чисел, флаги PE, UE, OE, DE, IE. ; FSUB вычитание двух действительных чисел, флаги PE, UE, OE, DE, IE. ; FDIV деление двух действительных чисел, флаги PE, UE, OE, ZE, DE, IE. ; добавление к командам вычисления 'P' добавляет выталкивание из стека. (FIST - FISTP) --- oснoвныe кoмaнды сoпpoцeссopa --- Остальное ищите в книгах и прочей документации, нaпpягaйтe фaнтaзию ... короче читайте книги - и вам воздастся пo тpyдaм вaшим ... [GloomyTanat] for Infected Moscow [1998]