Блог Александра Божко
Архивы
Рубрики

ASProtect

Очередной пост, рожденный из практической задачи.

Я уже неоднократно писал о том, что для защиты приложений использую ASProtect SKE, и время от времени мне приходится решать нестандартные задачи, связанные с его использованием. Как раз сегодня, мне пришлось поэкспериментировать с одной из таких задач. Суть в следующем. В нашем проекте существует основное приложение и несколько приложений сателлитов. Эти дополнительные приложения продаются отдельно и, соответственно, защищаются отдельными ключами. В один прекрасный момент мы решили одно из таких приложений объединить с главным, сохранив при этом необходимость его регистрации.

Иными словами, приложение должно проверять не один ключ, а сразу два. Можно ли это реализовать с помощью ASProtect? Я решил это проверить.

Актуальная версия ASProtect SKE – 2.65. Хотя я продолжаю использовать более раннюю версию (2.2), рекомендую все же скачать и установить последнюю. Дело в том, что в ней представлен исправленный файл aspr_api.pas, адаптированный для работы с новыми версиями Delphi, поддерживающими unicode. В принципе, вы можете использовать и более раннюю версию продукта с обновленными api заголовками.

В качестве базового я взял пример из комплекта поставки (..Reg_trial\Delphi).

Прежде всего, давайте откроем .aspr2 файл – проект ASProtect. В оригинальном примере он содержит два режима: Trial Mode и Registered Mode. Кроме того, следует убедиться, что ключ хранится в текстовом файле. Для этого откройте пункт меню Options | Keys storage area type:

asprotect_storage_type Читать далее

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

Прежде всего, ASProtect. Я уже писал о том, как правильно осуществлять вызов функций ASProtect API. Это не сложно:

CheckKeyAndDecrypt( PChar(ansistring(eCode.Text)), 
PChar(ansistring(eName.Text)), True )

Однако, описание функции CheckKeyAndDecrypt выглядит следующим образом:

function  CheckKeyAndDecrypt      ( Key, Name : PChar; SaveKey: Boolean ): Boolean; external aspr_ide name ‘CheckKeyAndDecrypt';

Проблема же может возникнуть при вызове функций подобных этой:

function  GetRegistrationInformation   ( ModeID : Byte; var Key : PChar; var Name : PChar ): Boolean; external aspr_ide name ‘GetRegistrationInformation';

Параметры Key и Name – модифицируемые и передать выражение в качестве параметра уже нельзя.

Что делать в этом случае? Да просто изменить заголовки в файле aspr_api.pas.

function  GetRegistrationInformation   ( ModeID : Byte; var Key : PANSIChar; var Name : PANSIChar ): Boolean; external aspr_ide name ‘GetRegistrationInformation';

Вызов остается предельно простым:

var
pchKey, pchName: PANSIChar;

GetRegistrationInformation(0, pchKey, pchName);

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

Я покупал ASProtect SKE в 2006-м году и на последние версии продукта моя лицензия не распространяется. Однако, как выяснилось, самый простой вариант – скачать последнюю версию протектора и взять оттуда aspr_api.pas. Все исправления в заголовки там внесены, и с предыдущими версиями продукта работает прекрасно.Там же можно посмотреть и обновленные примеры использования.

Кроме этого, я обнаружил пару проблем с cxGrid (сохранение и восстановление заголовков полей). Но, об этом я напишу по факту решения данной проблемы.

Другие статьи серии:

Редизайн интерфейса приложения. #0
Редизайн интерфейса приложения. #1
Редизайн интерфейса приложения. #2
Редизайн интерфейса приложения. #4
Редизайн интерфейса приложения. #5
Редизайн интерфейса приложения. #6
Редизайн интерфейса приложения. #7
Редизайн интерфейса приложения. #8

В новой версии ASProtect SKE кроме багфиксов добавлены примеры работы в Delphi с поддержкой Юникод. Некоторое время назад я писал о том, как использовать ASProtect c Delphi 2009.

Для тех, кто не в курсе:

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

Цена 4455 руб.

Продукты DevArt
Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика