...можно воспользоваться какими-нибудь сторонними решениями. И, на самом-то деле, это может оказаться далеко не таким плохим вариантом, поскольку написание грамотной защиты от взлома для вашего приложения может стоить гораздо дороже, чем покупка её на стороне.
Сторонняя защита - хорошо или плохо?
Здесь мы с вами, в общем-то, оказываемся перед извечной дилеммой. Либо же попытаться что-либо реализовать самостоятельно, с совершенно не гарантированным результатом, либо же купить этот компонент у кого-то, кто гарантирует результат, но не гарантирует, что это будет именно то, что вам нужно. Помимо принципа "время - деньги", здесь работает ещё один фактор. Это касается в наибольшей степени именно защиты программ, поскольку здесь типовые решения означают типовые (и достаточно неплохо изученные многими взломщиками) приёмы, что, в общем-то, может свести на нет всю защиту программы. С другой стороны, не факт, что ваша нетиповая защита окажется лучше типовой. Кроме того, почти все современные средства защиты отличаются весьма большой гибкостью, так что можно модифицировать (в разумных пределах) защиту и "подогнать" её к вашему программному продукту.
В общем-то, конечно, здесь каждый волен выбирать сам, но для сравнительно небольших продуктов хорошей альтернативой примитивной самодельной защите может стать использование специальных протекторов и упаковщиков. Что касается крупных решений, то здесь и технологии используются другие, однако суть от этого не меняется. Так что давайте сейчас посмотрим, какие инструменты защиты приложений можно найти на рынке, и как их можно применять.
Протекторы Windows-приложений
Исторически так сложилось, что именно под Windows пишется большинство коммерческих приложений - больших ли, маленьких ли, средних ли... Соответственно, и число желающих взломать эти приложения значительно больше числа тех, кто желает взломать Java-приложения или приложения под POSIX-системы. С последними, кстати, всё гораздо проще: в мире UNIX не так уж много коммерческих программ, которые были бы нужны большому количеству пользователей. Там гораздо чаще действует модель продажи не самих программ (то есть, фактически, права на их использование), а технической поддержки. Техническую поддержку не взломаешь, а потому создатели таких программ избавлены от кропотливого написания сложной защиты. Впрочем, такая модель продаж годится только для действительно больших и сложных продуктов. В Windows же идеология иная: здесь во главу угла поставлена простота, а потому техническая поддержка для множества программ сводится к ответу на достаточно простые с точки зрения разработчика программы вопросы.
Впрочем, я, кажется, отвлёкся. Итак, давайте посмотрим в сторону протекторов, используемых авторами сравнительно небольших по своим размерам программ, распространяемых в виде пробных версий с ограничением по времени или функциональности. Т.е. посмотрим на средства защиты для shareware-программ.
Они все, в общем-то, поддерживают практически одно и то же, и отличаются тем, что позволяют разработчику приложить самый что ни на есть минимум труда для создания более-менее эффективной защиты. То есть, фактически, можно ограничиться использованием "мастера", который предлагает большинство подобных программных продуктов. Конечно, такую защиту не назовёшь серьёзной, но для продуктов стоимостью порядка двадцати долларов что-то более существенное, пожалуй, будет даже избыточным.
Пожалуй, одна из самых известных на постсоветском пространстве программ подобного класса - это ASProtect. Вполне возможно, её популярность основана на том, что написана в своё время она была россиянином, а потому разработчики программ из СНГ старались поддерживать своего соотечественника. А, возможно, просто уровень защиты, обеспечиваемый ASProtect'ом, был в гармонии с ценой этого программного продукта... В общем, не суть важно. Найти программу можно по адресу www.aspack.com. У сайта есть русская версия, поэтому тот, кто не хочет читать описание программы на английском, может воспользоваться ей. Там же, кстати, можно найти ещё и упаковщик исполняемых файлов ASPack. К сожалению, нужно сказать о том, что популярность ASProtect'а способствовала тому, что появилось множество автоматизированных инструментов взлома защиты, встраиваемой в исполняемый файл этой программой, а также не меньшее количество статей, рассказывающих, как взломать такую защиту вручную. Пользователи программы также достаточно часто жалуются на различные баги, которые так и норовят испортить все усилия автора, плюс на не слишком хорошую работу службы поддержки. Тем не менее, благодаря сравнительно низкой цене (99 евро) ASProtect может оказаться привлекательным вариантом.
Следующий на очереди протектор - это EXECryptor. Он стоит в полтора раза дороже (149 евро), а не обновлялся, если верить сайту разработчиков, ещё дольше, чем ASProtect. Сам сайт, кстати, расположен по следующему адресу: www.strongbit.com/execryptor.asp. Собственно говоря, при разговоре об этой программе справедливо практически всё то же, что и при разговоре об ASProtect. Меньшее же количество жалоб в изрядной мере наверняка объясняется и меньшим количеством разработчиков, её использующих. Хотя, конечно, тоже не факт.
Есть ещё неплохой протектор под названием Obsidium. Найти его легко по адресу www.obsidium.de, а стоит он 79 евро. Он поддерживает виртуализацию кода, компрессию и шифрование, ограничение работы пробной версии программы по времени. С протектором вместе идёт SDK, который помогает реализовать защиту в программах, написанных на Delphi, C++ Builder, Visual C++, Visual Basic. Можно составлять "чёрные" списки из скомпрометированных ключей, которые при регистрации будут недействительны. Есть возможность привязки к конкретному "железу" конкретного пользовательского компьютера, а также защита запуска программы паролем. В общем и целом, конечно, этот список примерно такой же, как и у конкурентов Obsidium'а (я просто не писал так подробно, что они умеют), но более низкая цена и меньшая распространённость этого протектора являются его однозначными плюсами перед ASProtect'ом и EXECryptor'ом.
Ещё один хорошо известный, но куда более солидный, чем все предыдущие, программный продукт для защиты других программных продуктов от взлома называется SoftwarePassport. Раньше он назывался Armadillo, однако затем его почему-то переименовали (позволю себе прокомментировать, что, на мой взгляд, переименование было довольно-таки удачным). Найти его можно на официальном сайте разработчика, компании Silicon Realms, расположенном по адресу www.siliconrealms.com. Стоит SoftwarePassport $299. В отличие от множества других продуктов, этот предлагает специальную "родную" поддержку 64-битных операционных систем, но если вы пишете две версии приложения (под Win32 и Win64), то вам придётся потратить в два раза больше денег на покупку двух версий протектора. При этом стоит сказать, что, в отличие от тех программ, которые я упомянул выше, SoftwarePassport активно развивается своими создателями, о чём свидетельствует лента новостей сайта. Есть специальная поддержка сайтов по продаже программного обеспечения от компании Digital River (ей принадлежит львиная доля всех популярных регистраторов ПО), что также выделяет SoftwarePassport среди конкурентов.
Впрочем, наверное, стоит закончить рассказ о подобных инструментах для Windows, поскольку даже для этой операционной системы часто пишутся не native-приложения, а программы, работающие с помощью интерпретаторов или виртуальных машин. Защищаются эти программы по-другому, поскольку и для их взлома нужны не простые отладчики, а другие инструменты. Поэтому сейчас я расскажу о некоторых достойных тружениках фронта защиты подобных программ - обфускаторах.
Обфускаторы
Поскольку я уже рассказывал в рубрике "F.A.Q." о значении термина "обфускация", подробно останавливаться на нём не буду. Приведу определение из Википедии (надеюсь, вы на это не обидитесь): "Обфускация - запутывание кода программы, то есть приведение исходного текста или исполняемого кода к виду, сохраняющему функциональность программы, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции". В общем-то, именно этим обфускаторы и занимаются. В их цели не входит создание полноценной trial-защиты, включающей в себя ограничения на время работы программы, проверку "чёрных" и "белых" ключей и прочие подобные мелкие радости жизни. Обфускаторы задуманы исключительно для зашифровки того, что хотел сказать автор кода, и по действию более-менее похожи на шифровальщики нативного кода приложений.
Поскольку все интерпретируемые языки программирования, равно как и все платформы, использующие виртуальные машины, в одной статье не упомянуть, как бы я не старался, потому скажу только об обфускаторах для .NET и Java-приложений. Их, конечно, очень много, но именно из-за того, что их много, можно выделить самые популярные. Для .NET это Wise Owl Demeanor .Net, XenoCode и DotFuscator. Для Java - ProGuard, yGuard, RetroGuard и ещё полтора десятка. Здесь в силу специфики технологий стоит отметить, что для .NET почти все обфускаторы стоят денег, и не всегда их авторы оценивают свой труд скромно. Для Java можно легко найти свободные обфускаторы, качество работы которых ничуть не хуже коммерческих аналогов. Какой из этого можно сделать вывод? Правильно, что создание коммерческого обфускатора для Java - не самая лучшая бизнес-идея.
Для PHP, Perl и прочих интерпретируемых языков также можно найти обфускаторы - Google вам в руки и попутного ветра.
Резюме
Мне как-то прислали письмо, в котором сказали, что во время кризиса пункт "Резюме" в статье воспринимается неадекватно. Будем надеяться, что кризис не коснулся всех читателей настолько, что слово "резюме" существенно портит им настроение.
Резюмировать, впрочем, особенно нечего. Надеюсь, вы составили себе некоторое представление о том, какие возможности предлагают разные сторонние средства защиты (довольно, впрочем, простые и дешёвые). Если они вас не устраивают, это вовсе не означает, что нужно писать защиту самостоятельно. В конце концов, всегда можно заказать её у какой-либо команды фрилансеров или у компании, занимающейся оффшорным программированием. Или присмотреться к готовым решениям более высокого уровня. В общем, альтернатива есть в данном случае практически всегда, так что главное - подойти ко всему творчески.
Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by
Горячие темы