RCG (Random Code Generator). - 13:12 - by Shad0w
 
     Немного истории:
   Первоначально,  вирусы представляли собой маленькие, простые программы.
Они  должны были лишь уметь обнаружить цель и инфицировать ее. Эффекты, не
отно- сящиеся к основным функциям вирусов, я затрагивать не буду - слишком
много разных приколов понаделали.
   То  был "золотой век" технокрыс и юзерам в кошмарах снились злобные ви-
русы, стирающие нахуй их любимые игрухи. Однако не все коту масленница.

   В  настоящее  время  большинство  новых вирусов являются полиморфиками,
стелсами  и  т.д.  и т.п. Они маскируются, используют хитрые приемы, кое -
кто сделал попытку освоить protected mode. Однако AVP, DrWeb и им подобные
монстры  весьма  успешно  расправляются  даже с лучшими образцами вирусов,
хотя часто ловят конкретных тупарей ;)

   Но довольно о грустном.
   Каким  образом  современные  антивирусы детектируют полиморфные вирусы?
Ясное   дело,   эмулируют   код   расшифровщика  и  смотрят,  что  удалось
расшифровать.

        Чтобы им помешать есть три метода:
  1) Помешать эмулировать.
  2) Помешать анализировать.
  3) Стирать антивирусы к ебаной матери.

   Чаще  всего  применяют метод 1, т.е. антиэвристику. И это работает! Но
только  пока вир не попал к антивируснику. Можно написать зверя на пасКАЛе
и  вся  эвристика  снова  окажется  в заднице (и снова ненадолго). Но есть
второй  ва-  риант.  Что  самое  противное  в  антивирусах  с точки зрения
пользователя?  Тормозные  они  очень. А если мы сделаем декриптор размером
кило этак в 30, то сколько его эмулить придется? А если все файлы на диске
в  9Gb? Долго? Еще бы! А по личному опыту могу сказать: хрен юзер запустит
антихвирус  если  он работать будет долго и тормозно. Ну, впрочем, может и
запустит, если вывести на весь экран

                                "I am VIRUS":)


   Random  Code Generator - это программа генерирующая декриптор не содер-
жащий  какого-либо  конкретного алгоритма (в полиморфном коде присутствует
посто-  янный  алгоритм).  В  програмной  реализации этой идеи (SRCG 1.0),
декриптор   пред-   ставляет   собой  отдельные  инструкции  типа:  CHANGE
[ADRESS],[ARGUMENT]

  CHANGE = mov, xor, not, add...
  ADRESS = number, register, reg1+reg2...
  ARGUMENT = number, register...

   Расшифровывающие  инструкции  разбавлены мусором. ADRESS при шифровании
берется произвольно.

   Разумеется, такой декриптор занимает много места и не позволяет покрип-
товать  большой  блок  данных  (зато можно закриптовать второй декриптор -
обычный)   Необходимо   также   высокое  качество  кода  -  в  нем  должны
присутствовать   ВСЕ   основные   инструкции   80286,  иначе  можно  будет
подвязаться  например  под  то, что в проге начисто отсутствуют инструкции
INT xx.

   PS:  В будущем возможно добавлю генерацию внутри случайного кода блоков
обычного  полиморфного  кода  (антиотладочные приемы). Да и вообще в винды
пора!
                                        Shad0W