Урок23. Защита программы от бесплатного использования. Испытательный срок.
Вместо предисловия. На этом уроке мы рассмотрим немного теории, которая будет полезна как для начинающих, так и для профессиональных программистов. Для вторых этот урок будет наиболее полезен, поскольку считаю, что профессионал начинается там, где его программы стают востребованными. Вам может показаться удивительным, но от начинающего писателя программ до разработчика востребованных приложений - один шаг. В моем случае переход от языка программирования pascal на object pascal занял не больше недели, после чего была написана довольно интересная программа, структура которой и порядок работы до сих пор загадка:). В большинстве случаев перед продажей программного продукта заказчик требует испытательный или ознакомительный срок. Возможно даже, что он испытывает программу уже на ранних стадиях разработки, желая убедиться в работоспособности, убедиться в правильности направления процесса программирования. И будет совсем неудивительно, если он вдруг откажется от ваших услуг, услуг программиста. Это не означает, что заказчик бросил пользоваться программой. Возможно, его устраивает и текущая версия. Или ваша программа полностью готова, тогда такая проблема может иметь место. Труднее может быть в случае распространения программы в сети internet, когда вы ее пускаете в свободное плаванье, надеясь, что она не утонет в море бизнес приложений, а принесет желаемый доход в ваш кошелек. Автор этой статьи имеет довольно горький опыт работы с заказчиком. Свыше 50% полностью готовых и работоспособных программ до сих пор не оплачены, находятся на стадии "испытания" или отбракованы навсегда. Скорее всего, во всем этом виноват наш постсоветский менталитет, стремление к халяве. Тут вы можете не согласиться, но я у вас спрошу, а ваш интернет браузер, почтовая программа, наконец, операционная система, купленная? Порой, мы даже и не задумываемся над этой проблемой, покупая компакт диск с новой версией программы, с новой версией операционной системы. Труд человека должен быть оплачиваем. Программный продукт этот как и результат производства, например стул, требует затрат как физических, так и умственных сил. Как бы то ни было, а защищать свои программы от наглого халявного эксплуатирования вы должны самостоятельно. И просто так погрозить пальчиком бывает недостаточно. По уровню вашей квалификации в области программирования пользователь может и судить о возможной угрозе, поэтому может хватить и простого предупреждения. Если ваши программы предназначены для определенного заказчика, то, скорее всего у этой организации, группы людей, или одного пользователя плохо с программированием (если сами не смогли справиться со своей проблемой). Отсюда вывод - поломать вашу защиту им будет настолько же проблематично, насколько самим написать программу от начала и до конца. Я не учитываю тех людей, которые этим занимаются профессионально, так называемых хакеры, но услуга взлома одной средней программы может стоить намного дороже ее самой. Имеет смысл ломать только при глобальном, неоднократном использовании пользователями, например, ломают даже аппаратную защиту HASP, используемую бухгалтерским программным комплексом 1С. Это я веду к тому, что абсолютно 100% защиты от взлома, нелицензионного тиражирования нет. Поэтому вы не должны слишком много сил отдавать организации защиты. Если на то будет большая необходимость, ее сломают все равно. Но иметь защиту от простого чайника надо обязательно. Хватит и нескольких строчек продуманного программного кода. Теперь поговорим о методах защиты и способах воздействия на сознание бесстыжего пользователя. Это может быть как простое предупреждение с временной блокировкой работы, как приложения, так и всей операционной системы или прекращение работы программы на данном компьютере вообще (с физическим удалением всех компонентов программы - деинсталляция). Итак, программа написана и установлена на компьютер заказчика. Ей дан испытательный срок. Не дай Бог вам сказать прямо об этом пользователю. Тогда он может искать окружные методы еще до ответных действий программы. При этом его действия могут быть непредсказуемы, например позовет знакомого программиста со стороны и похвастается, что эта программа имеет какую-то хитрую защиту. Если возникнет остановка производства после, например полугодового использования всего программного комплекса, то вас найдут и за кратчайшие сроки, причем тут стоимость программы может и возрасти. Инфляция, знаете ли:). Как кто-то когда-то сказал, стоимость данных может быть большей самого компьютера. Поэтому ставя зеркализацию дисков на компьютеры, в первую очередь думают про сохранение данных на случай выхода из строя дискового накопителя. Допустим, вы даете пользователю 30 дней испытательного срока. Об этом должно быть обязательно где-нибудь ненавязчиво написано, типа "Незарегистрированная версия. Пожалуйста, зарегистрируйтесь в 30 дневный срок". Желательно в заставке при загрузке программы (урок 8), можно и в окне "О программе". Тогда вы можете во всем обвинить заказчика, что он не придерживался условий эксплуатации программы, если одним прекрасным утром программа исчезает с диска со всеми набранными на месяц данными. Теперь мы подошли к способам бесплатной работы, предупреждения (и наказания). Я разделю их на три группы: 2. Отказ от работы после истечения заданного срока. Довольно большой процент программ, имеющих изначально не тронутую хакерами защиту, имеют такой способ испытательного срока. 3. По истечению бесплатного использования программы она делает специальную пометку в реестре и полностью удаляется. Если пользователь оставил заначку в виде резервной копии программы, то она тоже сама удалится, как только прочитает эту пометку при запуске. Хотя я и предлагаю вашему вниманию этот метод, все же не советую его использовать т.к. он наиболее конфликтный. 100% гарантии у вас нет, что эта процедура не сработает на уже купленной версии, и вы можете тем самым потерять ценного клиента. Но, тем не менее, вот идея. Перед уничтожением всех данных программы, а обычно они располагаются в каталоге вашей программы, необходимо закрыть все открытые файлы. Далее все файлы по очереди уничтожаются командой: DeleteFile(НАЗВАНИЕ_ФАЙЛА); При этом их восстановление возможно специальной утилитой, например UnErase. Сложнее будет восстановить физически затертый файл. Для этого вам надо такой файл создать заново процедурой Rewrite и закрыть. Далее файл нулевого размера можно удалить. Восстановление таких данных без специальных средств дисковых редакторов невозможно. Стандартными средствами восстанавливаются только перезаписанные нами нулевые файлы. Пользователь при этом только напрасно потеряет время. Можно сказать уверенно, что все данные из такого удаленного файла навсегда утеряны. :povtor Далее запускаете этот bat файл на выполнение командой WinExec или ShellExecute, после чего закрываете свою программу. Используя преимущества многозадачности системы, вы порождаете внешний процесс, который удалят вашу программу. А теперь три примера для каждой рассмотренной группы. Пример первый вы можете скачать по этой ссылке (5КБ). Не буду подробно останавливаться на работе этой программы, можете самостоятельно раскрыть проект и изучить работу как отдельных команд, так и всей программы в целом. Пример второй немного сложнее. В третьем примере вы можете узнать, как программа уничтожает себя и все свои данные. Ее вы можете забрать по этой ссылке (3КБ). Пример удаления запущенной EXE программы был взят мной из моей же программы, в которой есть свойство автоматического обновления по сети. С уважением, ведущий уроков Semen semen@krovatka.net
|