Безопасность в Дельфи

       

Способ применения


Каждый защищаемый pas-модуль (unit) в секции implementation должен содержать:
  • Uses RntUtil; В этом файле содержатся общие утилиты для работы с символьными метками в коде, в том числе функцию StrPosLen и ModuleSize. Кроме того, в этот файл можно добавить API для работы с аппаратной системой защиты, например, с электронным ключом GUARDANT.
  • В защищаемом файле в любом месте implementation, но до первого использования шифрования также следует добавить {$INCLUDE codeutil.inc} - там будут содержаться непосредственные обращения к аппаратной части защиты. Конечно, текст данного файла можно было бы оформить в виде модуля, и вставить в uses, но это облегчит работу взломщика - все обращения к ключу оказываются централизованными. Кроме того, появляются трудности при отладке bpl - библиотек.
  • Другие необходимые модули в uses, в прилагаемом примере - IniFiles.

Файл codeutil.inc, в принципе, для каждого модуля может отличаться, делая защиту еще более разнообразной.

Программе-кодеру необходимо задать названия файлов, содержащих:
  • список генерируемых include-файлов
  • путь к компилятору dcc32.exe и список проектов для компиляции
  • список модулей, которые необходимо обработать (соответствует списку проектов)

После ввода и редактирования списков возможна автоматическая генерация исходных кодов, компиляция и шифрование, как по шагам, так и всё сразу.

Кроме того, генерируемые исходные файлы содержат опцию условной компиляции {$IFDEF CODING}, и таким образом, если в DEFINE проекта не задана опция CODING, то в него включаются "пустые" файлы и при компиляции в IDE получаются незащищенные (retail) версии модулей, что облегчает "чистую" отладку кода разработчиком. Сама программа-кодер всегда компилирует с опцией {$DEFINE CODING}.

В файл конфигурации dcc32.cfg необходимо добавить все необходимые пути (опция -uPath) , их можно скопировать из Library Path в Environment Options.



Содержание  Назад  Вперед