Об авторе
Дэвис Чепмен (Devis Chapman) начал заниматься программированием еще при подготовке магистерской диссертации по специальности музыкальная композиция. Разрабатывая приложения для компьютерного музицирования, он вдруг открыл для себя, что создание программ приносит ему не меньше удовольствия, чем создание музыкального произведения. Не так много времени понадобилось ему, чтобы прийти к убеждению, что новое увлечение предоставляет ему более широкие возможности зарабатывать на жизнь, чем статус "вечно голодного артиста". С тех пор Дэвис переключился на искусство "программной композиции", отдавая предпочтение приложениям типа клиент/сервер и Internet-технологиям. Дэвис известен как автор книг Teach Yourself Visual C++ 6 in 21 Days, Web Development with Visual Basic 5 и Building Internet Applications with Delphi 2. Кроме того, он является соавтором книг MFC Programming with Visual C++ 6 Unleashed, Special Edition Using Active Server Pages и Running a Perfect Web Site, Second Edition. Последние 10 лет он живет в Далласе, штат Техас, и работает консультантом в компании Rare Medium, занимающей видное место среди создателей Web-приложений и удостоенной премии за лучшие разработки в этой области. С Дэвисом можно связаться по адресу [email protected].
Посвящение
Как всегда, я посвящаю книгу своей очаровательной жене Доре. И как всегда обещаю, что в следующем году у меня появится время, чтобы проводить в твоем обществе День Святого Валентина, твой день рождения и все остальные праздники.
Благодарности
Я хотел бы высказать глубокую благодарность всем тем, кто непосредственно повлиял на мое решение взяться за написание этой книги и кто в той или иной степени был причастен к превращению этой идеи в реальность. Первое место в этом списке, конечно же, принадлежит моей жене Доре, которая не отказала мне в возможности так много времени уделить работе над этой книгой.
Место после нее по праву принадлежит Крису Вебу (Chris Webb) из Macmillan, который настоял на том, чтобы я все-таки взялся за эту книгу. Кроме Криса, я хочу поблагодарить Стива Роу (Steve Rowe) и всех остальных участников нашей "команды", которые на протяжении всего времени работы над книгой относились ко мне с величайшим терпением. Особой благодарности заслуживает Джон Хувен (John Hooven), на плечи которого легло все техническое редактирование. Нельзя не упомянуть и Джона Бейна (John Banes) из Microsoft, который не пожалел времени и ответил на все мои вопросы. Я не могу не поблагодарить моих коллег из Rare Medium, которые с пониманием отнеслись к моему "писательству" и не слишком перегружали меня текущей работой.
И наконец, моя благодарность читателям, которые решились на отчаянный шаг и купили эту книгу. Надеюсь, перевернув последнюю страницу, они об этом не пожалеют.
Предисловие
Могу себе представить, о чем вы сейчас думаете. Вы увидели на полке эту книгу и взяли ее в руки из чистого любопытства, подумав "Шифрование и защита программ? При чем здесь Visual Basic? Разве это не тема для программистов, работающих на C/C++?". Конечно, программистам, работающим с этими языками, как говорится, сам Бог велел обратить внимание на эту область, но последние версии среды Visual Basic также позволяют решать такого рода задачи, не привлекая на помощь всю мощь языков, подобных C/C++.
Следующий вопрос, который возникает у читателя, взглянувшего на обложку этой книги, скорее всего, такой: "А не нужно ли быть суперматематиком, чтобы осилить материал этой книги? Разве шифрование не требует глубоких познаний в математике?" Нельзя ответить однозначно на этот вопрос. Конечно же, само по себе шифрование требует сложных и громоздких вычислений, но в большинстве случаев программисту не нужно об этом беспокоиться. Вы можете продолжать разрабатывать приложения в среде Visual Basic, пользуясь привычной методикой, но при этом сможете придать им совершенно новые функциональные возможности, добавив несколько новых компонентов.
Благодаря разработчикам из Microsoft все описанные в этой книге хитроумные функции, обеспечивающие защиту приложений, встроены в последние версии операционных систем Windows. Эта книга научит вас, как ими грамотно пользоваться и реализовать в собственных приложениях самые современные методы защиты. То есть главное в решении этой задачи — суметь переложить на операционную систему все самые сложные функции.
Но, конечно, это не значит, что разработчику приложения вообще делать нечего. Вам придется написать пусть и сравнительно небольшую, но хорошо продуманную программу управления, организующую обращение к функциям операционной системы. При этом необходимо несколько расширить свои познания в методике программирования в среде Visual Basic, поскольку, скорее всего, раньше вам не приходилось иметь дело с приемами, описанными в этой книге. Вам придется довольно глубоко проникнуть в таинства работы, которые до сих пор среда Visual Basic скрывала от вас, предлагая апробированные стандартные решения.
Должен вас сразу предупредить — эта книга не для новичков. Если свою первую программу на Visual Basic вы написали на прошлой неделе, вам (пока) еще рано браться за эту книгу. Я писал эту книгу в расчете на тех, кто уже имеет определенный опыт разработки приложений в среде Visual Basic. Если же созданные вами приложения уже прошли определенную обкатку (и вы вместе с ними), смело приступайте к изучению материала этой книги и пусть вас не смущают некоторые незнакомые термины.
Как организована эта книга
Работая над этой книгой, я мысленно представлял себе, что среди ее читателей будут и те, кто имеет такие же привычки в отношении технических книг, как и я сам. Если вы, читатель, относитесь к книгам так же, как я, то, как правило, редко читаете ее как детектив — сразу от начала и до конца (хотя в этом тоже нет ничего плохого — многие поступают именно так). Обычно я ищу в подобных книгах ответы на вопросы, которые меня мучают сейчас, а потому выискиваю в них те главы, в которых содержатся нужные мне в текущий момент сведения. Возможно, через некоторое время (через две-три недели, а может, через год) у меня появятся другие проблемы, и тогда я опять вернусь к этой книге и прочту те главы, которые пропустил или только бегло пролистал.
В результате, как мне кажется, получилась книга, которую можно использовать двояко. Ее можно читать начиная с первой страницы и до конца, а можно начать чтение и с любой главы. Если материал главы требует знания некоторых основных положений, изложенных в каких-либо предыдущих главах, на этом акцентируется внимание читателя в специальном разделе, помещенном в самом начале главы. В этом разделе текст выделен так, чтобы сразу бросаться в глаза. Таким образом, если вам незнакомы эти положения, прежде всего просмотрите указанные в этом разделе главы.
Тематически главы книги охватывают три основных проблемы. Первые главы посвящены в основном методам шифрования, в последующих описана методика "защищенного" программирования, а в заключительных вы сможете познакомиться с аспектами создания защищенных приложений, выходящими за рамки собственно программирования.
Требования к системе
Идеальным для освоения материала книги и приведенных в ней примеров кода программ является новейший компьютер с операционной системой Windows 2000 и установленной средой разработки Visual Basic 6, оснащенный всеми современными средствами звукового и визуального общения с пользователем, имеющий максимально возможную оперативную память и большое свободное пространство на диске. Вам нужно также иметь свободный доступ к компьютеру, работающему под управлением операционной системы Windows 2000 Server, на котором установлен сервер службы сертификации (Certificate Server), и обладать правами администратора на обоих этих компьютерах. Но это, конечно, идеальный случай.
Если же с заоблачных высот вернуться на грешную землю, то оказывается, что такие требования нужны для освоения материала далеко не всех глав этой книги, поскольку каждая из изложенных в ней тем предъявляет свои требования к средствам аппаратной и программной поддержки.
Большую часть материала, касающегося методов шифрования, можно освоить на практике, работая с операционной системой Windows 95 и имея в своем распоряжении программу Microsoft Internet Explorer версии 3.02 или более позднюю. Но лучше, если у вас будет Internet Explorer 4. Среди рассмотренных в этой книге системных функций есть и такие, которые имеются только в операционных системах Windows 98 или Windows 2000, а некоторые только в Windows 2000.
При изучении глав, в которых рассматривается механизм сертификации, вам понадобится доступ к службе сертификации (можно использовать и общедоступную службу Verisign, но до тех пор, пока вы не будете готовы раскошелиться на кругленькую сумму, придется пользоваться временным сертификатом). Идеальный вариант — это иметь на каком-либо из компьютеров, к которым у вас есть доступ по сети, программу Microsoft Certificate Server. Учтите, однако, что некоторые COM-объекты, используемые для взаимодействия со службами сертификации, имеются только в версии Certificate Server, предназначенной для Windows 2000. Программа Microsoft Certificate Server доступна только пользователям операционных систем Windows NT Server версии 4.0 или более поздней и Windows 2000. Вы не найдете ее в составе Windows NT Workstation версии 4.0 и Windows 2000 Professional.
При изучении материала, касающегося защиты приложений, вам понадобится операционная система Windows NT версии 4.0 или Windows 2000. Но в нескольких главах изложены методики, доступные только в Windows 2000.
Если вы все еще читаете это предисловие, прислонившись к стеллажу в книжном магазине, думаю, что уже наступило время принимать решение, подходит вам эта книга или нет — идти в кассу или поставить ее обратно на полку. Я подвожу здесь черту под общими соображениями о предмете этой книги, поскольку время дорого и лучше потратить его на основной материал. Если вы решили приобрести эту книгу, я буду вам очень благодарен за доверие.
Спасибо.
Дэвис Чепмен (Davis Chapman)