┌──┬──┐          /╔════╗/╦══╗ /╔═══╗  ╔═══╗ /╔══╦══╗/╦   /╦/╦══╗ /╔═══╗ ╔═══╗
   │┬  ┌──       │║   /╩│║ /╚╗│║  /  │║  │║ // │║ //│║   │║│║ /╚╗│║  /╩│║ │/╩
   │├─┐│ ░░▒▒▒▓▓▓│║▓▓▓▓▓│║▓/╔╝│║▓▓▓▓▓╔╩═══╩╗▓▓▓│║▓▓▓│║▓▓▓│║│║▓/╔╝│║▓▓▓▓│║▓▒▒░
   ││ │├─        │║     │╠══╣ │║═   │║    │║   │║   │║   │║│╠══╣ │║═   /╚═══╗
   ││ ││         │║   /╦│║  ╚╗│║  /╦│║    │║   │║   │║   ╔╝│║  ╚╗│║  /╦ ╦  │║
   │┴ ┘└─┘       /╚════╝/╩  /╩/╚═══╝/╩    /╩   /╩   /╚═══╝ /╩  /╩/╚═══╝/╚═══╝
   │ THE CREATURES │ Computer Virus Magazine │ March 1999            issue 02
   │───────────────┴─────────────────────────┴───────────────────────────────
   │
   │                    ЗАМОЛВИМ СЛОВО ПРО CORE WAR

═══════════════════════════════════════════════════════════════════════════════

"Плывет говно по реке, а на берегу сидят дед с внуком. Внучок и спрашивает:
        - Дедушка, откуда это говно?
        - Это было давно..."

      В самом деле, история коурваровская берет свое начало от тех громадин
 БЭСМ, МЕСМ и черт знает каких других ХРЕНЕСМ. Хотя, насколько я знаю,
 в России (тогда СССР) 'Бои в памяти' не проводились.

"...    - Дед, а дед! А говно-то тут причем?
        - А я е@# что-ли? Насрал кто-то! "
                                                           (C) Красная Плесень
      Так что же такое CoreWar?
-------------------------------

                 1.   Как это было.

     По  сути  дело  это  все  организовывалось  так:  несколько (2 или более)
 программистов  пишут,  каждый свою, программу, так называемого "бойца". Затем
 на  некой машине эти программы встречаются, то есть забрасываются в случайные
 области  памяти  специальным  алгоритмом (типа рефери). Потом начинается бой.
 Суть  боя  в том, что каждый боец должен уничтожить остальных, а сам выжить и
 размножиться  (в  пределах  памяти  машины),  чтобы  потом  сообщить о победе
 радостным  криком "Я ЖИВ!". Казалось бы, все просто - необходимо лишь сделать
 программу  релоцируемой  (кто  не знает - независимой от адреса точки входа),
 определить  свой адрес, а остальную память забить нулями. Не знаю. По крайней
 мере, такие алгоритмы не выигрывали. Возможно, дело в скорости, возможно, еще
 в  чем-то, но бойцы получались весьма интеллектуальными. На этом краткий курс
 по CoreWar можно считать законченым.

                 2.   Как с этим сейчас.

     По  моим данным, CoreWar'а в "чистом" виде сейчас нет. Возможно, вирусы -
 некая альтернатива. дело в том, что с распространением компьютеров количество
 так  называемых  "пользователей" заметно увеличилось. И сейчас "бои в памяти"
 уже  не будут столь интересны неискушенному, вернее, НЕПОСВЯЩЕННОМУ человеку.
 Вот вирус - это да. Вирусу не нужны рефери. Вирусу не нужны свободные машины.
 Вирусу  не  нужны  разрешения  на  работу. И тестировать вирус можно на любой
 машине  с  совместимой  системой. Однако, вирмейкеры подвергаются гонениям со
 стороны  все  тех  же "пользователей". Что-ж, тем лучше. Значит, есть стимул,
 технические задачи для вируса - маскировка, защита... HERE WE GO!

                 3.   Попытки имитации аналогов.

         Возможно,  многие  знают  игрушку  компании  "Gamos"   под  названием
 Snake Battle. Если кому надо - сообщите в письме, я ее пришлю. Суть там в том,
 что игрок  создает  "змею", руководствующуюся задаваемыми схемами действий. В
 схватке  2-4  змей  определяется  победитель.  Фенька  там  еще  и в том, что
 алгоритм  змеи записан не в виде текста программы, а в виде эдаких микросхем,
 куда мышкой тыкаешь, и таким образом задаешь ситуацию и реакцию на нее. Более
 серьезный  аналог  -  P-Robots  by  David  Malmberg.  Там  программа действий
 бойца-"робота"  пишется на паскале, с использованием новых функций и процедур
 (типа  SCAN  -  для поиска врагов, CANNON - для стрельбы и тп) К сожалению, у
 P-Robots галимый интерфейс и маловато возможностей. ВСЕ. Других аналогов я не
 встречал  (всякий  изврат  типа  DeadLine  не  в  счет). Если вы располагаете
 информацией о чем-то подобном, прошу вас, напишите на [email protected]

-------------------------------------------------------------------------------

                    ВИРУСЫ КАК БОЙЦЫ В ЧУЖЕРОДНОЙ СРЕДЕ

     Рассмотрим  теперь  ВИРУС  с  немного другой стороны - а как он выглядит,
 ежели  его воспринимать как некую программу-воина в дебрях неизвестной машины
 и  кровожадных  антивирусов.  И  вот  он  там один, с ним все борятся, причем
 избавиться от него хотят любой ценой, хоть и полным уничтожением носителя.
     Нечестно?  Сейчас  разберемся.  Во-первых,  сам пользователь против того,
 чтобы  на его машине жили вирусы. Во-вторых любой производитель стационарного
 ПО  (не  самоходного) заинтересован в "чистоте" своего детища (вспомните, как
 ругаются  бывало  различные  говнистые проги на изменение своей длины). Потом
 антивирусы  -  эти  вирус-за-яйца-выдирательные  механизмы берутся за дело со
 всей  своей  рьяностью,  выдирая  бедные  вирусы  за  их уязвимые @@; правда,
 иногда  под  руку попадается другие органы, и не вируса вовсе, а иногда, если
 вирус  крепко  держится  за  носителя, @@ ему и отрывают :( правда чаще всего
 еще  и  с  крупным  повреждением  этого самого носителя. Да, ведь даже другие
 вирусы - противники "нашего" бедного... Как же тут быть?
  Рассмотрим самые распространенные решения этой проблемы - проблемы выживания

------------------------------------------
 METHOD#1 - ИНТЕЛЛЕКТУАЛЬНОЕ РАЗМНОЖЕНИЕ
------------------------------------------
     Обычный (галимый) вирус размножается либо вообще только в текущей
 директории, либо по FindFirst, FindNext в попавшихся под руку каталогах.
 Понятно, что, если сделать выбор цели направленным, то есть контролируемым,
 то и распространение вира пойдет быстрее. Если вспомнить биологию, то
 возможно придет на ум та самая классификация живых существ по стратегии
 размножения:
                    R-стратегия - максимальная _численность_ детенышей.
                    K-стратегия - _забота_ о немногочисленном потомстве.

     По неумолимым законам природы животное может размножаться только по
 одной из вышеприведенных стратегий. (например, насекомые, большинство рыб,
 земноводные, моллюски, черви - R-стратегия, а теплокровные - K-стратегия).
     Если вспомнить вирлисты, то становится ясно, что похожее деление
 происходит и среди вирусов. Только разница там в том, что вирусы ограничены
 лишь размером, но ограничение все же позволяет ВОСПОЛЬЗОВАТЬСЯ ПРЕИМУЩЕСТВАМИ
 ОБОИХ СТРАТЕГИЙ ОДНОВРЕМЕННО (!). Просто выбор стратегии - уже на совести
 программиста. Правда, размножение по R-типу ограничено временем работы
 вируса, ну дык не целый же винт с одного раза заражать будем! (хотя,
 например, Zipper (cl) Light General именно так и поступал...)

     Что значит R-стратегия размножения для вирусов? Только одно -
 внушительное количество размножений за один цикл работы вируса.
 Понятно, что лучше подобную технологию использовать в паре с K-типом.
     Если нельзя увеличить численность "потомства" прямым путем
 (все равно получается медленно), то сделать это можно косвенно. Например,
 увеличив ЧАСТОТУ РАЗМНОЖЕНИЙ. "Но как, - спросите вы, - ведь вирус
      не может запуститься сам?". Что-ж, эту проблему решает резидентность.
    Да-да, будучи запущен один раз, вирус может засесть в памяти и творить
      там все что душе вирмейкерской угодно. Тут открывается обширное поле
     деятельности: работа со всеми дисками (и флопами тоже!), маскирование
 операций с дисками, путем работы до (или после) некоего действия с диском
 пользователя. Еще ведь исчезает проблема поиска жертвы как такового -
 пусть пользователь сам указывает, что и где находится!
  Пример:
        функция MS-DOS # 0Fh - открыть файл
                       # 10h - закрыть файл
          byte prt 0000:043F - статус флоп-мотора
  ну и прочее.
     Можно записаться в MBR, чтобы получать грузиться напару с системой.
  Это все для резидентов. Однако как выглядит интеллектуальное размножений
  для NON-TSR вирусов?

     Способ 1. Обычно в одной директории (без SUB-DIRs) находится одна
  конкретная программа, либо пакет программ. Как правило, для выполнения
  какой-либо задачи. Если программа не нужна, ее стирают. Так вот, если в
  этой директории штук 20 потенциальных жертв, неужели, попав в этот дир,
  вирус будет стараться заразить сначала их все, а уж потом выйти в UP-DIR?
  Но зачем? А сотрут прогу - и каюк вирусу? Ну нет.
    Смысл способа 1 : ЗАРАЖАЙТЬ НАДО УДАЛЕННУЮ ОТ СВОЕГО НОСИТЕЛЯ ЦЕЛЬ
  Можно перейти на другой диск, ну и т.д. Так вирус труднее поймать.

     Способ 2. Заразив прогу, запускающуюся при загрузке, вирус и не трогая
  MBR получит управление при включении компьютера. А это приятно. То есть:
      МОЖНО ПОПРОБОВАТЬ НАЙТИ ЗАПУСКАЮЩИЕСЯ ИЗ AUTOEXEC.BAT ПРОГРАММЫ

     Способ 3. Если вирус стартует с дискетки (а так может случится, и довольно
  вероятно), то не будет же он заражать что_то на этой дискете? Он ведь
  УЖЕ там (скопирован с носителем например). Так что же делать? На винт?
  На винт !!! А именно:
   НУЖНО СТАРАТЬСЯ ЗАРАЗИТЬ ПРОГРАММУ, НАХОДЯЩУЮСЯ (ПОПАДУЩУЮ) НА ДРУГОЙ КОМП

----------------------------------
 METHOD#2 - ПАССИВНАЯ МАСКИРОВКА
----------------------------------
       Шифрование вируса или носителя - вот что это такое. То есть, вирус,
 конечно, надо зашифровывать. Особенно это будет полезно, если ключ
 шифрования будет меняться от копии к копии. HLLP вирусам полезно шифровать
 часть носителя, тогда их нельзя будет курнуть оттуда Cure Modul'ом ADinf'a
       Шифроваться можно также находясь в памяти. Что, это просто? Нет,
 я имею ввиду не часть вира, текстовые строки там, я говорю про КОД вируса.
 Если вир шифровать, найти его в памяти будет сложновато. (конкретно - висит
 на 21h, основной блок зашифрован. При открытии файла вирус расшифровывается
 и заражает). Сплайсинг - лучший способ для TSRов скрыть перехват прерывания.
 (сплайсинг - это установка вместо оригинального начала обработчика прерывания
 перехода на... в общем, куда нам надо. Сплайсинг int10h - это бред. (10h-BIOS)
        Также за пассивную маскировку сойдет всяка бяка типа изменения длины
 файла в FAT и прочие примочки.

---------------------------------
 METHOD#3 - АКТИВНАЯ МАСКИРОВКА
---------------------------------
       Активная маскировка (защита)  - пожалуй, лучший способ остаться вирусу
 незамеченым (а это пожалуй самое важное). Все эти стелсы, фантомы,
 антитрассировочный код, antiWEB, другие наебки - это весьма круто.
           Несмотря на пренебрежительное ^^^^^^ название, реализовываться
 все это может очень и очень сложно. И хитро. Так что - пилите, Шура!
 То есть, грызите гранит науки! ВПЕРЕД, ВИРМЕЙКЕРЫ !

----------------------------------
 METHOD#4 - АГРЕССИВНЫЕ ДЕЙСТВИЯ
----------------------------------
       Ко всему прочему вирус может направленно портить, скажем, антивирусы,
 мешать размножению других вирусов ( "конкурентов" ), но это все раскрывает
 существование вируса и его начинают пытаться лечить. Также за "агрессивные"
 действия можно считать некие изменения с диском, которые без вируса приводят
 диск в негодность. Пример - OneHalf. Только тогда за потерю данных надо винить
 только антивирус, ибо это после его "лечения" данные пропадают.

       Пока все.

                                                                   с уважением,
                                                                   ThePretender