Далекий 1998 год. В компьютерный мир ворвалась новая защита от пиратства, которая спустя некоторое время станет одной из самых узнаваемых и известных DRM на свете. GTA IV, серия Command & Conquer, BioShock, The Witcher, WarCraft III, FarCry 2, TestDrive Unlimited, Gothic 4, Spore, Sims, — вот лишь неполный список бестселлеров, чьи OEP и CRC от посягательства пиратов пытался защитить автор SecuROM Рейнгард Блаукович. Он в поте лица работал над своим творением на компанию Sony DADC. В 2014 году с SecuROM будет связано одно из самых позорных и страшных поражений в истории DRM.

Рейнгард Блаукович как бы играет в пинг-понг с хакерами. И проигрывает!)
Рейнгард Блаукович как бы играет в пинг-понг с хакерами. И проигрывает!)
 

Как все началось

За окном мирно падал снег, начинался 2015 год. Блуждая по просторам интернета, я неожиданно для себя нашел на одном из хакерских форумов тему про взлом SecuROM 7 — именно седьмая и восьмая версии стали наиболее «любимыми». Тема датировалась 2007 годом и, судя по всему, эта версия только что появилась. В конце поста его автор сетовал на сложность защиты и говорил, что её нереально взломать и задавался вопросом, когда это сделают. Дочитав весь топик, мне оставалось только вскричать: «Да! Разобрать по винтикам мощную и непробиваемую защиту более чем реально!» Успешный разбор виртуальной машины, запуск игры в обход всей логики проверки компакт-диска без любимых «алкоголей» и Daemon Tools, кейген для онлайновой активации (PA Unlock), — всё это оказалось реально.

 

Виртуальная математика

INFO


Подробнее об устройстве виртуальной машины SecuROM читай в статье «Тибериумный реверсинг» («Хакер» №156 за апрель 2012 года).

Мне хорошо запомнилось, как в «Искусстве дизассемблирования» Крис Касперски описывал преобразование в байт-код как наиболее стойкую и мощную защиту от реверсинга. На ее преодоление хакеру потребуется чуть ли не вся жизнь и даже немного больше. Что до SecuROM 7.33.017, то на понимание принципов работы и разбор структуры виртуальной машины у меня ушло две полных недели, а уже через месяц я готов был написать декомпилятор.

Что для этого нужно? Всего лишь научиться мыслить так, как «мыслит» виртуальная машина, то есть рассматривать совокупность ассемблерного кода на еще более высоком уровне, чем какой нибудь С++. С другой стороны, если бы не запрятанные в коде строки ASCII с шутками разработчика, я бы мог подумать, что каждый раз ломаю одну и ту же виртуальную машину.

В двух словах, VM представляет собой совокупность независимых друг от друга кусков кода. Привычное слово «функция» к хендлам неприменимо хотя бы потому, что машинный стек здесь не играет основополагающей роли, как и регистры процессора (EAX, ECX, ESP и так далее). Если трассировать хендлы, склыдвается впечатление, что мы прыгаем по островкам. Роли хендлов бывают разные:

  • Стартовые хендлы. Инициализируют виртуальные регистры VM, вытаскивают ссылку на ленту p-code. Выполняются в самом начале.
  • Обычные хендлы. Выполняют примитивные операции — перекладывают данные, выполняют простые операции вроде XOR. 95% работы VM делают эти ребята.
  • Служебные хендлы. Отвечают за вызовы внешних функций, которые напрямую не относятся к VM, а также за их обработку и упаковку обратно в обменник VM. Восстанавливают реальное состояние стека и регистров CPU.
  • Хендлы выхода из VM. Их нужно искать в первую очередь. Знаем начало, нашли конец, значит цепочка вскрыта.

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи один материал

Заинтересовала информация, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для материалов, опубликованных более двух месяцев назад.


2 комментария

  1. A.T.

    07.08.2015 at 16:42

    Хороший материал в стиле Криса. Разминка для мозгов.
    Все понял и вспомнил молодость.
    Спасибо!

  2. ishayahu

    17.08.2015 at 00:36

    Номер журнала 159, а не 156

Оставить мнение

Check Also

Trend Micro: вымогатели будут использовать «Общий регламент по защите данных» в своих целях

Эксперты компании Trend Micro подготовили отчет, посвященный анализу проблем безопасности …