[Death Virii Crew] Presents CHAOS A.D. Vmag, Issue 2, Summer 1996 file 003 Максимально интегрировав вирус с заражаемой программой мы добьемся того, что вирус будет неизлечим. ЕЩЕ ОДИH СПОСОБ ВHЕДРЕHИЯ ВИРУСОВ. Обычно .COM вирусы внедряются 1) либо целиком в начало, 2) главное тело пишут в конец, и в начале переход на себя. 3) главное тело пишут в середину, и в начале переход на себя. В любом из этих способов вирус меняет первые байты файла. Это легко отслеживается всякими там ревизорами. К тому же полуфакам очень просто проследить по цепочке к главному телу вируса, будет он полиморфный или нет - это уже не важно, все дело во времени. Подумалось, а что, если интегрировать вирус с самой заражаемой прогой ? Вот это было бы здорово, полечить прогу было бы весьма и весьма трудно. Почти в каждой .COM программе имеются такие инструкции: 1) mov ax,[что то] int 21h код команд - B8,??,??,CD,21 2) или что-то вроде mov ah,[что то] int 21h код команд - B4,??,CD,21 Если таких команд нет - то попробуйте изменить регистр например на BX,CX - BH,CH,.... - что придумаете. Если нет 21 прерывания - измените на другое, достаточно поменять 21 на это. ЗАЧЕМ ЭТО HАДО ? А вот зачем - ищем в заражаемой проге эти инструкции и меняем их на CALL [начало вируса], оставшиеся лишние байты забиваем чем нибудь из RND и все. Тело самого вируса пишется в конец файла, или в область повторяющихся байт, если есть. В теле вируса мы исполняемся, восстанавливаем оригинальные байты и отдаем им управление. Главная фича в том, что мы не храним у себя в теле адрес подмененных байт, мы его получаем после команды CALL [на вирус] делая просто POP [регистр] - в регистре минус количество занимаемых байт (4,5) мы получаем адрес команд. Естественно внедряться надо не в первую такую цепочку команд, а по RND. Естественно для большего эффекта надо писать полиморфный расшифровщик для вируса. При таком раскладе нас конечно поймать можно, но весьма и весьма (я надеюсь на это ) сложно. p.S. Для .EXE надо делать FAR CALL. (5 байт) (не забудьте и про релокейшены) (c) Reminder [DVC]