Crypline.ru

защита программного обеспечения

Защита программного обеспечения на примере программы построения графиков затухающих колебаний

Рассмотрим процедуру защиты программного обеспечения на примере программы построения графиков затухающих колебаний (далее по тексту программа). Программа разработана для платформы dot NET Framework 2.0.
Программа состоит из двух модулей (сборок):
  1. SampleProtectedAppGenerateGraph.dll - dot NET сборка подлежащая защите. В этой сборке определен и реализован класс "CGenerateGraph", методы которого производят построение графика и возвращают результат в виде точечного изображения;
  2. SampleProtectedApp.exe - исполняемая сборка, которая использует описанную выше сборку для построения графика по заданным параметрам. Также эта сборка обеспечивает отображение графика. В данной сборке реализована процедура активации программного обеспечения и проверка на активацию.
Исходный проект данной программы для Visual Studio 2008 можно скачать здесь.

В dot NET сборке подлежащей защите определен один тип данных class. В классе определены:
  1. Поля (field) с модификатором доступа - private;
  2. Свойства (property) c модификаторами доступа - public;
  3. Методы (Method) в том числе и конструктор с модификаторами доступа - public.
Класс, определенный в данной сборке не является наследуемым и наследником. Также реализация методов класса не содержит инструкций обработки исключений. Полученный результат возвращается с помощью операции функций - return. Таким образам выбранная сборка для защиты соответствует всем необходимым требованиям.

Приобретение средств защиты программного обеспечения

Для получения программных инструментов защиты dot NET сборок и их активации, необходимо зарегистрироваться на странице приобретения средств защиты программного обеспечения, заполнить все необходимые поля. После выполнения этой процедуры, и после того как запрос на приобретение средств защиты будет обработан, на указанный электронный адрес придет письмо. Письмо будет содержать ссылки для загрузки требуемого программного обеспечения, а именно на следующие компоненты:
  1. clprotected.exe - исполняемый модуль средства защиты программного обеспечения;
  2. clprotectedpo.dll - дополнительная библиотека, используемая в процедуре защиты;
  3. clactivated.exe - исполняемый модуль средства активации программного обеспечения;
  4. clactivatedpo.dll - дополнительная библиотека, используемая в процедуре активации.

Защита dot NET сборки

Перед процедурой защиты необходимо сформировать список серийных номеров в определенном формате.
Можно получить список серийных номеров случайного характера и сохранить в требуемом формате с помощью специально разработанной утилиты.
В ходе защиты программы был определен следующий список серийных номеров.
Защита выбранной dot NET сборки выполняется с помощью командной строки. Формат команды защиты clprotected следующий:

clprotected файл /serial /out /server /port
Где:
  1. Файл - путь и имя защищаемого файла сборки .NET;
  2. serial - путь и имя xml файла со списком серийных номеров;
  3. out - путь и имя файла сохранения результата обработки сборки (необязательный параметр)
  4. server - имя сервера защиты (необязательный параметр)*
  5. port - TCP порт сервера защиты (необязательный параметр)*
* - в версии 1.0 параметр игнорируется

Защита сборки программы производится следующей командой

clprotected SamplePRotectedAppGenerateGraph.dll /serial:sampleserial.xml

В процессе защиты сборки, на экране отображается описывающая состояние процесса защиты информация (рис.1).

Ход выполнения процедуры защиты программного обеспечения

Рис. 1 Ход выполнения процедуры защиты сборки
По завершению процесса защиты программного обеспечения, в текущем каталоге сохраняются его результаты в виде файла с расширением clp и именем сходным с именем защищаемой сборки. В данном случае был получен файл SampleProtectedAppGenerateGraph.dll.clp
который и следует распространять вместо защищаемой сборки с инсталлируемым программным обеспечением.
В данном случае полученный файл содержал следующие данные (приведена их часть)

750630575416201565152576025261855300751240605040705582516360331344178070480187...

Полученные данные ничего не описывают и носят случайных характер.

Активация программного обеспечения

Исполняемый модуль защищаемой программы был разработан с учетом необходимости активации и проверки на активацию. Так для ввода серийного номера и активации программы было добавлено диалоговое окно, реализованное в файле dlgActivated.cs. В реализации основного диалогового окна были добавлены программные элементы:
  1. Функция private void активацияToolStripMenuItem_Click - выполняет вызов процедуры показа диалогового окна для ввода серийного номера и активации программы;
  2. Свойство private bool IsActivate - для проверки является ли программа активированной.
Процедура активации программного обеспечения производится командой clactivated.exe. Формат команды следующий:

clactivated файл [/serial | /sh] /out /server /port /hide
Где:
  1. файл - путь и имя файла защищенной сборки;
  2. serial - серийный номер приложения (на сервер будет отправлен хеш значение);
  3. sh - md5 хеш значение серийного номера
  4. out - путь сохранения результата (необязательный параметр);
  5. hide - не выводить результаты работы (необязательный параметр);
  6. server - имя сервера активации (необязательный параметр)*;
  7. port - TCP порт сервера активации (необязательный параметр)*.
* - в версии 1.0 параметр игнорируется

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

Дополнительное диалоговое окно ввода серийного номера программы

Рис. 2 Диалоговое окно ввода серийного номера

Алгоритм события нажатия кнопки "Активировать" (рис. 2) реализованный в программе формирует следующую команду

clactivated SampleProtectedAppGenerateGraph.dll.clp /serial:XP3CI-DN127-TF06V-EO2J6-NS2LC
В процессе активации программы, на экране отображается следующая описывающая состояние процесса активации информация (рис.3).

Ход процесса активации программного обеспечения
Рис. 3 Ход выполнения процедуры активации приложения

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

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

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