Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #53, АПРЕЛЬ 2005 г.

Защити себя сам

Денис Колисниченко

Спецвыпуск: Хакер, номер #053, стр. 053-028-1


(dhsilabs@mail.ru)

Ты написал программу и хочешь получить за нее материальное вознаграждение, поскольку морального вроде "Отличная программа, спасибо!" не всегда бывает достаточно. Как защитить свою программу от несанкционированного использования? В этой статье поговорим о нестандартных решениях, позволяющих защитить твои программы.

Демо-версия

Практически любую систему безопасности, разработанную одним человеком, другой может взломать. Почему? Потому что если один человек сделал что-то, наверняка найдется еще один, который сможет повторить это с точностью до наоборот. Кстати, о дизассемблировании программ мы тоже поговорим, только попозже. Предположим, ты выложил в интернет "защищенную" версию своей программы. Например, программа в одном из файлов, нарочно "замаскированном" под DLL, хранит счетчик запусков. Как только счетчик превысил число 60 (или любое другое), выводится сообщение о том, что пора бы уже заплатить за программу, и появляется окошко с полями ввода регистрационного имени и серийного номера.

Теперь попробуем проанализировать действия пользователей. А пользователи, как мы знаем, бывают разными. Один сразу же зайдет на твой сайт, свяжется по e-mail или позвонит по телефону. В итоге он обменяет несколько зеленых бумажек на заветный серийный номер. Другой пользователь попробует переустановить программу. В зависимости от твоего алгоритма защиты программа или сбросит счетчик, или сообщит пользователю все о том же: пора купить серийный номер. В первом случае будет сам-знаешь-что: твою программу будут использовать до очередного переформатирования жесткого диска. А во втором… Это зависит от пользователя. Или он попытается найти crack, или просто удалит программу и будет искать ее аналоги. Платить этот пользователь не будет: он бы это сделал с самого начала, разве что программа настолько уникальна, что в мире нет ее аналогов (правда в этом случае не думаю чтобы она была shareware). Почему не будет платить? А ты как часто платишь за используемые shareware-программы? Думаю, этот вопрос обсуждать больше не будем…

Остался еще один класс пользователей - несдающиеся пользователи. В Сети много программ, позволяющих наблюдать за процессами, а именно: выяснять, какой ключ реестра используют процессы, какие файлы открывают, какие данные они сбрасывают в файл, а какие загружают из файла. Такой пользователь за пару минут вычислит твой файл и обнулит счетчик. Все – твоя программа попала в вечное рабство. А если пользователь еще и не жадный, он напишет в Сети о том, как он ловко взломал твою программу. Что в итоге? Все пользуются твоей программой, а ты так ничего за нее и не получил.

Вот для этого нужна демо-версия, с помощью которой ты хоть что-нибудь да получишь – теорема такова, что "найдется хотя бы один пользователь, который заплатит за твою программу" (хорошо хоть не "один и только один"). Сейчас попробуем ее доказать.

Предположим, ты написал программу, формирующую бланк налоговой накладной (или любой другой бланк). Пользователь создал накладную, нажимает кнопочку "Печать", а ему в ответ "Введите серийный номер, иначе печатать не будем". Пользователю платить деньги не хочется. Он каким-то образом подбирает этот самый номер, и бланк выводится на печать. А теперь представим, что это демо-версия и в ней функции печати нет изначально. Будь у пользователя хоть десяток серийных номеров, ничего распечатать он не сможет. Выход один – связываться с тобой и заказывать полноценную версию. Как правило, демо-версии даже не взламываются – взламывать там нечего.

Содержание  Вперед на стр. 053-028-2