Ловим вирусы, исследуем угрозы, спасаем мир
147,34
рейтинг
7 марта 2013 в 14:11

Разное → Программисты старой школы: преклоняться или бояться? перевод

Это перевод поста, опубликованного в англоязычном блоге «Лаборатории Касперского».
Он не столько о вирусах, сколько о демосцене и лучших произведениях в этом жанре искусства.

Недавно Евгений Касперский опубликовал в своем блоге запись «Призраки вирус-оперы, или Ситхи Ассемблера», посвященную сверхкомпактным и мощным вредоносным приложениям, обнаруженным недавно, но написанным в стиле 15-летней давности. Мой возраст позволяет помнить этих парней и их блестящую работу – речь ведь не обязательно о создателях вирусов, они были лишь частью программистского сообщества, специализировавшегося на «ручном» написании кода и программировании на ассемблере. Это похоже на Джедаев и Ситхов из мира «Звездных войн» – существ, чье оружие, лазерные мечи, было крайне специфическим и, несмотря на это, воспринималось всеми остальными героями как одно из самых мощных (кроме шуток, спросите Йоду). Увы, похоже, людей, которые помнят этих мастеров-программистов, осталось трое (я, Касперский и Билл Гейтс). А если серьезно – в сегодняшнем мире, где драйвер мышки занимает 50 мегабайт, довольно трудно вообразить, на что способен хакер старой школы при совсем небольшом количестве выделенных ресурсов. Поэтому я решил показать, о чем говорит Евгений, на несколько ином примере – а вы уж решайте, насколько плохи новости об «олдскульных» авторах заразы.


Программисты старой школы и гуру Ассемблера - угроза безопасности


Калькуляторы под нагрузкой


В 1992 году компьютеры не были «мультимедийными» и представляли собой скорее калькулятор с большим экраном. На подавляющем большинстве из них не было ни микрофонов, ни приличной возможности воспроизводить звук – и, конечно, забудьте о веб-камерах. Там даже мышка была далеко не всегда, и первая сколько-нибудь популярная версия Windows, 3.1, вышла аккурат в середине весны. Но существовало несколько групп энтузиастов, которые любили трудные программистские задачи: использовать всю доступную память, систему команд процессора, а главное – каждый такт его мощности, чтобы выжать из компьютера 100% того, на что он способен. И в отсутствие звуковой карты, 3D-акселератора и всего того, что сегодня есть в каждом смартфоне, они заставляли те «калькуляторы» рисовать сложную 3D-анимацию с музыкой и спецэффектами и делать другие вещи, на первый взгляд невозможные. Демонстрация невозможного очень логично и кратко называлась «демо». Чтобы создать ее, нужно было быть действительно творческим человеком, в деталях, в том числе недокументированных, знать принципы работы системы, пить много кофе или чего покрепче, а главное – иметь заоблачный IQ. Само это движение, позже названное «демосценой», зародилось в середине восьмидесятых, но по законам эволюции рано или поздно его участникам потребовалось соревноваться между собой. Так родились фестивали-конкурсы создателей «демо», одним из крупнейших и самым известным стал The Assembly, впервые проведенный в 1992 году.

Assembly Party


Future Crew вернулись из будущего


В 1992 году группа скандинавских программистов под названием Future Crew вместе с друзьями из групп Complex и Amiga организовали мероприятие под названием The Assembly, чтобы показать миру результаты своей впечатляющей работы на Ассемблере и посоревноваться за звание «Лучший кодер года».
Демо – жанр компьютерного искусства, мультимедийная презентация, созданная для демонстрации возможностей и знаний в области программирования, графики, 3D-моделирования и создания музыки.
Вообще говоря было несколько номинаций, но самыми интересными, примерно как «Лучший фильм» и «Лучший режиссер» на «Оскаре», стали звание «Лучшая демо для ПК», аналогичные титулы для платформ Amiga и C64, а также отдельная (и особенно интересная нам сегодня) номинация «Демо размером менее 64 килобайт для ПК». В первых номинациях требовалось продемонстрировать максимум возможностей платформы, которые можно выжать при помощи оптимального, артистичного даже, программирования. Последняя была непроста – на хранение всей программной части, всех графических и звуковых элементов отводилось всего 64 килобайта. Это, безусловно, побуждало к элегантному и экономному программированию – ведь в объем, в котором сегодня еле помещается картинка среднего размера, создатели «впихивали» мини-фильм длительностью несколько минут.
В 1992 году в соревновании победила группа Future Crew с демо Unreal. Название было выбрано не зря – до тех пор никто не мог выжать из компьютера подобные графические эффекты: рендеринг сцен в трех измерениях и реальном времени, сложные физические вычисления и моделирование потоков света и т.п.

А самое интересное – все-все-все для запуска демо, включая музыку, помещалось в 1 Мб! Достичь этого можно было, только мастерски программируя на Ассемблере – за внешней простотой этого языка скрывается дьявольская его сложность и трудоемкость при написании больших программ, трудно не допустить ошибок. Вот что по этому поводу говорили мне ребята из Future Crew:
Обучение программированию демо – долгий и сложный процесс. Чтобы научиться как следует, уходят годы. Можно начать с языка высокого уровня (Паскаль или Си), а затем начинать эксперименты с Ассемблером. На то, чтобы все освоить, уходит много времени, много экспериментов, и способов сократить срок не существует. Основное занятие – понять, что вы сделали, потом менять программу и следить, что получается, и набирать опыт в том, как лучше всего решать те или иные задачи. Обучение качественному программированию требует терпения, энтузиазма и тучу времени!

Те, кто тогда участвовал в соревнованиях, стали Источником Вдохновения для разработчиков позднейших приложений. Нет, у них не крали идеи, но принимали на вооружение сами подходы к решению проблем и творческое видение. Из вдохновения Assembly выросли ВСЕ современные игры, продукты Adobe для работы с видео и графикой, прогнозы погоды, GPS-приложения и Google Earth – вся многомиллиардная индустрия компьютерной визуализации.


1993 – год Second Reality и Eclipse


Успех Assembly был так велик, что на следующий год число посетителей и количество работ на конкурсе удвоилось (этот тренд сохранялся многие годы, и с 1999-го The Assembly проводится на крупнейшем футбольном стадионе Хельсинки). На нем снова – совершенно заслуженно – победила работа Future Crew. Демо «Вторая реальность», Second Reality, подняла планку качества на огромную высоту и существенно повлияла на мир программирования.

Если графика вас не впечатляет, стоит вспомнить, что демо создавалась ДО появления самого первого процессора Intel Pentium и работала на компьютерах x486 БЕЗ графического ускорителя. Second Reality глубоко впечатлила жюри и все программистское сообщество, показав, чего можно достичь профессиональной работой с Ассемблером и минималистичным подходом, – скомпилированные файлы демо занимали около 1,5 Мб. Создатели, Future Crew, стали всемирно известны.

Это видео «За кулисами Future Crew» времен создания Second Reality.


В 1994 году первое место заняла демо Verses от группы EMC


Они продемонстрировали, что физические вычисления для реалистичного отображения воды и морфинг 3D-объектов вполне могут быть сделаны с помощью процессора Pentium.


А победителя в номинации 64 кб, Airframe группы Prime, можно назвать мамой и папой современных 3D-авиасимуляторов.

Просто чтобы показать, как быстро эволюционировал код с развитием компьютеров, приведем всех победителей с 1995 по 2012 год:


Победитель Assembly 1995: Stars группы NoooN




Победитель Assembly 1996: Machines of Madness группы Dubius




Победитель Assembly 1997: Boost группы Doomsday




Победитель Assembly 1998: Gateways группы Trauma



Это, кстати, предшественник визуального решения World of Warcraft и всех 3D MMORPG.


Эра тотального 3D


В 1999 году появился массовый видеоакселератор от 3DFX, изменив графику навсегда. И демо Virhe группы MatureFunk выжало из новой технологии все, чуть не взорвав мозг первых зрителей:


Assembly по-новому


С 2000 года правила немного изменились – пропало деление по платформам Amiga, PC и C64. Демо стали соревноваться в категориях Combined demo, Oldschool demo и 64kb limit intro. Последняя ушла в историю с 2010 года, но в конце поста вы увидите несколько по-настоящему фантастических примеров того, что может сделать гуру-кодер на Ассемблере всего с 64 кб.

Вот список победителей в категории Combined demo, где продемонстрировано высочайшее мастерство владения Ассемблером:


Победитель Assembly 2000: Spot группы Exceed



Эти впечатляющие световые эффекты – не забывайте! – созданы на технологиях тринадцатилетней давности!


Победитель Assembly 2001: Lapsuus группы Maturefurk




Победитель Assembly 2002: Liquid… Wen? группы Haujobb



Подчеркну еще раз, что основная причина компактности демо и причина восхищаться ими в том, что это не записанное заранее видео, а результат проводимых в реальном времени вычислений.


Победитель Assembly 2003: Legomania группы Doomsday.


Скажите «привет» основным консольным 3D-играм :).
И, я думаю, именно тогда родилось видение, каким будет Nintendo Wii:


Победитель Assembly 2004: Obsoleet группы Unreal Voodoo:




Первый приз Assembly 2005 получила демо Iconoclast группы ASD:




В 2006 году демо Starstruck группы Black Lotus снова совершила переворот


Создатели вышли на новый уровень сложности в программировании графики. Я бы сказал, планка снова поднялась, и сильно:


В 2007 году победила LifeForce группы ASD:


Еще одна фантастически красивая работа


2008 – год под знаком Эпсилон


A точнее – демо Within Epsilon группы Pyrotech:


Победитель 2009 года


И мой личный фаворит – Frameranger, созданная объединенными усилиями групп Fairlight, CNCD и Orange:


Победитель Assembly 2010: Happiness is right around the bend группы ASD

:


Победитель Assembly 2011 – Spin группы ASD:




А завершает этот ряд феноменальная работа 2012 года Spacecut групп Carillon и Cyberaid CNCD:




64 килобайта как вызов мастерству


Просто для понимания того, что девальвированные почти до «ничто» 64 килобайта – это очень много для профессионала, приведу несколько лучших примеров демо в категории «до 64»:


Che Guevara группы Fairlight – 2005 год:




Ну а тремя годами позже, в 2008 году, та же группа показала, до чего отточила навыки за это время и умудрилась запихнуть в 64 кб вот такое демо, заслужившее первый приз в категории – Panic room:


Но лучшее компактное демо за всю историю соревнований – это работа 2010 года X marks the spot группы Portal process:




А теперь вернемся к дню сегодняшнему. Все эти демо, особенно 64-килобайтные, показывают, каких результатов может достичь талантливый программист старой школы, если задастся целью, и если он является мастером Ассемблера, что не слишком распространено в наши дни, когда продукты создаются в визуальных средах и на языках высокого уровня абстракции – Java, и им подобных.

Представьте себе на минутку, что такой программист или группа вроде Future Crew бросает все эти упражнения с 3D и направляет всю энергию и энтузиазм на создание маленького приложения, которое крадет вашу финансовую информацию или помогает изменить калибровку промышленного оборудования – от центрифуги до ядерного реактора. Что думаете, у них получится? Насколько большим будет это приложение, с учетом их успехов на ниве 64к? Найдут ли они путь обойти защиту, встроенную в продукты Microsoft или Apple? Достаточно ли у них денег, если они успешно проводили мероприятие с бесплатным входом на 5000 посетителей в течение 20 лет?

Я не буду отвечать на эти вопросы. Сделайте это сами. Но когда я слышу от кого-то: «мой компьютер не требует защиты», я вспоминаю Second reality и начинаю молиться.

К счастью, ребята из Future Crew и сегодня очень заняты. Конечно, демо были увлечением молодости, а сегодня они заняты серьезным бизнесом. Как группа Future Crew не выпустили ничего после музыкального редактора Scream Tracker 3 (декабрь 1994 года), и, хотя официального роспуска не было, пути ребят разошлись во второй половине девяностых. Но частично или целиком из бывших участников Future Crew состоят многие известные и сегодня проекты: Futuremark (тесты 3DMark), Remedy (игры Max Payne, Death Rally, Alan Wake), Bugbear Entertainment (FlatOut, Glimmerati, Rally Trophy), Bitboys (компания-производитель графического оборудования, в дальнейшем купленная ATI), и т.п.

Хочется сказать им спасибо – они изменили мир, и показали, сколь многое возможно, если как следует подумать и приложить усилия. Это же видение мы используем при разработке Kaspersky Internet Security. Спасибо за вдохновение, ребята. И я искренне надеюсь, что ни один программист, когда-либо участвовавший в The Assembly не использовал свои знания и навыки для недобрых дел.
Автор: @Kaspersky_Lab Tyler Durden
Ловим вирусы, исследуем угрозы, спасаем мир

Комментарии (32)

  • –2
    От такого количества видео аж браузер подвис
    • –2
      FlashBlock вам в помощь
  • +4
    Click-to-Play встроен уже в нормальные браузеры и идеален.
  • +11
    Представьте себе на минутку, что такой программист или группа вроде Future Crew бросает все эти упражнения с 3D и направляет всю энергию и энтузиазм на создание маленького приложения, которое крадет вашу финансовую информацию или помогает изменить калибровку промышленного оборудования – от центрифуги до ядерного реактора. Что думаете, у них получится? Насколько большим будет это приложение, с учетом их успехов на ниве 64к? Найдут ли они путь обойти защиту, встроенную в продукты Microsoft или Apple? Достаточно ли у них денег, если они успешно проводили мероприятие с бесплатным входом на 5000 посетителей в течение 20 лет?


    Что-то не понял как это связанно с демками. Да люди знают ассемблер, да они могут написать крутой рендерер, но как они напишут вирус способный украсть мою финансовую информацию?
    • +2
      Есть некоторое сходство в этих направлениях программирования

      1. Работа на переднем рубеже технологий. Сейчас полно туториалов по той же «плазме» и других популярных эффектах в демках, как и по внедрению троянов в чужие процессы без использования «подозрительных» функций типа WriteProcessMemory, которая констроллируется антивирусом. Повторить всегда проще, а на момент выхода продукта это было потрясающее ноу-хау.

      2. Оригинальный подход к разработке алгоритмов. Независимо от того, надо нам в 700 байт написать движок мутации, который будет пересобирать код вируса в каждой копии, разбавляя его «мусорными» инструкциями и перемешивать код, не убивая функциональность. Или надо написать в 700 байт генератор вершин красивого фрактального 3d-объекта, стандартный подход не работает. (Под стандартным подходом я подразумеваю создание алгоритма с помощью декомпозиции на более простые задачи и тупое кодирование каждой элементарной подзадачи. В таком случае получаются тысячи и тысячи строк кода, что не укладываетс в лимиты)

      3. Тесная работа со структурами ОС (раньше — и железом). Откуда беруться все эти ресурсы для графики и звуков? Потрошим то, что стандартно есть в винде: шрифты, кусочки картинок.
      • +5
        В другой стороны, всем насрать — весит троян 12МБ или 20КБ.
        Плач сотрудников Лаборатории Касперского могу понять — им тяжко разбираться в очень плотном, сложном коде, а то и пропущенном через полиморфные движки. Куда проще, если зловреды написаны на C# и легко декомпилируюся/анализируются/лечатся.
        • НЛО прилетело и опубликовало эту надпись здесь
          • +2
            IMHO Большая часть магии в ужасном форматировании исходного когда. Благо в VS такое правится одной командой. :)
      • +1
        Почему вы считаете, что эти безусловно крутые профи, достигающие вершин в очень узкой и специфической области(по сути — спортивной дисциплине), будут писать вредоносный код лучше, чем такие же крутые профи, давно и успешно посвятившие себя написанию этого самого вредоносного кода? На том же самом ассемблере, кстати.
        • 0
          Прежде всего, «олд-скул» вирусный код в общем случае не лучше традиционного по функциональности.

          Как не-компьютерщикам в принципе нет разницы, смотреть готовое видео или реал-тайм рендеринг, умещающийся в 64КБ.
          Так и крошечный жутко закрученный код может уступать по функционалу традиционным монстрам, написанным на C++ по всем правилам современного программирования (модульность, интерфейсы, юнит-тесты). Покупателю (криминальному заказчику) пофиг на внутреннее устройство кода.

          Я же хотел отметить, что создание интрошек и олд-скул вирей требует похожего склада ума.
          Нужно любить ковыряться в файлах hex-эдитором, добираться до сути вещей (у демомейкеров — вручную генерировать звуковые семплы, процедурные текстуры, шейдеры а потом как-то передавать в API в обход обычных механизмов загрузки из внешних ресурсов с известными файловыми форматами, а у вирмейкеров — понимать тонкости загрузки exe-файлов, понимать как пристроить свой кусок кода к имеющемуся, а не банально загрузить готовый DLL, собранный линкером)
  • +5
    странно что тут в списке нет farb rausch. Эти парни в свое время отжигали, особенно со своими 64к вроде первого увиденного мной fr-08, от которого я до сих пор в шоке
    • +2
      Ещё нет conspiracy с их Chaostheory, memento, prophecy и RGBA 195_95_256. Да и многих других.
  • +1
    года примерно уже с 1998 демы не пишутся на ассемблере.
    я нисколько не принижаю техническую гениальность приведенных работ, но большинство дем гениальны еще и благодаря режиссерской работе.
    • 0
      А как пишут сейчас? Используют существующие графические движки или все так-же хардкор и все с нуля на С?
      • +1
        как правило у каждой группы свой самописный софт, называется demo tools.
        например вот от farbrausch
        github.com/farbrausch/fr_public
        • +1
          Здорово. Как раз гуглил на тему софта для визуализации. Смонтировать то ясно как, а 3D, видимо, проще самому запрограммировать, то что действительно хочется, чем пытаться нарезать из готовых.
  • +1
    Это 2000 год и весит всего 64к! Удивительно как её не добавили в пост!
    www.youtube.com/watch?v=Y3n3c_8Nn2Y

    Тоже слабо понимаю как навыки программирования качественной 3д графики могут превратить программиста в крутого вирусописателя :)
    • 0
      А вы что, не видели в кино, что все вирусы имеют крутую 3D-графику? Смеющиеся черепа, эффектное сжигание страницы с информацией и т.д.
    • 0
      Считаю эту работу вообще одной из лучших, что когда либо были.

      Еще есть совершенно офигеннейшая mesha.com (4кб битком набитых эффектами) и Still Suckig Nature которая вообще использует какой-то свой движок, не полигональный (воксели?) и выдавала просто потрясные по качеству и скорости изображение для тех лет.
  • +4
    Знаком с такими людьми.
    Работают в узкой нише, но то что они делают поражает.

    При мне их софт на ноутбуке на 3 порядка обогнал кластер из 6 серверов =)
    Результат работы был в разы лучше на ноуте.
    Вендор был в шоке=)

    Крутые перцы не оптимизируют код, они докупают железо.

    нюню=)
    • 0
      Офигеть, офигеть, офигеть!!!
      Извините.
      Посмотреть бы на таких людей, да послушать.
  • +2
    Посмотрел подборку и только сейчас связал два понятия. Демо-сцена и псай-транс фестивали. Вот кого надо на визуализацию приглашать!
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    В 1999 году появился массовый видеоакселератор от 3DFX, изменив графику навсегда. И демо Virhe группы MatureFunk выжало из новой технологии все, чуть не взорвав мозг первых зрителей:

    ютуб говорит «такого видео не существует»
  • +1
    .kkrieger — больше чем демка, целая игра!
  • 0
    Против этих гениев ваши антивирусы бесполезны. Несколько раз ловил неизвестные науке зловреды и руткиты, неизвестные ни одному антивирусу, отправлял их, и получал радостные письма через несколько месяцев «спасибо, мы проанализировали, это действительно вирус, добавили в базу».
    • 0
      Какими вы пользуетесь техниками для обнаружения руткитов?
      Хочется иногда проверять систему вручную, не прибугая к антивирусам.
      • 0
        Конкретно тот руткит был найден с помощью AVZ касперского.
  • 0
    Посмотрите «Zoom 3» (2003 год):
    and.intercon.ru/releases/pcdemo/zoom3/
    www.youtube.com/watch?v=HtJvSvQnep0
  • 0
    Негодная статья. Взята одна демо пати и произведён беглый обзор победителей. Размышления притянуты за уши. Его заставили писать статью что ли? С целью повышения продаж?
    Шедевры демосцены тут: pouet.net/prodlist.php?order=thumbup

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разное