Делаем на Делфи простую защиту Shareware программ

Каждый программист рано или поздно  выпустит продукт всей своей жизни, о котором он думал денно и нощно. Игра, утилита или еще что-то – неважно. Главное в том, что именно на этот продукт чаще всего и возлагаются большие надежды о  большом заработке и известности. И вот тогда встает вопрос о защите своего детища. Вообще, гонка программистов и крэкеров меня всегда забавляла. Одни делают защиты, просиживая сутки напролет за мониторами, вторые  с не менее маниакальным рвением ломают бастионы этой защиты.  И чем ценнее программа, тем пристальнее внимание к ней всевозможных взломщиков.  Тем не менее, программу все же нужно как-то защитить. В своей скорее обзорной статье «Защита программ от декомпиляции» я затрагивал (правда, поверхностно) аспекты защиты программы и что делать в этом случае. Однако нам нужно привыкать делать самим защиты  своих программ.  В любом случае, это полезный навык. Итак, как я и обещал, мы приступим к изучению целого цикла уроков по защите ваших платных программ. Оговорюсь сразу – ряд статей будет на Делфи, другие на С++, остальные на .Net или же других языках. Сейчас важно понимать, что программист, зацикленный на одной платформе кандидат ухода в дворники (его навыки просто никому не будут нужны). Я не случайно завел разговор о Делфи. Кто бы, что не говорил, но этот язык будет еще долго жить. Embarcadero прилагает все усилия по его продвижению.  У меня у самого сейчас стоит Delphi X2 и я ей очень доволен. Программ, написанных на Delphi масса, и многие из них полезны. Например, всем известная программа для тестирования компьютера Everest написана как раз на этом языке. Кроме того, многие виды защиты так или иначе универсальны алгоритмически. Выбор языка остается лишь предпочтением программиста. Давайте создадим проект VCL Application, дадим ему имя ShareWare и вставим в событие OnShow формы следующий код: [delphi] procedure TForm1.FormShow(Sender: TObject); var atom: integer; SPECSYMBOLS: string; begin if GlobalFindAtom(‘THIS_IS_SOME_OBSCUREE_TEXT’) = 0 then atom := GlobalAddAtom(‘THIS_IS_SOME_OBSCUREE_TEXT’) else begin SPECSYMBOLS := #10 + #13; ShowMessage(‘Данная версия предусматривает только один запуск’ + ‘в текущем сеансе Windows.’ + SPECSYMBOLS + ‘Для повторного запуска необходимо перезапустить Windows, или,’ + SPECSYMBOLS + ‘что лучше, — ‘ + SPECSYMBOLS + ‘ЗАРЕГИСТРИРУЙТЕСЬ !’); Close; end; end; [/delphi] Здесь мы использовали атомы (что это такое, можете посмотреть в других моих уроках) для хранения некоторой строки (у меня это ‘THIS_IS_SOME_OBSCUREE_TEXT’). Алгоритм защиты прост как дважды два – при запуске формы код проверяет атомы в глобальной таблице атомов на наличие вышеупомянутой строки функцией GlobalFindAtom (). Если ничего не нашли, то задаем атом с этой строкой. Однако если GlobalFindAtom () вернула число отличное от 0, то это будет означать, что атом с заданной строкой существует и поэтому программу нужно закрыть. Данная защита не ущемляет функционал программы. Просто вы сможете запустить ее всего один раз за сеанс работы Windows. Несмотря на то, что этот код предельно примитивен, его стоит взять на заметку. В других уроках мы изучим более надежные средства защиты программ.

Яндекс.Метрика