СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

| сохранено

H Обзор систем защиты ПО для Windows от нелегального использования в черновиках Recovery Mode

В сети с завидной регулярностью (особенно на ресурсах, где обитают разработчики ПО) появляются вопросы типа: «допиливаю свою первую шароварку/программу, задумался над тем, какой протектор выбрать. Что посоветуете?». Как правило, ответы на такие вопросы содержат лишь названия нескольких протекторов (очень часто даже без ссылок на официальные сайты) и минимум информации о самих протекторах — «пользуюсь XXX, все устраивает» или «пересел с XXX на YYY, доволен, как слон». Некоторое время назад я сам был в такой же ситуации, и сделал свой выбор, не обладая всей полнотой информации — хотелось поскорее уже прикрутить защиту и выпустить продукт, и это желание не располагало к глубоким и вдумчивым исследованиям. Я сделал свой выбор, и в основном не жалею, хотя, после исследования, проведенного для данной статьи, я бы наверно размышлял несколько дольше.

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

Данная статья начинает небольшую серию статей, посвященную популяризации нашего продукта, но в данной статье он не будет упоминаться. В этой статье будут приведены лишь (по возможности) объективные сведения о возможностях, преимуществах и недостатках различных систем защиты ПО от нелегального использования.

Данная статья затрагивает только программные системы защиты (протекторы), защита ПО от копирования при помощи каких-либо физических носителей ключевой информации не рассматривается.

В данной статье рассматриваются системы защиты ПО, работающего под управлением ОС Windows различных версий, поддержка других операционных систем отмечается как опциональная возможность.



Краткое описание характеристик протекторов


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

мутация кода — это один из самых простых способов защиты, заключающийся в замене ассемблерных инструкий на их полные аналоги. Мутация кода не ухудшает (практически) быстродействие защищаемого кода, и предназначена для усложнения поиска типичных сигнатур кода, которые содержатся в используемых библиотеках и которые типичны для конкретных компиляторов. Также мутация предполагает переупорядочивание инструкций без изменения их результирующего действия. Мутацию кода также иногда обозначают термином metamorf.

виртуализация кода — данный способ защиты основан на замене машинного кода на байт-код виртуальной машины, которая встраивается в исполняемый файл или динамическую библиотеку. Этот метод защиты обычно представляет серьезную проблему для взломщиков. Протекторы, использующие виртуализацию, обычно генерируют новую систему байт-кодов виртуальной машины каждый раз при обработке защищаемого приложения, что делает краки и генераторы ключей для старых версий ПО несовместимыми с каждой новой версией.

обнаружение отладчика — данная функция позволяет запрещать выполнение защищаемого приложения под отладчиком.

обнаружение VM — данная функция позволяет запрещать выполнение защищаемого приложения в операционной системе, которая установлена на виртуальной машине, такой, например, как VMWare или VirtualPC.

защита памяти — данная функция позволяет защищаеть приложение от атаки путем снятия дампа памяти работающего приложения.

проверка целостности — данная функция позволяет обнаруживать попытки модификации кода и данных приложения во время выполнения.

защита импорта — данная функция позволяет прятать информацию об используемых в программе API.

защита ресурсов — данная функция предотвращает извлечение и модификацию ресурсов приложения (в системах Win32/Win64)

dll boxing — данная функция позволяет включать в защищаемое приложение библиотеки DLL, требуемые для его работы, при этом DLL входят в состав исполняемого файла и при выполнении приложения загружаются из памяти без промежуточной записи на диск.

размер защищенных файлов — часто обработка исполняемых файлов сильно увеличивает размер защищаемого файла. В настоящее время объемы исполняемых файлов и дистрибутивов обычно не являются проблемой, но могут быть случаи, когда размер защищенного файла является важным критерием. Данная характеристика может изменятся раз от раза при обработке приложения, но средняя величина обычно остается неизменной.

упаковка защищаемых файлов — при защите приложений протектор может также производить упаковку защищаемого файла для уменьшения его размера. Эта возможность может быть важна, если использование протектора приводит к значительному увеличению размера защищаемого файла.

поддержка x64 — 64 разряда давно вошли в нашу жизнь, и многие разработчики выпускают 64-разрядные версии ПО. К сожалению, не все производители протекторов радуют возможностью защищать такие приложения; у некоторых протекторов такая возможность предоставляется за отдельную плату.

поддержка .NET, Linux, Mac — дополнительные возможности по защите приложений .NET, а также приложений под операционные системы Linux и Mac

консольные утилиты — наличие у протектора консольных утилит (Win32), которые позволяют автоматизировать процесс защиты приложения.

короткие серийные номера — поддержка протектором коротких серийных номеров (вида XXXX-XXXX-XXXX-XXXX) вместо длинных (размером в килобайт, два, или более) ключевых файлов. Иногда короткие серийные номера называют кодами активации, чтобы отличать их от длинных ключей.

деактивация ключей — функция деактивации позволяет пользователю перенести программу на другой компьютер и активировать ее заново.

блокировка ключей — данная функция позволяет блокировать «утекшие» ключи. Особенно это полезно, если не используется привязка к обордованию. Обычно заблокированные ключи (вернее, обычно используются их хэши) защиваются в защищаемое приложение при его обработке протектором.

данные о покупателе — хранение данных покупателя — имя и email в ключе.

дополнительные данные — возможность добавления каких-либо данных в ключе для дальнейшего использования в защищаемом приложнии.

поддержка различных режимов активации — данная функция удобна для организации различных режимов работы защищаемого приложения — к примеру, одно и то же приложение может быть активировано в режиме «Trial», в обычном режиме («Std»), и в режиме «Pro».

поддержка HWID — часто требуется привязать программу к определенному компьютеру, чтобы ограничить ее нелегальное распространение. В то же время идентификатор оборудования не должен зависеть от установленной системы или ее версии, а также от аппаратных компонентов, которые наиболее подвержены возможности их замены. Данная характеристика будет указывать наличие возможности привязки к оборудованию, а также (если есть данные) о том, на основе чего вычисляется HWID. По возможности будут указываться наиболее полные сведения об уровне поддержки HWID.

наличие сервера активации — сервер активации обычно предполагает, что для приложения требуется активация. Данная опция помогает ограничивать нелегальное распространение ПО. В случае, если ключевой файл активации формируется единожды для заданного имени пользователя и/или его email'а существует возможность утечки данного ключевого файла в широкий доступ. Необходимость активировать приложение через сервер активации каждый раз при его установке снижает опасность нелегального распространения ПО совместно со скомпрометированными ключевыми файлами.

генератор ключей — дает возможность генерировать ключи для активации приложения в автоматическом режиме. Обычно это требуется для генерации ключей/серийников/кодов активации при продаже ПО через регистраторов. При этом генератор ключей располагается на вашем сайте и вызывается регистратором при осуществлении продажи ПО. Генератор ключей может быть приложением Win32, Linux программой, или может быть реализован на языках типа PHP. Последний вариант наиболее предпочтителен, так как не накладывает никаких ограничений на тип хостинга, на котором он будет располагаться.

поддержка регистраторами — многие регистраторы предоставляют интегрированные в свою систему генераторы ключей. Данная возможность может пригодится, если по каки-либо причинам нет возможности или желания устанавливать генератор ключей на свой сервер.

ложные срабатывания (false positivies) — эта характеристика протектора говорит о том, как часто защищенные протектором приложения могут быть определены антивирусным ПО как зловредные. Большинство разработчиков систем защиты взаимодействуют с производителями антивирусов, и стараются уменьшить количество ложных срабатываний при использовании протектора, но протекторы, разработка/поддержка которых приостановлена или заброшена, могут давать много ложных срабатываний, что, несомненно, добавляет головной боли пользователю такого протектора.

капризность — изначально данная характеристика называлась "стабильность", но противоположная характеристика — "капризность" более точно отражает смысл данного параметра. Капризность протектора определяет, насколько часто он дает сбои — как часто защищаемые им приложения становятся неработоспособны, насколько долго нужно колдовать над ключами и опциями защиты, чтобы получить защищенное работоспособное приложение. Нулевая капризность означает гарантированный работоспособный результат в при любых сочетаниях опций защиты.

простота интеграции — данная характеристика отражает простоту встраивания защиты и системы активации в ваше приложение. Поддержка системы активации включает в себя API для отображения диалогов активации/деактивации, API для сохранения ключевой информации в системе пользователя, и, по возможности, различные функции управления различными аспектами подсистемы безопасности Windows.

поддержка инсталяторов — данная характеристика отражает простоту встраивания системы активации приложения в инсталятор продукта. В некоторых случаях бывает удобно для конечных пользователей встраивать активацию приложения в инсталятор продукта, особенно если лицензии на использование приложения продаются пачками на 10-50-100-1000000 допустимых активаций. В подобных случаях особенно необходима бывает возможность silent-установки и silent-активации по заданным в командной строке параметрам.

Сравнение стоимости и актуальности версий


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

Для начала узнаем стоимость каждого из продуктов, актуальную на текущий момент версию (если она указана), и дату последнего обновления, чтобы оценить «живость» протектора.

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

Также, цена будет указываться не для отдельно покупаемого продукта и/или компонента, а с учетом скидки, которые некоторые производители дают при покупке нескольких компонентов одновременно (если такая возможность существует и я смог ее найти).

Различные цены для индивидуального разработчика и для компаний будут обозначены буквами P и C соответственно, если нет единой цены.

Цены для Lite редакций и подобных облегченных версий я не стал приводить, так как в большинстве своем они мало на что пригодны и обычно требуют слишком большого объема работ по допиливанию до приемлемого состояния.

Таблица 1. Общие сведения
Протектор Стоимость Версия Дата
последнего обновления
ASProtect
http://www.aspack.com/
ASProtect32: P €173, C €405;
ASProtect64: P €144, C €376
2.70
2013.1
13.12.2013
18.04.2012
DotFix NiceProtect
http://www.niceprotect.com/
P $99, C $199 4.5 26.09.2013
Enigma Protector
http://enigmaprotector.com/
32-bit: P $149, C $299
64-bit: P $149, C $299
4.00 04.03.2014
ExeCryptor
http://www.strongbit.com/execryptor.asp
$135/$199/$475/$749 2.3.9 20.03.2006
IntelliProtector
http://www.intelliprotector.com/
помесячная оплата - -
LimeLM
http://wyday.com/limelm/
помесячная оплата - -
Obsidium
http://www.obsidium.de/
x86: P €139, C €289
x64: P €139, C €289
x86+x64: P €219, C€529
1.5.0 10.03.2014
Oreans Themida/WinLicense
http://www.oreans.com/
Themida x32 P €149, C €299
x32/x64 P €199, C €399
WinLicense x32 P €349, C €699
x32/x64 P €399, C €799
2.2.7 18.12.2013
PC GUARD
http://www.sofpro.com/pc.guard.htm
x86 Sinle license €249.95
x64 Sinle license €299.95
Activation Suite €249.95
Activation Center €399.95
AC generator API €99.95
AC generator Web €99.95
6.00.0090 05.02.2014
PELock
http://www.pelock.com/
P $89, C $289 1.0694 26.01.2012
Safengine
http://www.safengine.com/en-us/products/protector/
Protector: P $366, C $660
Licensor: P $599, C $1025
NetLicensor: P $1199, C $2050
- -
Setisoft Private exe Protector
http://private-exe-protector.com/
$110
Source: $1650
4.4.0 01.03.2014
SoftwareKey Protection PLUS
http://www.softwarekey.com/
Pro $349
Enterprise: $499
Internet: $799
Сервер активаций с помесячной платой

5.13.4.0 31.12.2013
SoftwarePassport (Armadillo)
http://www.siliconrealms.com/
- 9.62 07.06.2013
StarForce ProActive
http://www.star-force.com/
- - -
VMProtect
http://vmpsoft.com/
Ultimate: P $399, C $599
Pro: P $199, C $399
Lite: P $129
WebLM: $49.50
2.13 11.05.2013

Идея начать изучение протекторов с цен и времени последнего обновления оказалась удачной — некоторые протекторы не прошли этот тест и уменьшили количество вариантов для дальнейшего изучения.

ExeCryptor выбыл из сравнения, так как обнаруженная на сайте дата обновления демки — 2006 год — показала, что этот протектор может представлять интерес только для историков IT.

PELock тоже было решено не рассматривать дальше, так как последнее обновление было два года назад; поддержка x64 похоже отсутствует, в списке поддерживаемых систем нет Windows 7/8/8.1.

IntelliProtector и LimeLM выбыли из сравнения, так как они представляют собой не продукты, которые можно купить один раз и пользоваться до пенсии (если, конечно, не интересны обновленные версии), а сервисы по активации приложений с помесячной оплатой и ограничениями по количеству продуктов и числу активаци, в зависимости от выбранного тарифного плана.

Было решено исключить из рассмотрения Safengine — протектор производится китайцами, и помимо раздражающих всплывающих окошек на сайте на китайском языке, я предположил потенциальные проблемы с поиском информации по нему. В итоге я все же хотел дать китайцам шанс, тем более, что кроме собственно протектора, производитель предлагает и решение для управления лицензиями, но справка на китайском языке в скачанной демке не оставила мне выбора.

По протектору SoftwarePassport я не смог найти цен и ссылок на покупку; в сети нашел информацию, что продажи приостановлены с середины лета 2013 года. Возможно, что SoftwarePassport предоставляется бесплатно при использовании регистраторов, принадлежащих Digital River: RegNow, ShareIt, RegSoft, eSellerate, SWREG, MyCommerse. Но данное предположение не основано на каких-либо известных фактах, поэтому SoftwarePassport также исключается из обзора (в данный момент я ожидаю коментариев от представителя Digital River, и, возможно, по данному протектору вскоре появятся дополнения).

StarForce ProActive был исключен по следующим причинам:
  1. не удалось найти информацию по ценам;
  2. для получения триала нужно заполнить форму и ждать, пока его вышлют (или вышлют ссылку на скачивание);
  3. не удалось найти информацию о дате выпуска последней версии;
  4. был неудачный опыт использования продукта, защищеного StarForce'ом — попросили установить игру, при установке выяснилось, что она защищена StarForce'ом и устанавливает драйвер, который работает в XP и не работает в Windows 7. Возможно, сейчас ситуация стала лучше, но вообще в интернете нашлось много жалоб на данный протектор.

StarForce ProActive, как показалось, больше ориентирован на защиту различного контента, для защиты именно приложений компания предлагает протектор ASProtect, по которому информация более доступна.
Также, мы попытались связаться с ними, и получили следующий ответ (цены округлены):
Предложение от StarForce
Выбранный вами продукт защищает исполняемые файлы и другие с привязкой к оборудованию, активация через интернет.
Есть вариант минимальной защиты (Basic), есть максимальной (Pro). Функционал обширный, как правило каждый выбирает что наиболее приемлемо в его, конкретном случае.
Стоимость продукта складывается из стоимости лицензии на защиту на полгода Basic 9 т. руб., Pro 14 т. руб. На год соответственно 15 т. руб./21 т. руб.
+ стоимость серийных номеров в Basic по N руб., в Pro по 3N руб.
Есть дополнительные опции — деактивация по 7 т. руб., редактирование серийных номеров по 7 т. руб. (в Basic недоступно).

Также в обзор я вообще не включил Dyamar protector — похоже, он давно умер, и на сайте нет уже никаких упоминаний о нем; и XHEO/DeployLX — данный протектор защищает только .Net приложения.

Результаты первичного обследования


По результатам предварительного анализа можно сказать, что в общем и целом цены на протекторы держатся примерно на одном уровне. Если есть желание сэкономить и не требуется поддержка x64, то некоторые производители предоставляют такую возможность.

Также актуальность версий у протекторов, которые прошли во второй тур, примерно на уровне. Исключение составляет, пожалуй, лишь VMProtect. По слухам, его автор вовсю пилит версию 3 с новыми фичами; и хотя версия протектора сравнительно давно не обновлялась, автор им занимается, отвечает на запросы довольно оперативно. Если судить по датам выпуска предыдущих версий, этой весной стоит ждать очередного обновления.

Поддержка методов и технологий защиты


Детальное сравнение протекторов начнем со сравнения их основных характеристик — поддерживаемых технологий защиты кода и методов противостояния взломщикам.

Символом '-' я буду отмечать, что технология не поддерживается, сиволом '+' — что технология поддерживается в базовой комплектации, и символом '$' будет отмечаться то, что технология поддерживается в какой-либо расширенной редакции, доступной за дополнительную плату.

Символом '?' я буду отмечать, что не нашел сведений о поддержке данной технологии (но не факт, что она отсутствует).

В колонке «Защита импорта» в скобочках проставляется защита entry point.

В колонке «Защита импорта» в скобочках проставляется защита entry point и/или дополнительное сокрытие используемых функций API.

Таблица 2. Поддержка методов и технологий защиты
Протектор Мута­ция кода Виртуа­лизация Анти­отлад­ка Обнару­жение VM Защита памяти Проверка целост­ности Защита импорта Защита ресурсов Dll boxing
ASProtect - - + - + + + (+) + ?
DotFix NiceProtect + + + ? ? ? ? ? ?
Enigma Protector ? + + + ? + + (+) + +
Obsidium - - + + + + + ? ?
Oreans Themida / WinLicense + + + + + + — (+) + +
PC GUARD ? ? + + + + + + -
Setisoft Private exe Protector - - + - + - - Опция «краденые ресурсы»? -
SoftwareKey Protection PLUS + + + +, включая гипервизоры Hyper-V и подобные + + - + -
VMProtect + + + + + + + (+) + (выборочно) $ (Ultimate)

Символом '*' в следующей таблице я буду отмечать, что размер приложения увеличивается после обработки протектором, но более точных сведений об этом нет. Цифра будет обозначать примерное увеличение размера исполняемого файла.

Таблица 3. Размер, упаковка, поддержка различных систем
Протектор Размер Упаков­ка Шифро­вание Под­держ­ка x64 Под­держ­ка .NET,
Linux, Mac
Кон­соль­ные утилиты
ASProtect * + + $ - +
DotFix NiceProtect * + + ? ? +
Enigma Protector * ? ? $ .NET +
Obsidium * + + $ .NET +
Oreans Themida / WinLicense * + ? $ .NET SDK
PC GUARD * ? + $ $ (PC GUARD FOR .NET) -
Setisoft Private exe Protector *
(опции «оставить размер» и
«увеличить размер»?)
см. «Размер» + (как заявлено) + - -
SoftwareKey Protection PLUS незначителльное увеличение + + - - +
VMProtect 2 + + + ? $ (Ultimate)


Таблица 4. Поддержка активации и лицензирования
Протектор Короткие серийные номера Деакти­вация ключей Блоки­ровка ключей Данные о покупа­теле Дополни­тельные данные Поддержка различных режимов активации Поддержка HWID
ASProtect + ? + ? ? до 15 гибко настраивается
DotFix NiceProtect - - - - - - -
Enigma Protector - ? + + - + гибко настраивается
Obsidium + ? ? ? ? + гибко настраивается
Oreans Themida / WinLicense ? ? Есть, также бан по HWID + + + Есть
PC GUARD + (нет длинных) - + - + (16 feature-флагов) Демо режим с настраиваемыми ограничениями Machine locking
Setisoft Private exe Protector ? ? + ? - Триал режим с настраиваемыми ограничениями +
SoftwareKey Protection PLUS + - ? ? ? Trial, rental +
VMProtect + (коды активации) + + + до 255 байт Mod'ы и пользовательские данные Есть


Таблица 5. Поддержка активации и лицензирования — Продолжение — Серверная часть
Протектор Сервер активации Генератор ключей Поддержка регистра­торами
ASProtect - Win32/Linux -
DotFix NiceProtect - - -
Enigma Protector Offline, Online ? Win32/Linux -
Obsidium Нет, есть SDK Win/Linux Нет, есть SDK Win/Linux -
Oreans Themida / WinLicense Offline: WinLicense ($); online: Win32 SDK Win32 SDK -
PC GUARD Web ASP.NET Web ASP.NET -
Setisoft Private exe Protector Не понятно Не понятно -
SoftwareKey Protection PLUS $ (SOLO server) + -
VMProtect $ (PHP WebLM) Offline; $ (WebLM) payProGlobal


Таблица 6. Субъективные критерии
Протектор Ложные сраба­тывания Ка­приз­ность Простота интеграции Поддержка инсталляторов
ASProtect ? ? ± ? -
DotFix NiceProtect ? ? ? -
Enigma Protector ? ? Есть встроенная поддержка активации, диалоги, напоминания -
Obsidium нет 0 Есть встроенная поддержка активации, диалоги, напоминания -
Oreans Themida / WinLicense ? ? Есть встроенная поддержка активации, диалоги, напоминания -
PC GUARD ? ? Есть встроенная поддержка активации, диалоги, напоминания -
Setisoft Private exe Protector ? ? Есть некоторая встроенная поддержка активации, диалог
SoftwareKey Protection PLUS нет 0 ± -
VMProtect нет; активно взаимо­дей­ствуют с анти­вирусными компаниями 0 Сложно; полная поддержка доступна при использовании стороннего ПО для версии Ultimate Сложно; полная поддержка интеграции с InnoSetup доступна при использовании стороннего ПО для версии Ultimate

Небольшой субъективный обзор


Отмазка aka disclaimer


Информация, представленная в таблицах сравнения выше, не всегда была получена в процессе глубокого исследования или использования рассматриваемых протекторов, большую часть ее я получил, изучая сведения, опубликованные на сайте производителя протектора; также некоторое впечатление и часть иноформации я получил, запуская демки протекторов, если их можно было скачать. Так что все представленные сведения я рекомендую рассматривать с некоторой долей скепсиса.

Также я не могу вам обещать, что заявленая поддержка той или иной функции защиты (или сопутствующей функции) отвечает всем предъявляемым к ней требованиям. Тем более я не буду ничего говорить о качестве реализации той или иной функции, а также пытаться сравнивать их реальные технические характеристики и делать выводы о качестве их реализации.

ASProtect


Отечественная разработка.
Достоинства: эмуляция системных функций, защита импорта, защита точки входа.

Также вроде есть встроенная система активации, но поверхностный осмотр мало что подсказал, обнаружилась только опция подключения кастомного UI.

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

В данное время принадлежит Star Force, и, похоже, находится в фазе стагнации, вроде жив, но апдейтится только по особым случаям вроде выхода новой версии Windows. Саппорт также не слишком отзывчивый. Ходят слухи, что к нему существуют универсальные кейгены.

Скриншоты ASProtect








DotFix NiceProtect


Малоизвестный в ру-нете протектор с небольшим количеством функций, тем не менее предлагающий опции мутации кода и виртуализации.

Недостатки: из UI есть только два диалога (сообщения) — стартап сообщение о демо-версии и сообщение об обнаруженом отладчике; не обнаружено никаких признаков серийных ключей и подсистемы лицензирования.

В дистрибутиве обнаружен текст лицензии на русском языке, что намекает на потенциально возможную русскоязычную поддержку.

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

Скриншоты DotFix NiceProtect







Enigma Protector


Достоинства: поверхностный обзор показал очень богатый набор функций, пожалуй, наиболее богатый среди всех исследованных протекторов; есть защита импорта, эмуляция и перенаправление (redirect, опция предназначена, видимо, для более полного сокрытия используемых функций) функций WinAPI; богатейший набор различных проверок (Check-up).

Явных недостатков поверхностное исследование не выявило, что делает этот протектор, в купе с приемлемой ценой на раздельные x86/x64 версии, одним из главных претендентов на победу.

Скриншоты Enigma Protector













Obsidium


Достоинства – возможность автоматизации защиты и интеграция со средствами разработки (post-build step); защита .NET приложений; невысокая цена. Также удобно, что в протектор встроена система активации и управление хранением ключевой информации на компьютере пользователя; гибкость конфигурации — можно сэкономить, купив только x86 версию.

Недостатки: небольшое количество функций; отсутствие виртуализации кода (хотя на сайте code virtualization декларируется для обоих — x86/x64 версий).

Автора можно найти в LinkedIn, он отвечает на вопросы там в течении нескольких дней, предлагая перенести общение в почту.

Скриншоты Obsidium










Oreans Themida/WinLicense


Неплохой протектор с набором опций немного выше среднего, за дополнительные деньги доступен сервер лицензирования (WinLicense), что упрощает продажу ПО, защищенного данным протектором.
К недостаткам можно отнести высокую цену (к тому же в евро), если покупать полный комплект предлагаемого ПО. Также функция Dll boxing'а предлагается, насколько я понял, в виде отдельного пакета/приложения, что еще больше увеличивает цену.

Из достоинств можно отметить, что Dll boxing можно применять не только собственно для dll/ocx и других исполняемых файлов, но и файлам контента, например видео.

Скриншоты Oreans Themida








Скриншоты Oreans WinLicense







PC GUARD


Малоизвестный протектор, но обладает довольно богатым набором опций.
Предлагает несколько вариантов связки защиты/лицензирования (как я понял, в связке с предлагаемыми отдельно серверами активации).

Недостаток — довольно большая цена, если приобретать полный комплект ПО.

Скриншоты PC GUARD









Setisoft Private exe Protector


Обладает спартанским набором функций, что делает его очень похожим на «DotFix NiceProtect»; тем не менее обладает некоторым зачатками системы лицензирования

Цена на протектор довольно гуманна, есть возможность прикупить и исходные тексты протектора (но уже по не совсем гуманной цене).

При запуске зачем-то запрашивает повышение привилегий, но возможно, программы, им защищенные, не обладают этим недостатком.

Скриншоты Setisoft Private exe Protector







SoftwareKey Protection PLUS

Отзыв от пользователя SK Protection PLUS

Не особо известный в ру-нете, но довольно хороший протектор. Малое количество взломов ПО, которое его использует. Очень хорошая система онлайн-активации SOLO Server позволяет полностью автоматизировать процесс, включая возможность использования получения ключей активации для компьютеров не находящихся в сети и удаленного включения/отключения лицензий.

Основными достоинствами является очень хорошая защита от взломов протектора, большое количество возможностей самого протектора. Так же не маловажным может оказаться поддержка Active-X компонентов и возможность создания сетевых лицензий с собственным сервером активации.

Недостатки – мало известен в русскоязычном коммунити, нет поддержки на русском языке. Высокая цена.

Примечание: скриншотов для SoftwareKey Protection PLUS нет, так как без запроса демку скачать не удалось.

VMProtect


Отечественный протектор, автор которого регулярно появляется на RSDN.RU в разделе «Shareware» и оперативно отвечает на вопросы как там, так и в личной пересписке.

Протектор обладает джентельменским набором опций, при покупке версии Ultimate появляется возможность приобрести сервер управления лицензиями с генератором ключей WebLM с 50% скидкой (за $49.9).

Достоинства: сервер лицензирования WebLM написан на PHP, очень просто устанавливается при помощи мастера и скорее всего, вызовет минимальное количество проблем при установке. Для нормальной работы сервера WebLM нужна библиотека PHP для работы с большими числами, которой у меня на хостинге не было, но хостер без вопросов добавил ее поддержку на следующий день после запроса. Также, насколько я знаю, генератор ключей вскоре должен быть переписан с использованием функций OpenSSL, так что проблемы с хостингом сервера лицензирования стремятся к 0.

Сервер активаций WebLM настраивается на использование различных регистриторов, есть возможность ограничивать доступ к генератору ключей по спискам IP-адресовю

Ознакомиться с возможностями WebLM можно на сайте производителя протектора (логин/пароль: admin/admin).

Есть возможность создавать различные версии лицензии (называются модами), также есть удобная возможность к каждому варианту лицензии добавлять пользовательские данные размером до 255 байт.

Автор активно взаимодействует с производителями антивирусов — в процессе поиска информации по протектору он был неоднократно замечен на форумах поддержки различных антивирусов.

Из недостатков можно отметить отсутствие функций для упрощения встраивания лицензирования в приложения, но данная проблема решается сторонним ПО, которое попутно решает и некоторые другие вопросы, а также поддерживает встраивание активации в инсталяторы InnoSetup и поддерживает silent установки.

Скриншоты VMProtect




Пожалуй, все


Целью данного обзора было помочь вам выбрать два-три протектора для дальнейшего детального исследования при выборе способа защиты для своего приложения, и, надеюсь, данная статья поможет сделать этот выбор и сэкономит вам некоторое время.

Но продолжение следует


Как вы уже поняли, у меня ещё есть что сказать, и я обязательно напишу о проблемах, которые встали передо мной в процессе интеграции протектора в свою программу. Если прирасту кармой ;)

комментарии (129)

0
+2 –2
ValdikSS ,  

Начало неплохое, но большое количество вопросов в таблицах еще больше запутают людей, которые выбирают протектор. Ну и следует помнить, что любой протектор ломается, даже тот же VMProtect, который, пожалуй, на сегодняшний день является лучшим выбором.

0
+1 –1
kruzhevnik ,  

Я в начале статьи вроде писал, что знак вопроса это примерно как отсутствие фичи — по слухам — фича вроде есть, кто-то слышал, но я не нашел.
Если кто-то из читателей аргументированно уточнит любой из вопросиков — буду только рад.

+24
lovecraft ,  

Спасибо за подробную статью.

Но у меня вопрос — разумно ли в наше время защищать приложение при помощи протекторов, которые модифицируют программный код? Эта технология была очень популярна в 2000-х, но сейчас она явно «не на коне», потому что защита ПО при помощи откровенно «хакерских» методов вроде мутации кода и противодействия отладчикам приносит конечным пользователям софта (и вам, как продавцу) определенные проблемы, при том что защита ПО, за которое пользователь заплатил деньги, вообще никаких проблем приносить не должна. Всякие SecuROM и StarForce доставили издателям множество хлопот (и издатели отказались от них) именно потому, что полагали, будно пользователь должен доказывать, что он приобрел легальную программу. При этом сложные протекторы имеют проблемы с работой на устаревших или, наоборот, только что вышедших ОС и т.п. Даже бухгелтерские продукты 1С, которые славились аппаратной защитой (для 1С7.7 криво работающей в терминальной сессии и требующей обязательно не LPT, a USB ключей) с 8-ой версии принимают не только аппаратные ключи, но и ключевые файлы, что, несомненно, является ослаблением защиты, но зато удобнее для пользователя
Это, так сказать, одна сторона медали.

Другая сторона заключается в том, что вашу прогамму все равно сломают. Это следует из того, что ваша программа вообще способна исполняться на ПК. Раз так, то можно подобрать такие условия, что ваш софт будет работать и без лицензии. Например, несмтря на всю защиту, регулярно появляются взломанные версии Автокада, Компаса, 1С и т.д. Так стоит ли тратить время и, самое главное, деньги на то, что все равно бесполезно?

На мой взгляд, вся защита в наши дни должна сводиться к самописной защите с серинным номером (которая, конечно, ломается в отладчике за минуту, но все ли ваши пользователи владеют отладчиком?). Серийнмик, при желании автора, может проверяься через Интернет.

И еще, не смотрели ли вы в сторону площадок распространения типа Steam?

+6
FSA ,  

Помню как-то в начале 2000-х девушка моя тогдашняя работала в одной фирме и занималась 1С. Нужно было переустановить систему на компьютере. Сделать это было просто. Потом накатили на неё 1С. Но то ли порт на системнике был полудохлый, то ли ключ аппаратный, то ли драйвер ключа кривой, но программа запускалась через раз. В конце-концов воткнули саблю (софтовый эмулятор ключа) и забыли о проблеме. А аппаратный ключ оставили в системнике, на случай проверок чтобы предъявить могли.
Я не понимаю современный производителей ПО. У нас в стране такие драконовские законы вводят, что фактически все мы преступники. А они ещё и защиту от пользователя умудряются ставить.

–4
+4 –8
kruzhevnik ,  

Вы очень много написали, но попробую ответить, может и несколько невпопад ;)

Star Force — у них своя ниша, для обычной шароварки они не подходят — вы невнимательно читали.

Далее — хорошие программные протекторы ПО работают как минимум с системами от W2K/WXP до W81 (мой софт, кстати, тоже Win9X не поддерживает).
Так вот, нормальный разработчик живого протектора работает с антивирусными компаниями практически в режиме реального времени, и разработчик протектора, на котором я окопался, один из таких энтузиастов — проблема может возникнуть, если чума поразит всю команду
разработчиков, во что я не верю.

Далее. Взломанные версии Автокада, Компаса etc появляются регулярно. Стоит ли тратить время на создание таких продуктов, как Автокад или Компас, все равно же их сломают. Стоит ли тратить время на жизнь, когда ты знаешь, что кто угодно может ее поломать?

+4
lovecraft ,  

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

Я только беспокоюсь, не превысят ли финансовые затраты на протектор и репутационный вред от отго, что кто-то не смог запустить вашу программу на каком-нибудь Window XP без SP, или, не приведи Господь, Windows 2000 SP3, а потом написал гневный отзыв на форуме, преимущество от того, что вашу программу станет «спиратить» несколько труднее?

Если вам угодно, не могли бы вы назвать ту программу, над которой вы работаете? Я думаю, на Хабре найдутся как желающие приобрести ее, так и желающие попробовать ее защиту на прочность и, естественно, рассказать нам о результатах )

–3
+1 –4
kruzhevnik ,  

1) не беспокойтесь
2) не беспокойтесь за меня
3) я не занимаюсь протектором не работаю над ним

+2
Anakros ,  

Стоит тратить время на создание качественного и удобного продукта, который хочется купить, а не возиться с кряками.

+2
d_olex ,  
Другая сторона заключается в том, что вашу прогамму все равно сломают.

Нет не все равно.
Взломают только в том случае, если экономический профит от взлома будет превышать затраты на его реализацию. Никто не будет трахаться со снятием условного VMProtect что бы крякнуть шаровару стоимостью в условных пару сотен $.
+1
+2 –1
Athari ,  

Вопрос в популярности шаровары. Если что-то очень известное, то и при цене в $10 взломают. Если что-то нужное одному человеку на миллион — поленятся и при цене в $10 000.

+1
d_olex ,  

Если вы знакомы с реверс-инженерами которые готовы за $10 браться решать задачи вроде снятия VMProtect-а — срочно присылайте же контакты, я их работой до пенсии завалю.

+1
Athari ,  

Есть разница между работой за деньги и работой для души, из чувства соперничества и т.п. Вы про первое, я про второе. Те, кто ломает десятибаксовую шароварку для души не будет ковыряться с нужным только вам софтом за сто баксов.

+2
d_olex ,  

Круг людей которые готовы «для души» реверсить серьезные протекторы использующие виртулаьные машины настолько исчезающе мал, что ним можно пренебречь. Там далеко не тот порядок работы, которую можно проделать руководствуясь исключительно фаном.

0
denisgorbunov ,  

А откуда тогда кряки практически на все что угодно?

0
kruzhevnik ,  

То-то когда кряк ищешь, либо на варез-сайт с вирусней попадаешь, либо старье находишь, либо прога была колхозным протектором запротекчена.

ЗЫ Кряки давненько не ищу, просто по старой памяти ;)

+1
d_olex ,  

Так большая часть проприетарного софта не накрыта сколь-нибудь серьезными протекторами, отсюда и иллюзия что можно что угодно на коленке взломать.

–2
+1 –3
Godless ,  

Разумно защищать, хотябы ради того, чтоб стороннее ПО и вирусня не читала память.
При любой защите нужно помнить про стойкость цепи и слабость конкретного звена. И рассматривать всегда в комплексе.
А идеальных протекторов нету, да. Но части функционала вполне себе можно грамотно реализовать самому.

0
denisgorbunov ,  

«но и ключевые файлы, что, несомненно, является ослаблением защиты, но зато удобнее для пользователя»

Щас. Аппаратные ключи убраны для снижения себестоимости.
По удобству — не столь уж и круто.
Три активации и при смене какой-нибудь детальки компьютера — и пишите письма в 1С. 1С и сама это поняла посему на такие письма реагирует без проволочек.

+1
lightman ,  

Моё имхо, как разработчика, так и пользователя огромной кучи софта (большей частью — изредка или одноразово): в 2014 году следует защищать софт только от кражи (ой, о чём это я, в интернете же нельзя украсть, можно только скопировать) используемых в коде решений. Защищать же от… бесплатного использования если и стоит, то достаточно условно, например серийным кодом, который проверяется только самой программой, но не в интернете.

Вот пример. Один мой друг рассказывал: он регулярно пользуется двумя программами. Одна из них разрабатывается известной в узких кругах фирмой, который имеет славу производителя очень приятных для использования программ. Вот именно так — «приятных»; многие пользователи, как и мой друг, славят её за удобство, функционал, дизайн. И вершиной полной повёрнутости лицом к клиенту служит то, что программой очень легко воспользоваться, эм, в долг. Легко и просто вводится ключ, который мгновенно принимается и ни разу не слетает. Друг, на момент начала использования программы, будучи студентом, не мог совершить официальную покупку сразу, поэтому с радостью воспользовался возможностью поработать в долг, заработал с помощью программы денег и купил её.

А ещё он рассказывал про другую программу. Чтобы воспользоваться ей в долг нужно изрядно помучиться, заблокировать кое-что в брандмауере, обновлять её только в вручную и совершать некоторые другие утомительные действия. В итоге он минимизировал насколько возможно использование этой программы, при этом пользуется он совсем не официальной, но не доставляющей проблем portable версией, а разработчики, увы, не заимели шанса получить безусловно заслуженную оплату ни сейчас, ни позже.

Все персонажи и истории вымышлены и являются плодом фантазии автора, все совпадения случайны.

0
kruzhevnik ,  

Частично согласен с вами. Я считаю, что не так важно, как хорошо защищена программа, как важно то, как она себя преподносит. И насколько она функциональна и до покупки.
А если пользователь купил ее, то ему должен быть отослан серийник, который он вводит (без какого-либо гемора, копипастой той же) в нужное поле. Массовому пользователю нужно что-то, что можно руками пощупать (серийник)

Но и не согласен также. Истории ваши какие-то сфероконические ;)

И, кстати, интересный вопрос. Зачем защищать используемые в коде решения, если их не покупают? Зачем раздавать используемые в коде решения бесплатно, если за них платят деньги?

+10
+11 –1
Scratch ,  

вы забыли сказать, что все представленные протекторы кроме VMProt, ну еще возможно WinLicense, успешно взламываются сегодняшними крякерами. Так что ценность статьи близка к нулю

–4
+2 –6
kruzhevnik ,  

Пруфы в студию.
Но даже если что-то и ломается, не факт, что это взлом протектора/алгоритма защиты. Скорее, это просто взлом конкретного экземпляра какого-либо защищенного ФЗ кем ПО.

+1
+2 –1
avorsa ,  
Пруфы в студию.

например

А за статью спасибо!
0
kruzhevnik ,  

2011 год. Свежак-с ;)

Вообще, условные пятьсот баксов за протектор в структуре расходов на создание и последующее продвижение более или менее полезного програмного продукта — это слезы. Просто не все это понимают. Этим обычно грешат начинающие шароварщики, для которых это первая трата своих наличных денег на свой продукт (обычно потраченное свое время в этом случае не рассматривают как трату).

+7
Disertbo ,  
Пруфы в студию.

cracklab.ru
0
+3 –3
kruzhevnik ,  

А что не google.com? Там пруфов точно больше есть ;)

+6
Genome_X ,  

Чувак, какие нафиг пруфы? На варезных форумах лежат отломанные китайцами версии самих протекторов, чего уж говорить о программах ими защищенными?

0
+1 –1
kruzhevnik ,  

Отломанные или счардженные? Тут вопрос интересный, поэтому пруфы и нужны. Купить по левой кредитке и выложить можно любой протектор.

Также, насколько я знаю, производители протекторов часто подписывают продаваемые копии, и могут определить, какой именно копией защищено ваше приложение. Это полезно, чтобы их не использовали вирусописатели — скомпрометированная копия поступает в базу антивирусов и все довольны — и легальные пользователи протектора, которые пишут честный софт, и пользователи — которым антивирус помогает отлавливать зловредов, защищенных украденой копией протектора.

А про китайцев тоже интересно узнать поподробнее. Я немного интересовался вопросом, как один протектор продается в Китае, и выяснил, что помимо официальных реселлеров, которые есть на сайте протектора, еще как минимум десяток перекупщиков есть на всяких таобао. Они возможно просто тупо покупают без всяких договоров и перепродают за юани тем, кто просто не может купить за баксы на офф. сайте (привет великому китайскому файрволу). Хотелось бы узнать, почему торговля протекторами довольно развита в Китае, если там на каждом углу ломаные версии лежат.

+2
Antonio43 ,  

Популярность протекторов в Китае связана с тем, что там производиться огромное количество поддельного оборудования и дефейснутого софта. При этом каждую переделанную программу «новый производитель» считает своим долгом защитить протектором. Зачастую скарженным с варезника. А более «серьёзные производители» защищают официально купленным протектором.

–1
kruzhevnik ,  

Спасибо, интересное мнение.

0
Genome_X ,   * (был изменён)

Отломанные, именно отломанные.
Ломалось все, и ASProtect и «неломаемая» Themida. Выкладывались и cracked exe и даже иногда (редко, но делались) кейгены на проты.
Пруфы на екзелабе, на руборде. Хотя весь сок ходит на зарубежных форумах и в приватах, как правило.

0
kruzhevnik ,  

Ну, как я для себя выяснил, ASProtect только ленивый не ломал. По Themida — не в курсе. А что по поводу Obsidium или VMProtect?

0
ValdikSS ,  

Последний точно ломают. Долго, сложно, но ломают.

0
REU ,  

Obsidium тоже ломают, он несложный.

0
kruzhevnik ,  

Понятно, что ломают. Вопрос в цене. Как я понимаю, VMProtect поломать дороже всего выйдет?

0
Genome_X ,   * (был изменён)

Вы себе протектор выбираете? На екзелабе в таких случаях обычно сразу UPX советуют.
Выбирайте любой, навешивайте на прогу. Если прога будет достойная и нужная, её в любом случае отломают. Ну или скардят.
P.S. VMProtect тоже кстати отломанный где-то был, какой версии, не вспомню уже, но то что был, однозначно, ибо скачивал и работал с ним.

0
kruzhevnik ,  

Это они советуют, чтобы им меньше работы было ;)

+1
dMetrius ,  

Дольше всего. А цена зависит. Ломали мы с одним товарищем и прот как-то. Это был, конечно, сущий ад, но сняли (больше он, чем я).

0
Disertbo ,  

виртуализация кода была? или только пакер?
товарища никнейи случайно не OnLyOnE?

0
dMetrius ,  

Виртуализация была. Ломали какой-то античит для Counter-Strike.
Нет, товарища не так звали. По крайней мере под таким ником он мне не известен — а там, кто знает ;)

0
Disertbo ,  
VMProtect поломать дороже всего выйдет?

при правильном применении — да, не побоюсь утверждать, что на порядок дороже той же эингмы или asprotect
0
REU ,  

На несколько порядков, аспр и энигма рядом не стоят.

0
dMetrius ,  

Аспр снимается относительно быстро…
* только не просите мне самому снять * ;)

+1
+2 –1
resetnow ,  
forum.tuts4you.com/topic/30733-vmprotect-ultra-unpacker-10/

Сразу скажу, что не пробовал, просто как-то раз прочитал про vmprotect и стало интересно, есть ли готовые решения. Оказывается, есть. Правда, ссылке два года и она могла потерять актуальность.
+1
d_olex ,  

Ну и где там хоть слово про декомпиляцию самого заVMленого кода?

+1
Disertbo ,  

хакнули только упаковку. Не надо путать упаковку с виртуализацией. Условно говоря это два уровня зашиты. Упаковка продержалась два года, виртуализация стоит до сих пор, хотя в рунете есть 2-3 человека ( я шапочно знаю только одного ) которые берутся за съем любой защиты вмпрот, вернее там идет речь о практически ручной переписи завиртуализированного кода.

Весь код приложения виртуализировать нельзя ибо катастрафически падает производительность — в приложении виртуализируются отдельные функции. У меня это примерно 1% общего объема кода — самые критически важные функции без которых приложение не жизнеспособно

Декомпиляция завиртуализированного кода это индивидуальная работа с каждой программой, каждый случай уникальный и ценник там заоблачный

0
d_olex ,  
Декомпиляция завиртуализированного кода это индивидуальная работа с каждой программой

Не совсем так.
Помимо хардкорной ручной декомпиляции существуют так же и generic техники декомпиляции виртуальных машин, основанные на применении различных оптимизаций и трансформаций к трассе исполнения заVMленого кода.
0
d_olex ,  

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

0
Disertbo ,  

утилиты облегчающие жизнь есть — но полный разбор вм кода это без гарантий как говорится, и очень очень дорого по крайней мере сейчас,

0
d_olex ,   * (был изменён)
Весь код приложения виртуализировать нельзя ибо катастрафически падает производительность — в приложении виртуализируются отдельные функции.

Я тоже сталкивался с этим на практике и считаю что вопрос правильного навешивания протектора более важен и первичен чем вопрос его выбора :) Очень часто требуется реально хитрая декомпозиция архитектуры программы что бы и не тормозило, и протектор был не для виду.
–2
kruzhevnik ,  

Я не забыл об этом написать. Просто вы забыли прочитать. Спасибо за отзыв о статье. Хотя, мне кажется, вы немного ошиблись

0
Dinisoid ,  

На данный момент взламывается всё, в том числе инлайн патчинг возможен из-за допущенных ошибок, нужно понимать, что виртуализация кода не панацея.

+1
+2 –1
mihavxc ,  

Перечисленные решения, подходят только для шароварщиков. Если нужно защитить более-менее дорогой коммерческий софт, то стоит посмотреть в сторону аппаратных ключей и более известных вендоров.
Лидером рынка монетизации ПО является компания SafeNet(ключи HASP, аппаратные, программные, а есть ли облачные решения).
_http://safenet-sentinel.ru

Кстати, периодически проходят бесплатные мастер-классы для разработчиков по защите ПО. Последний буквально 10 дней назад был
_http://safenet-sentinel.ru/upload/events/03_2014_moscow_program.doc

+2
Disertbo ,  

позвольте с вами не согласиться.
хардварные ключи ломаются на раз два — на том же краклабе дохочень много специалистов которые за 2-3 тысячи долларов снимают самые сложные хардварные ключи

Я сам немного в теме — каюсь грешен не покупал софтинку которая стоит 25 тысяч евро в год. Заплатил 5000 долларов за ее отвязку от лицензий софтинка была энигмой упакована. Как мне сказал человек, делавший эту работу, если был бы вмпрот то он бы не взялся и дешевле было бы купить.

Когда передо мной остро стоял вопрос как и чем защищать мой продукт я советовался с ним и еще с парой уважаемых людей с краклаба — все, абсолютно все в один голос сказали что хардварная защита это ацтой — ломается всё и относительно не дорого

+1
mihavxc ,  

Смотря, что подразумевать под хардварной защитой. Есть дешевые китайские ключи, там действительно все не так уж и сложно обойти.
Есть решение от серьезных вендоров и разработчики берут их API, делают 4 строки кода и называют это защитой. Естественно, такое ломается тоже быстро.
Если же брать более-менее современные решения по автоматической защите, то взлом защищенного прилодения обойдется Очень дорого. Нет, конечно, какой-нибудь 1С или adobe ничего не спасет, но у разработчика и не стоит задачи сделать невзламываемую защиту, нужно просто сделать взлом экономически нецелесообразным. И вот тут решения по автоматической защите на аппаратные ключи от известных вендоров будут очень кстати. Да и в данном случае ключи защиты это не просто защита от взлома, это еще и инструмент по гибкому взыванию денег с пользователя с функционал.

0
Disertbo ,  

чтобы взлом сделать нецелесообразным не надо париться с хардварными ключами. можно вполне обойтись софтварным решением + сервер лицензий. При этом цена взлома будет далеко за 100К евро

0
mihavxc ,  

В целом согласен, но опять же если взять программный ключ и защиту в 2-3 строчки кода через API, да даже пусть и в 20 строчек, то такую защиту поломают минут за 30-60.

0
Disertbo ,  

вот тут вы правильно сказали — вмпрот это мощный инструмент но если пользовать его бездумно то никакой защиты надежной не будет,
Защищать надо с умом даже самым лучшим в мире протектором

0
Antonio43 ,  

Есть китайские ключики, которым уже 10 лет стукнуло, и не отламываются по сей день :)

0
mihavxc ,  

Потому что никто не ломает сам ключ, вырезают обращения к ключу из файла. И, простите, я не поверю, что утилита автоматической защиты десятилетней давности, дает хороший уровень защиты. Слишком далеко ушли технологии. Если не взламывают, значит это никому не нужно.

0
Antonio43 ,  

Вы видимо не в курсе, что эти ключи 10 лет назад позволяли выносить и исполнять код внутри себя. Таким образом вырезая обращение к ключу, вы теряете функционал программы, который частично хранится и исполняется в ключе. Выудить исполняемую в ключе часть из ключа еще не удалось никому.

+1
resetnow ,   * (был изменён)

А можно пример? Я как-то недавно изучал тему про чтение защищенных микроконтроллеров и смарт-карт — читается и ломается практически всё. Т. е. не удалось выудить только потому, что это было экономически нецелесообразно. А прочитать что-либо из железа в большинстве случаев можно. Особенно учитывая то, что железу десять лет. Ну и пара ссылок:

Semi-invasive attacks — A new approach to hardware security analysis
Breaking copy protection in microcontrollers
Fault attacks on secure chips: from glitch to flash

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

0
resetnow ,   * (был изменён)
www.quovadislabs.com/ — сама организация. Есть даже специальное железо для чтения защищенных микросхем, правда, сложно представить, сколько оно стоит.
0
Antonio43 ,  

За примером далеко ходить не надо. SenseLock (выпущен в Китае в 2003 году) и Rockey5 (выпущен в Китае в 2005 году). Первые сделаны на смарт-карте Philips, второй сделан на Китайской смарт-карте, предназначенной для внутреннего рынка. Ни того ни другого вышеназванные конторы не пилят.
Гораздо дешевле софт разработать повторно.

0
resetnow ,   * (был изменён)
Гораздо дешевле софт разработать повторно

Я об этом же.

Т. е. не удалось выудить только потому, что это было экономически нецелесообразно

Я скорее спрашивал о примере некого реально защищенного чипа, который компания вроде упомянутой долго-долго ковыряла и не смогла достать данные.
0
mihavxc ,  

Что-то сомневаюсь, что ключам с исполнением кода уже 10 лет. Ну да не суть.
Да, выполнение кода в ключе существенно повышает стойкость защиты, тут и спорит не собираюсь. Так или иначе все крупные вендоры имеют подобный функционал.

0
Disertbo ,  

самый надежный хардварный вариант это перенести часть функционала программы в железку. Но тогда встает вопрос в копировании железки — снять дамп с атемлины дело 30 минут; И еще день чтобы софтварно заэмулировать ее. А микросхемы с криптозащитой памяти ( оперативной и постоянной ) стоят дорого и схемотехника там ой ой ой

все остальные варианты это фуфло

0
kruzhevnik ,  

Хардварный ключ имеет смысл, только если какая-то часть расчетов выполняется на нем… Иначе он не имеет смысла, и все обращения к нему надо протектить софтверным протектором.

0
mihavxc ,  

Не обязательно на нем выполнять, можно и просто шифровать что-то через ключ. Современные подходы в криптографии и динамическое шифрование в канале приложение-ключ дадут стойкость защите.

0
kruzhevnik ,  

Имхо не прокатит. Если просто шифровать — подправят код немного, чтобы или а) не шифровать, или б) шифровать своим ключем, а не из флэшки

0
mihavxc ,  

Подправить код не дадут средства автоматической защиты. Они навесят 12-15 слоев защиты. По крайней мере это будет оооочень долго и увлекательное занятие:) А как я уже писал выше, задачи сделать невзламываемую защиту и не стоит.

0
kruzhevnik ,  

софтверный протектор? я об этом писал уже где-то в коментариях.

+1
Antonio43 ,  

Как это не прискорбно говорить, Aladdin со своей линейкой HASP, Rainbow с линейкой Sentinel, а ныне Safenet я готов назвать лидером рынка по отломанным защитам. Я не безгрешен. Исследовал за свою жизнь порядочное количество программ. Единственная программа, которая была довольно грамотно защищена HASP' ом — это Wilcom Embroidery Software.

0
mihavxc ,  

Ну тут нужно разбираться как именно защищался этот софт. Что-то из более-менее свежих утилит по автоматической защите смотрели?

0
Disertbo ,   * (был изменён)

Использую WMProt ( Ultimate ) 3й год для защиты довольно дорогого продукта — на мой взгляд лучшая софтинка в своей категории.
По крайней мере 99.99% «спецов» с краклаба не брались за реверс и хак ни за какие деньги.
Оставшееся часть сообщества в лице двух очень мной уважаемых специалистов в своей сфере выставляли ценник за 50К долларов и без каких либо гарантий что хак возможен,

Насколько мне известно у вмпрота «сломана» только упаковка — его виртуальная машина не по зубам, особый шик в том что мы можем добавить в защиту хоть 500 виртуальных машин ( растет только размер выходного ехе ), сам разработчик рекомендовал в настройках выставлять 10 виртуальных машин с своим набором команд и своим кодом.

0
Evengard ,  

А есть бесплатные решения, которые позволяют выполнять dll boxing? Интересен именно dll boxing.

0
kruzhevnik ,  

Насчет бесплатных — не знаю, но если есть 79 евро в кошелке — то oreans предлагает xbundler

+1
REU ,  
0
kruzhevnik ,  

Спасибо, полезная ссылка

0
Evengard ,  

Спасибо!

+4
klirichek ,  

А в чём смысл защиты от виртуалок в текущее время?
Если пользователь запускает режим ХР на семёрке (через виртуализацию) — выходит, идёт лесом?
Или если маковод запускает винду через parallels — он тоже оказывается «пиратом»?
Просто мне кажется нынче, когда виртуализация поддерживается уже даже аппаратно на уровне процессора, должно быть экономически выгоднее поддерживать виртуалки, а не блокировать их.

0
Disertbo ,  

смысл в том что я, например, произвел программный комплекс который должен работать на конкретном железе — это особо оговаривается с покупателем продукта.
Запуск в виртуалке это уже звоночег — или пытливый ум пытается поломать или одно из двух — нефих нефих.

Опция конечно ни для каждой программы но как элемент защиты очень полезная в своих случаях

0
klirichek ,  

Семёрка в режиме имитации XP тоже работает на конкретном жезеле, разве нет?
И к тому же виртуализация в ней это уже не «особая программа, которую откуда-то скачивать, ставить, настраивать и запускать», а достаточно прозрачная часть системы. Т.е. не требует никакой особой пытливости.

0
kruzhevnik ,   * (был изменён)

Виртуализация может быть на разном уровне — это может быть гипервизор, поверх которого запускается настоящая ОС, это может быть что-то типа VMWare, запущенного под управлением операционной системы, это может быть, и, как вы заметили, штатный режим совместимости в ОС. По поводу последнего — тут, кстати, есть сомнения, что имеет место какая-то ВМ, скорее, это эмуляция старых АПИ.

Но если есть объективная причина, по которой требуется защита ПО от запуска на виртуальной машине, то тут в любом случае требуется глубокое исследование на тему того, что именно каждый из протекторов подразумевает под детектом ВМ.

+3
eps ,  

Защита от виртуалок защищает и от покупателей.

Знакомая компания несколько лет назад купила спец. ПО, защищённое одной из этих штук. ПО работает только в Windows XP. У компании сменился компьютер, на нём — Windows 7 (и Windows XP не поддерживается). ПО не запускается. Поставили виртуалку с Windows XP — срабатывает защита от виртуалок. Разработчик же говорит — «Только Windows XP. Заведите отдельный старый компьютер с Windows XP для моей программы».

Компания сама уже не рада, что купила программу у этого разработчика-параноика.

0
kruzhevnik ,  

Star Force ProActive, не иначе ;)

+2
Antonio43 ,  

Но давайте посмотрим с другой стороны.
Группа энтузиастов решает прикупить в складчину софт, защищенный от копирования и привязанный к железу компьютера.
Самый распространенный способ, это создать виртуалку и зарегистрировать программу на неё. Далее просто раздается образ с виртуалкой и зарегистрированной программой всем желающим. Что делать разработчику в таких случаях?

+1
eps ,  
Что делать разработчику в таких случаях?

Монетизировать новых клиентов, объяснив им, какие преимущества даёт легальная копия.

Самый распространенный способ, это создать виртуалку и зарегистрировать программу на неё.

Напротив, никогда не видел его распространённым. Не видел на варезных трекерах готовых виртуалок с «неломаемым» софтом. Профессиональные пираты, крэкеры всё равно взломают защиту, профессиональные пираты не будут раздавать образ виртуалки, это скучно и неспортивно. Они или делают кряк, или объявляют софт неломаемым.

Поэтому, установка на ВМ — это метод непрофессионального, бытового пиратства. То, до чего может додуматься обычный пользователь. С ними не нужно бороться, их можно сравнительно легко превратить в платящих клиентов.
0
mihavxc ,  

Нормальная программная защиты определяет виртуалку и в таком случае, если активация происходит в виртуалке привязывается к ID хостового железа. Запустили виртуалку на другой хостовой машине, ID железа разные, получили блокировку.

0
kruzhevnik ,  

Спасибо, очень интересная мысль.

0
mihavxc ,  

Это не мысль, нормальные решения именно так и работают:)

0
kruzhevnik ,  

Какие?
Ни у одного из протекторов такой опции не видел. Все они отстой? Приведите примеры, кто так работает?
Кстати, такую опцию лучше следует сделать отключаемой, допустим, если на хосте стоит лицензионный протектор — я, например, тестирую софт в нескольких виртуалках под разные версии виндов, если HWID будет от хостовой машины, чистота эксперимента будет не очень

0
mihavxc ,  

Sentinel SL(HASP SL). Можно скачать и сразу поиграться
_http://safenet-sentinel.ru/demo-zone/

Конечно, стоит понимать, что если заданы лицензионные ограничения по количеству дней или по количеству запусков, то такую лицензию значительно проще вернуть в исходное состояние. Если лицензия постоянная, то проблем нет.

+1
qw1 ,  

А разве есть какой-то способ получить HWID хоста? Тогда параноикам, выходящим в инет из виртуалки, есть о чём беспокоиться: эксплойт пробивает браузер, получает ID хоста. И прощай, анонимность ))

0
mihavxc ,  

То что программные ключи Sentinel SL могут отследить изменение ID реального процессора — факт. Другое дело, что может быть они знают только о самом факте смены ID, а сами ID не знают. Тут нужно покопать документацию.

0
qw1 ,  

Теперь понятно. Серийный номер процессора был введён в Pentium-3, но достаточно быстро был отозван из-за протестов общественности. А вот узнать точную модель процессора и ревизию можно, CPUID непривилегированная инструкция, значит, не эмулируется в виртуалке. Достаточно грубая идентификация, ведь несложно купить процессор нужной модели и ревизии. Но от раздачи образа VM через торренты спасает.

+2
grechnik ,  

При аппаратной виртуализации CPUID прекрасно перехватывается, что у Intel (безусловно)

The following instructions cause VM exits when they are executed in VMX non-root
operation: CPUID, GETSEC, INVD, and XSETBV. This is also true of instructions
introduced with VMX, which include: INVEPT, INVVPID, VMCALL, VMCLEAR,
VMLAUNCH, VMPTRLD, VMPTRST, VMREAD, VMRESUME, VMWRITE, VMXOFF, and
VMXON.
что у AMD (условно, перехват включается одним из бит в VMCB control area).
0
qw1 ,  

Возможно, это появилось в некоторой версии интел архитектуры. На старых машинах не перехватывалось.

–4
+1 –5
maxic ,  

Спасибо, отличная статья.
А можно тоже самое, но для защиты кода PHP.
Генерации ключей для модулей и другие защиты от копирования и распространения. Или хотя бы усложнения :«жизни» пиратам

+3
kruzhevnik ,  

К сожалению, защита PHP не относится к сфере моих интересов. У защиты для PHP и у защиты приложений Windows только одно общее — слово «защита»

+1
Disertbo ,  

1. в байткод скопилировать
2. писать на С/С++ модули пхп ;-)

+9
SteveNers ,  

Насколько же OpenSource крут, ни о чем таком не думаешь

+1
Athari ,  

.NET на самом деле доказал, что бояться расковыривания коммерческих сорцов особо не надо. Куча коммерческого софта «неофициально опенсорсная» — где все «системы защиты» снимаются запуском одной-двух автоматических программ (и в потерях только нормальные имена в коде), где производитель вообще забил на какую-либо защиту, где сама шароварность мягкая (и можно пользоваться программой после истечения срока).

Времена, когда каждый CD-эджектор считал нужным обложиться тремя слоями защиты, в общем-то, прошли. Защита нужна и выгодна не всем и не всегда.

+2
kruzhevnik ,  

Сама защита — действительно, особо не нужна сейчас. Достаточно важен процесс активации — пользователь, который платит деньги, должен что-то получит взамен — хоть ключик из набора цифр для активации — это то, что он может «пощупать» после покупки. Этот момент важен, и я еще об этом напишу ;)

+2
mgaga ,  

Спасибо за статью, и хоть Вы и написали, что

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

Очень зависит от того, что там за код вынесен на ключ. Один мой знакомый просто логически, смотря на входящие и выходящие параметры, взял и переписал 6 функций, которые находились внутри SenseLock Standard. Это было буквально полгода назад.

Вообще, я могу попробовать позвать крякеров, чтобы они статью написали про защиты и ключи. Я протекторы ломал последний раз, когда ExeCryptor выложили в паблик, т.е. где-то в 2005-2006. Вот, кстати, на тот момент это был неплохой протектор, с виртуальной машиной, а потом виртуальную машину взяли и полностью разреверсили.

0
kruzhevnik ,  

:laugh:

Позови. Моему знакомому будет интересно узнать даже не столько о технических деталях, сколько об их мотивации, и о том, как не попасть к ним под нож.

–1
mihavxc ,  

В другой ветке я уже писал

По ключам HASP(Sentinel) компания SafeNet, периодически проходят бесплатные мастер-классы для разработчиков по защите ПО. Последний буквально 10 дней назад был. Следующий в июне вроде бы планируется.
_http://safenet-sentinel.ru/upload/events/03_2014_moscow_program.doc

Русскоязычный сайт.
_http://safenet-sentinel.ru/

0
REU ,  

Obsidium уже года 3 как поддерживает виртуализацию, с чего вы решили, что ее там нет?

0
kruzhevnik ,  

Не нашел. На сайте — заявлено, в демке — не нашел. Если ткнете, где смотреть — проверю и исправлю

0
REU ,  
www.obsidium.de/show/download/en
Functional limitations of the evaluation versions:
No loading and saving of project files
Code virtualization is disabled
Watermarking functionality is disabled
Command line version is disabled
0
kruzhevnik ,  

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

У меня для каждого протектора скриншоты предоставлены. Найдите у обсидиума виртуализацию и ткните меня туда носом. Тогда поправлю.

0
REU ,   * (был изменён)

А там галочки и нет. Протектор ориентируется по маркерам, если есть OBSIDIUM_VM_START и OBSIDIUM_VM_END, то он виртуализирует то, что находится между этими маркерами.

Читайте хелп.

0
kruzhevnik ,  

Спасибо за поправку.

У VMProtect тоже виртуализация маркерами управляется, но галочка на морде есть, и есть возможность включать/выключать опцию для отдельных функций. Это более удобно, и более заметно, даже в демке.

0
REU ,  

Все протекторы ориентируются по маркерам. Он в энигме тоже нет галочки. Есть только галочка на виртуализацию точки входа, т.к. там разработчик не сможет втыкнуть маркеры.

0
kruzhevnik ,  

Шутите ;)

В энигме целый раздел в списке опций есть, сложно не заметить, и сразу понятно, что VM есть. И в других протекторах аналогично. А у Obsidium'а в интерфейсе вообще нет ни намека на поддержку виртуализации. И если я не заметил, как использовать у него виртуализацию, когда целенаправлено изучал протекторы для более или менее объективного обзора, то думаете, что потенциальный покупатель найдет больше?

+1
godAlex ,  

Хорошо было бы сделать таблицу с перечнем технологий защиты и затрат на взлом или обход этих технологий. Иначе, под словом «защита от отладчиков» может представиться неосведомлённым читателям, что программу нереально открыть любыми отладчиками, и, как следствие, взломать.
Я считаю, что прежде чем заниматься защитой программ, нужно взглянуть на этот процесс с другой стороны: на сколько просто взломать защиту? И узнать про методы обхода защиты, чтобы узнать, на сколько она надежна.

Я не являюсь специалистом по взлому защиты ПО, по этому напишу то, что смог найти, возможно некоторые из методов уже не актуальны. Привожу примеры реализации защит и методов их обхода:

Обнаружение отладчика
Level 1
Защита: функция win32 BOOL IsDebuggerPresent(VOID) возвращает true, если процесс находится под отладкой.
Обход: отлавливать обращения к IsDebuggerPresent и заменять ответ, либо временно заменить функцию IsDebuggerPresent, чтобы она всегда возвращала false.
Level 2
Защита: Способ без вызова IsDebuggerPresent
        mov     ecx,fs:[20h] ;// если значение по адресу fs:[20h] = 0 , то нет отладки
        jecxz   not_being_debugger

Обход: заменить значение по адресу fs:[20h] на ноль. (при этом функция IsDebuggerPresent будет возвращать false)
Level 3
Защита: искать следы присутствия отладчиков в памяти, то есть имена окон известных отладчиков, следы установки отладчиков в реестре.
Обход: маскировка следов отладчиков.

Проверка целостности
Level 1
Защита: применяется простая контрольная сумма дампа памяти процесса
Обход: либо в новый код добавить дополнительные данные, чтобы совпала КС, либо найти место в протекторе, которое прводит подсчёт КС и изменить его. А найти процедуру проверки КС можно путём отслеживания обращений к области памяти с кодом на чтение (break point).
Level 2
Цифровые подписи.

Защита импорта
Импорт функций DLL осуществляется двумя путями: раннее связывание и позднее связывание.
При раннем связывании найти места вызовов функций просто. При позднем связывании используются сначало функции LoadLibrary и GetProcAddress.
Level 1
При скрытии импорта остаются в явном виде две импортируемые функции — это LoadLibrary для подключения DLL и GetProcAddress. В параметрах GetProcAddress указываются названия импортируемых функций. Достаточно найти вызовы GetProcAddress.
Level 2
Защита:
Вызов GetProcAddress шифруются и адрес вызова передаётся в неявном виде, на промежуточных этапах адреса зашифрованы. Текст с названиями функций зашифрован.
Обход:
Даже если текст названий функций зашифрован, то непосредственно перед вызовом GetProcAddress названия функции будут расшифрованы, и их можно перехватить, поставив точку остановки внутри GetProcAddress, далее проследить стек вызовов.
0
kruzhevnik ,  

Исследование методов, которые протекторы используют для защиты, тянет на диссертацию. Конечному потребителю все равно приходится верить на слово производителю протектора и/или обзорам, подобным моему. Если же он не верит обзорам и обладает нужной квалификацией, то почему он вместо CDEjector'а не создал VMProtect?

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

0
godAlex ,  

Тогда добавьте в таблицу с протекторами отметку о наличие программ для их взлома в свободном доступе, если такие найдутся. Это будет показатель надёжности защиты.

+1
kruzhevnik ,  

Не уверен, что стоит из данной статьи делать справочник кряков к протекторам. Обсуждения и ссылок в коментариях думаю более чем достаточно.

+1
resetnow ,  

Перечисленные методы обнаружения отладчика легко обходятся плагинами phantom и strongod для ollydbg. Для других отладчиков тоже есть плагины.

0
REU ,  

Энигму вы тоже плохо изучили, там есть и шифрование и упаковка кода. Вот вам скриншоты с галочками, как вы любите.

Скрины



0
kruzhevnik ,  

Пропустил.
Спасибо за исправление. Fixed.

0
Sleuthhound ,  

Статья хорошая, спасибо автору.
А по защите софта — Не взламываемой защиты не существует, существует лишь цена взлома этой защиты.

+1
dapa ,  

Я так понял, что под MAC OS ничего нет?

0
kruzhevnik ,  

VMProtect вроде есть под Mac и Linux, но на офф сайте я не нашел подтверждения этому факту, поэтому пока ничего не написал

0
REU ,   * (был изменён)

Не знаю откуда вы взяли информацию о том, что есть под линукс, но вы ошибаетесь. А под мак пилится
vmpsoft.com/20110706/attention-mac-developers/
vmpsoft.com/forum/viewtopic.php?f=4&t=1269

0
kruzhevnik ,  

С Linux'ом похоже приснилось

+3
Salabar ,  

А еще можно начать по человечески работать с клиентами. Тогда все, кому софтина реально нужна, её и так купят. Но навешать разной защиты, из-за которой программа не сможет, в лучшем случае, работать под Вайном, а в худшем — на версии Винды новее определенной даты по Юлианскому календарю, разумеется, проще.