Защита приложений Windows от копирования и уменьшение размера с помощью ASProtect и ASPack
При распространении приложений перед разработчиками часто встают вопросы о защите кода программы от взлома и анализа, об уменьшении дистрибутива при распространении через Интернет, о том с помощью чего делать ключи для платно распространяемых программ. В статье мы рассмотрим возможности инструментов ASPack и ASProtect, которые помогут вам решить эти вопросы.
Первые версии инструментов ASPack и ASProtect были разработаны российской компанией ASPack Software, которая впоследствии была куплена другой российской компанией «Протекшен Технолоджи», работающей под торговой маркой StarForce.
ASPack
Сначала давайте разберёмся с программой ASPack. Программа сжимает исполняемые файлы и файлы библиотек до 70%. По заверениям разработчиков – это на 10-20% лучше, чем сжатие с помощью стандарта ZIP. Кроме этого, файлы, обработанные с помощью ASPack, остаются автономными, т.е. вы сможете точно так же с ними работать, как и до обработки. При этом не будут происходить временные задержки и не уменьшится производительность.
Если вы собираетесь использовать программу, то нужно помнить, что обрабатывает она только 32-битные исполняемые файлы. Поддерживаются Windows XP/Vista/7/8/10 и Windows Server 2003/2008/2012.
Итак, давайте проверим ASPack в действии. Скачать свежую версию программы вы всегда сможете здесь. Установка простая: распакуйте скачанный архив, запустите программу установки setup.exe и пройдите по всем шагам мастера установки.
После первого запуска вы увидите окно активации, показанное на картинке снизу. Если вы уже приобрели программу, то нужно будет нажать кнопку «Активировать», ввести серийные номер, активировать программу (требуется подключение к Интернету) и пользоваться программой. А если вы хотите лишь попробовать программу в действии, нажмите кнопку «Пробный период» и в следующем окне тоже нажмите кнопку «Пробный период». Бесплатный пробный период даётся для ознакомления с программой в течении 30 дней.
После запуска перед вами появится окошко программы. Для программы, работающей в пробном периоде, вы увидите надпись «UNREGISTERED» и ниже будет указано количество дней до окончания пробного периода.
Чтобы переключиться на русскоязычный интерфейс откройте закладку «Options» и внизу справа из выпадающего списка выберите «Russian». Кроме языка здесь также можно указать и другие параметры сжатия, но я буду использовать настройки по умолчанию.
Для эксперимента я сделал новое VCL-приложение в Delphi XE3 с одной формой. После компиляции у меня получился файл Project1.exe размером 10,4 МБ (10 911 701 байт). Теперь попробуем его обработать с помощью ASPack. Нажмите кнопку «Открыть», выберите файл, и вы сразу увидите, что начался процесс сжатия.
По окончании этого процесса вы увидите размер сжатого файла в процентах относительно исходного размера. У меня получилось 23%. Сам файл после этого уменьшился до 2,46 МБ (2 583 552 байт), т.е. реально 23,7%. Т.е. файл уменьшился на 76,3%. Неплохой результат.
Давайте теперь протестируем наш файл. Нажмите кнопку «Проверить». У меня файл запустился, появилось окошко, всё в порядке. На окне ASPack после тестирования вместо кнопки «Проверить» появились кнопки «Восстановить», для восстановления предыдущего файла из файла Project1.exe.bak, и «Удалить .bak», для удаления файла Project1.exe.bak, если тестирование прошло успешно.
Кроме того я попробовал сжать большой exe-файл одной из своих существующих программ тоже скомпилированной в Delphi XE3 размером 43,0 МБ (45 136 896 байт). В программе очень много разного кода, есть обращения к БД и веб-сервисам, используется большое количество библиотек, в том числе и сторонних, таких как EhLib и TMS. После обработки размер уменьшился до 8,43 МБ (8 848 896 байт), т.е. на 80,4%. Отличный результат. После тестирования никаких ошибок я не обнаружил, программа работает так же, как и до обработки.
Ещё я попробовал сжать файл библиотеки EhLib – это файл EhLib170.bpl размером 3,24 МБ (3 404 800 байт), а после сжатия - 1,51 МБ (1 592 320 байт), т.е. сжатие на 53,2%. Здесь результат получился не такой впечатляющий, но, тем не менее, файл стал в два раза меньше. После сжатия все мои программы работали нормально с этой библиотекой.
Теперь давайте сравним результаты с архиваторами.
Что сжимаем | ASPack | ZIP (макс. метод сжатия) | RAR (макс. метод сжатия) | 7-Zip (метод сжатия - ультра) |
Файл 1 (.exe) 10,4 МБ (10 911 701 байт) |
Сжат на 76,3% 2,46 МБ (2 583 552 байт) |
Сжат на 72,9% 2,82 МБ (2 961 387 байт) |
Сжат на 79,9% 2,08 МБ (2 190 527 байт) |
Сжат на 82,2% 1,85 МБ (1 941 378 байт) |
Файл 2 (.exe) 43,0 МБ (45 136 896 байт) |
Сжат на 80,4% 8,43 МБ (8 848 896 байт) |
Сжат на 67,3% 14,0 МБ (14 752 454 байт) |
Сжат на 80,2% 8,50 МБ (8 922 533 байт) |
Сжат на 82,6% 7,47 МБ (7 833 762 байт) |
Файл 3 (.bpl) 3,24 МБ (3 404 800 байт) |
Сжат на 53,2% 1,51 МБ (1 592 320 байт) |
Сжат на 64,6% 1,14 МБ (1 206 019 байт) |
Сжат на 74,4% 852 КБ (872 500 байт) |
Сжат на 72,9% 899 КБ (921 171 байт) |
Как видите, в первых двух случаях ASPack сжал файлы лучше, чем ZIP, а во втором случае даже чуть лучше, чем RAR. В остальных ситуациях ASPack проиграл архиваторам. По таблице также видно, что с большими exe файлами результат работы ASPack близок к лучшим результатам и заметно лучше ZIP. А для bpl результат уже не такой впечатляющий. Однако, не стоит забывать, что файлы обработанные ASPack рабочие и они не требуют распаковки, в отличие от архивов.
Теперь поговорим о цене программы ASPack. Если вы захотели использовать программу, то вы можете купить следующие варианты лицензий:
-
-
-
- Персональная лицензия для некоммерческих приложений (2 ПК) - 34 евро.
- Лицензия для частного разработчика (3 ПК) – 57 евро.
- Лицензия для компании (30 ПК, поддержка запуска ASPack на виртуальных машинах) – 208 евро.
-
-
Оплата возможна кредитными картами, через системы PayPal и WebMoney или чеком. Подробности можно узнать на странице оплаты.
ASProtect
А теперь разберёмся, что может программа ASProtect. Здесь есть два варианта программы: ASProtect 32 (для процессоров х32) и ASProtect 64 (для процессоров х64). Возможности обоих вариантов практически одинаковые, за исключением следующих отличий:
-
-
-
- ASProtect 64 умеет защищать .NET файлы, а ASProtect 32 – нет;
- ASProtect 64 поддерживает длинные ключи, а ASProtect 32 – короткие;
- ASProtect 32 умеет сжимать исходный файл, а ASProtect 64 – нет;
- ASProtect 32 поддерживает ведение базы данных украденных регистрационных ключей, а ASProtect 64 - нет.
- ASProtect 64 поддерживает защиту приложений от их запуска на виртуальных машинах, а ASProtect 32 - нет.
-
-
Остальные возможности одинаковые:
-
-
-
- Шифрование программного обеспечения;
- Защита от изменения данных в памяти работающей программы;
- Проверка целостности приложения;
- Противодействие отладчикам и дизассемблерам;
- Предоставление API для взаимодействия ваших программ со средствами защиты;
- Создание и проверка регистрационных ключей с использованием алгоритмов шифрования с открытым ключом;
- Возможность создания регистрационных ключей с привязкой к конфигурации компьютера;
- Возможность создания пробных версий, ограничивающих функциональность в зависимости от общего времени работы или количества запусков приложения;
- Отображение окон-напоминаний об окончании срока действия программы.
-
-
ASProtect 32
Итак, давайте сначала попробуем в действии программу ASProtect 32 (я буду использовать демонстрационную версию). Сначала скачайте архив с последней пробной версией программы здесь (ссылка на скачивание полной версии высылается на почту после покупки) и распакуйте его. Затем запустите инсталлятор setup.exe и следуйте по шагам мастера установки (установка простая и я не буду её здесь описывать).
После первого запуска перед вами появится окно активации программы, похожее на окно, которое вы видели при первом запуске программы ASPack, правда здесь нет возможности активировать программу. Здесь будет только кнопка «Пробный период». Нажмите на неё, затем подтвердите выбор, и после этого появится основное окно программы. Русскоязычного интерфейса здесь я не обнаружил, но есть справка на русском языке (файл ASProtect_ru.chm), которую вы можете найти в папке установки приложения.
Итак, попробуем защитить программу. Сделаем так, чтобы нашу программу можно было запустить в пробном и полном режиме. Я буду использовать файл Project1.exe размером 10,4 МБ (10 911 701 байт), который я делал для экспериментов с ASPack.
Сначала посмотрим на первую закладку «Options». Введите здесь название приложения в поле «Application Name». В поле «Application Version» можно вручную указать версию программы или можно установить галку «Get from resources», чтобы версия автоматически считалась из ресурсов (я установил галочку). Затем выберите файл программы. Если галка «Get from resources» у вас установлена, то после выбора сразу проставится версия в поле «Application Version». В поле «Output To Filename», можно указать в какой файл будет записан результат. В поле «Compiler MapFile» можно указать Map-файл для вашего приложения, по которому ASProtect 32 будет искать определённые функции и менять их содержимое (двоичный код) посредством эмуляции.
Группа полей «External UI Options» понадобится вам, если вы будете использовать свой собственный интерфейс для активации приложения, группа «Protection Options» - служит для настройки защиты, группа «Compression Option» - для настройки степени сжатия, группа «External Options» - для настройки использования внешней библиотеки и группа «Other Options» - дополнительные настройки. Подробно обо всех настройках на закладке «Options» я здесь писать не буду, т.к. вы можете найти подробное описание в файле справки.
На закладке «Modes» настраиваются режимы работы приложения. Как раз здесь мы укажем, что наше приложение может работать в пробном и полном режиме. Нажмите на кнопку «Add Mode», чтобы добавить режим. Чтобы использовать встроенную регистрационную схему установите галку «Use Activation Keys». Затем укажите название режима «Пробный режим» в поле «Mode Name» и установите галку «Is this Mode Active?», чтобы режим был активным. Затем нужно указать условия, при которых заканчивается пробный режим. Установим галочку «Expired days number» и укажем в поле справа число 30. Это значит, что пробный период закончится через 30 дней после начала работы с программой. Ещё правее есть кнопка для редактирования текста, который увидит пользователь, когда пробный период закончится. Установите также галку «Use Reminder», чтобы каждый раз при запуске вашего приложения пользователь видел сообщение, что он использует пробную версию, и задайте текст сообщение, щёлкнув по кнопочке справа.
Теперь добавьте ещё один режим, задайте в поле «Mode Name» имя «Зарегистрированный режим», поставьте галки «Is this Mode Active?» и «Is this Mode in Registered State?». Вторая галка означает, что режим является зарегистрированным. Чтобы для полного режима требовался ввод ключа, установите галку «Use Activation Keys». После этого становится активной группа «Activation Keu Properties», где вы сможете добавить дополнительную защиту (подробности см. в справке).
Теперь можно запустить обработку нашей программы. Для этого выберите пункт меню «Project -> Protect», и через некоторое время защищённый и сжатый файл нашей программы будет готов.
Как видите, файл нашей программы обработан, его размер уменьшен до 2798 Кб. Нажмите на кнопку «Run» и после запуска нашей программы мы увидим предложение ввести ключ.
Нажмите «Cancel». После этого появится сообщение с нашим текстом, что версия пробная.
Нажмите «OK» и наша программа запустится в пробном режиме.
Теперь давайте переведём текст встроенного регистрационного окошка на русский язык. Для этого выберите пункт меню «Options -> Build-in messages properties» и в поднявшемся диалоге поправьте текст. Затем нажмите «OK», затем «Close» и запустите обработку нашей программы, выбрав меню «Project -> Protect».
Теперь сгенерируем ключ. Для этого перейдите на закладку «Activation Keys», выделите строку с зарегистрированным режимом, введите имя для регистрации, например, email и нажмите кнопку «Create». После этого в поле «Registration Key» появится ключ регистрации, который можно будет отдать пользователю нашей программы. На этой же вкладке вы можете проверять ключи и хранить список украденных ключей.
Теперь попробуем зарегистрировать нашу программу. Запустим её. Перед нами появится окошко регистрации уже с нашим переводом. Вводим здесь имя и сгенерированный ключ и нажимаем «OK».
После этого наша программа запускается и считается зарегистрированной. При последующих запусках сообщения о регистрации нас беспокоить не будут.
Теперь пара слов о том, как удалить информацию о регистрации. Допустим, нам понадобилось опять протестировать регистрацию, а программа уже зарегистрирована. В этом случае выберите пункт меню «Options -> Key storage area type» и в появившемся окне посмотрите, как сохраняется на компьютере регистрационная информация. Как видите, по умолчанию, это файл aspr_keys.ini, который создаётся в папке нашей программы. Т.е., чтобы удалить информацию о регистрации, нужно просто удалить этот файл. Кстати, здесь же можно выбрать, чтобы регистрационная информация сохранялась в бинарном файле или в реестре.
Вот собственно и всё. Простенький вариант защиты нашей программы готов. А чтобы сделать что-то более продвинутое, читайте справку и не бойтесь экспериментировать. Например, вы сможете наладить взаимодействие вашей программы со средствами защиты или заменить встроенные простые диалоги на свои собственные.
Стоимость ASProtect 32 разная в зависимости от вариантов использования:
-
-
-
- Лицензия для частного разработчика (3 ПК) – 173 евро;
- Лицензия для компании (30 ПК, поддержка запуска ASProtect 32 на виртуальных машинах) – 405 евро;
- Продление лицензии для частного разработчика, подписка на поддержку (только на форуме продукта) и обновления на 1 год – 87 евро;
- Продление лицензии для компании, подписка на поддержку (только на форуме продукта) и обновления на 1 год – 203 евро.
-
-
ASProtect 64
Теперь посмотрим ASProtect 64 для защиты 64-битных программ. Архив с пробной версией можно скачать здесь (ссылка на скачивание полной версии высылается на почту после покупки). В архиве вы обнаружите дистрибутив для установки студии (в папке «ProtectionStudioASProtect64») и генератор серийных номеров (в папке «KeyGeneratorASProtect64»). Сначала установите и запустите студию. После запуска вы увидите окно подключения студии к серверу защиты. Выберите сервер в выпадающем списке сверху и введите имя и пароль. Для пробной версии имя и пароль указаны в файле ReadMe.txt, который вы найдёте в скачанном архиве. Проверьте также, что TCP порт 27705 не заблокирован для подключения к серверу protect.asprotect.com. Нажмите «Подключиться».
После подключения и обновления студии (после обновления потребуется перезапуск студии) вы увидите предложение создать новый проект или открыть существующий.
Оставим предложенный выбор и создадим новый проект. Нажмите кнопку «Создать». После этого вы увидите стартовое окно студии. Здесь весь интерфейс переведён на русский язык, есть полное и краткое руководства пользователя (см. пункт меню «Справка»).
После создания нового проекта первое, что нужно сделать – это указать основную информацию о проекте. Делается это на вкладке «Информация -> Проект», но только в полной версии программы ASProtect 64. В пробной версии мы можем только увидеть, что имя проекта будет «ASProtect 64 Trial», название компании – «ASPack Software» и т.п.
Второе, что нужно сделать в новом проекте - это указать ветвь реестра, в которой будет храниться информация о лицензиях вашего защищённого приложения. Для этого щёлкните по «Базовые параметры» в списке слева. Из выпадающего списка выберите корневую ветвь HKEY_CURRENT_USER, если активация нужна на каждого пользователя ПК (администраторские права не требуются) или HKEY_LOCAL_MACHINE, если активация нужна на компьютер целиком (требуются администраторские права). В текстовом поле можете указать свой собственный путь, но обычно первое слово - это SOFTWARE, затем название компании (на картинке «ASPack Software»), затем название продукта (на картинке «ASProtect 64 Trial»). После названия продукта структура может быть любой.
Я для экспериментов сделаю путь таким: «SOFTWARE\MyCompany\MyProduct\Keys\opetuvaz». После этого можно переходить к добавлению файлов, которые нужно защищать. Чтобы это сделать, откройте в списке слева «Защита -> Установка параметров -> Файлы», затем добавьте все необходимые файлы и папки. Обратите внимание, что здесь нужно задать структуру файлов, которая должны быть в финальном дистрибутиве.
Я для эксперимента сделал 64-битную версию своего тестового VCL-приложения, которое я делал для тестирования ASPack. У меня получился файл Project1.exe размером 12,2 МБ (12 863 984 байт). Я просто добавил его в корневую папку.
Для добавленных файлов можно указать дополнительные свойства. Чтобы вызвать диалог свойств, дважды щёлкните по файлу.
Теперь откройте «Защита -> Установка параметров -> Функции». Здесь вы увидите закладки для всех ваших исполняемых файлов (в нашем случае только одна закладка для файла Project.exe). Для каждого исполняемого файла можно выборочно защитить экспортируемые и вызовы импортируемых функций. Следует учитывать, что при защите функций скорость работы с ними падает. Подробности о защите читайте в полном руководстве пользователя.
Для добавления 30-ти дневного пробного периода приложения откройте «Защита -> Установка параметров -> Параметры привязки к компьютеру», установите галку «Включить» и в поле «Продолжительность:» вбейте «030d 00h 00m». А если вы нажмёте кнопку «Дополнительно...», то в диалоговом окне сможете задать и другие ограничения на запуск приложения, например, ограничение количества запусков. Об остальных параметрах этих настроек читайте в руководстве.
Теперь перейдите на «Защита -> Установка параметров -> Параметры пользовательского интерфейса». Здесь вы можете задать рисунок и иконку для окна запроса активации, сообщения и другие параметры.
После того как все необходимые параметры заданы проект можно сохранить и приступить к защите. Щёлкните по «Защита файла» в списке слева, укажите папку, в которую нужно поместить выходные защищённые файлы, и нажмите кнопку «Защитить». После этого начнётся процесс защиты. Процесс указывается в процентах на закладке «Защита».
Вы можете щёлкнуть по закладке «Защита», чтобы узнать подробности. Кроме того вам могут понадобиться закладки «Журнал» и «Ошибки».
После того как на закладке отобразится 100%, можно посмотреть в папку с защищёнными файлами. У меня в этой папке оказались мой файл Project1.exe и ещё несколько файлов ASProtect 64.
После запуска моей программы появилось окно активации. Как видите, название здесь «ASProtect 64 Trial» и поменять это нельзя, т.к. я использовал пробную версию для защиты. Нажмём кнопку «Пробный период».
После этого я увидел предупреждение, что программа проработает ещё некоторое время. Нажмите «OK».
После этого появилось окно моей программы.
Теперь давайте посмотрим, как работает активация. В общих чертах, активация происходит следующим образом:
- После того как пользователь приобретает вашу программу, вы придумываете серийный номер и отдаёте его пользователю.
- Пользователь вводит серийный номер в первом окне активации.
- Во втором окне активации пользователь получает код оборудования и отправляет его вам.
- Вы создаёте ключ активации, используя полученный от пользователя код оборудования, и отдаёте его пользователю.
- Пользователь активирует программу с помощью полученного ключа и начинает пользоваться программой без ограничений.
Теперь давайте пройдём все перечисленные шаги и попробуем выполнить активацию. Для начала нам нужно придумать серийный номер. Серийный номер – это строка длиной 28 символов, состоящая из произвольного набора букв латинского алфавита (кроме букв I и O) и цифр (кроме цифр 1 и 0). Допустим, это будет строка «ALUWE9582GEWJQ792ELKJASD393U». Запустите нашу программу, чтобы появилось окно активации, и нажмите на кнопку «Активировать». После этого перед вами появится окошко с полем для ввода серийного номера. Введите сюда наш серийный номер и нажмите «Далее».
В следующем окне вы увидите код оборудования, который сгенерировала наша программа.
Скопируйте код оборудования в буфер обмена и запустите генератор ключей. Это исполняемый файл KeyGeneratorASProtect64.exe в скачанном архиве. После запуска откройте наш проект (меню «Project -> Open»), затем в поле «Hardware code» вставьте из буфера обмена код оборудования и нажмите «Generate key». Ключ активации появится в поле снизу.
Скопируйте ключ активации и вставьте в окошке активации в нашей программе в нижнее поле и нажмите «Далее».
После этого у вас запустится ваша программа без ограничений. У меня же, из-за того что я использовал пробную версию ASProtect 64, каждый раз при запуске моей защищённой программы будет появляться окошко с предупреждением, см. картинку снизу.
Вот мы и попробовали защитить программу с помощью ASProtect 64 и у нас всё получилось.
Теперь давайте посмотрим, сколько стоит ASProtect 64. Цена зависит от варианта использования:
-
-
-
- Лицензия для частного разработчика (3 ПК; привязка к ПК обязательна) – 144 евро;
- Лицензия для компании (30 ПК; с привязкой и без привязки к ПК) – 376 евро;
- Продление лицензии для частного разработчика, подписка на поддержку и обновления на 1 год – 73 евро;
- Продление лицензии для компании, подписка на поддержку и обновления на 1 год – 189 евро.
-
-
Итог
Вот собственно и всё, что я хотел рассказать об инструментах ASPack и ASProtect. Надеюсь, у вас сложилось общее впечатление о перечисленных продуктах. Пробуйте, тестируйте и начинайте использовать эти инструменты, чтобы ваши приложения становились меньше по размеру и были хорошо защищены.
Tags: ASProtect ASPack Учебники по использованию программ Обзоры программ Windows