Техника и философия хакерских атак II (фрагмент [1/3])
kk@sendmail.ru
предисловие ко второму изданию
Первая попытка переиздания этой книги привела к тому, что ее текст был полностью переписан. Так родились "Фундаментальные основы хакерства - искусство дизассемблирования", а "Техника и философия хакерских атак" так и продолжала продаваться в своем первозданном виде. Но время шло. Материал книги устаревал и объемы продаж неуклонно падали. Наконец, в какой-то момент времени было принято решение о ее переиздании.
Существовало два пути - вновь полностью переписать книгу (как это уже случилось однажды) или же внося мелкие, "косметические", правки исправить наиболее грубые ошибки и ляпы, а так же дополнить книгу новыми главами, посвященными современным хакерским технологиям.
Под "современными хакерскими технологиями" в первую очередь подразумеваются лазерные диски. Писать о защите дискет, когда массовые DVD-рекордеры уже на подходе как-то не кузяво. Первоначально это замышлялась как отдельная глава, однако, в процессе работы над материалом ее объем раздулся до неприемлемых для главы размеров и она самопроизвольно отпочковалась в независимую книгу с рабочим названием "Техника защиты лазерных дисков" .
Как говориться в хорошей русской пословице: котлеты отдельно, а мухи отдельно. Пусть "Техника и философия хакерских атак" останется такой, какая она есть. Пусть она сохранит тот задорный дух, который во всех последующих книгах оказался неожиданно утрачен. В конце концов, в одну и ту же воду нельзя войти дважды и всякую книгу можно написать всего лишь раз.
Кардинальных изменений во втором переиздании нет, однако, добавлено большое количество нового материала, увеличившего объем книги с прежних 272 до ~400 страниц, то есть без малого в два раза! (подробнее обо всех нововведениях можно прочитать в главе "what's new"). Так же исправлено более сотни "багов" различной степени тяжести. Автор выражает огромную признательность всем тем читателям, которые присылали свои замечания обо всех обнаруженных ими ошибках и неточностях. Это: $ERRgI0 /HI-TECH, Kory Wee Key, Roman Hady, Алексей Доля, Лада Стольникова, Легезо Денис, Максим Мошков, Александр Гацко, Art D. Sereduk, C0r, CrazyHamsters, GreY ][akeR, JeskelA, neo_pegas, Patriot, Sergey R., Stacy /Z/, Staver V., The Skull, ctocopok, Александр Милославский, Александр Прохоренко, Александр Романенко, Алексей Карташев, Алексей Нурлибаев, Алексей Орлов, Анатолий Каллисто, Андрей Тамело, Антон Сергеев, Аркадий Белоусов, Виктор Ковшик, Влад Тихомир, Георгий ZZ, Даниил, Илья Васильев (Арви Хэкер), Илья Медведовский, Константин Иванов, Майк Журавлев, Макеев Андрей, Никита Чугайнов, Павел Жемерикин, Роман Бернгардт, Рубанов Сергей, Чуб Сергей, Энди Малышев и многие-многие другие не упомянутые здесь.
what's new (или что нового во втором издании)
Главы "от EXE до CRK" и "новый рубеж" были полностью переписаны с учетом всех пожеланий и замечаний, полученных от благодарных читателей. Теперь они намного более понятны для новичков, чем ранее. Исчезли резкие перескоки с одной мысли на другую, заделаны "разрывы" в нити повествования, добавлены новые хитрости и приемы: В общем, добрая половина текста книги фактически заново переписана с нуля.
Глава "Способы затруднения анализа программ" пополнилась двумя подразделами: "точки останова на win32 API и противодействие им" и "неявный самоконтроль как средство создания не ломаемых защит", раскрывающих секреты установки stealth-точек останова на API-функции и предлагающая различные методики раскрытия такой "стелсовости" (помните, анекдот "извините, что мы сбили ваш самолет - мы же не знали, что он stealth"). Техника неявного самоконтроля целостности своего кода относится к новейшим методикам защиты и насколько мне известно еще нигде не была описана ранее.
Глава "примеры реальных взломов" пополнилась описаниями взломов компиляторов Intel С++ 5.0.1, Intel Fortran 4.5, Intel C++ 7.0, программ для "прожига" лазерных дисков Record Now и Alcohol 120%, а так же добавлено широкомасштабное исследование линкера UniLink от Юрия Харона, являющееся по сути самостоятельной книгой в книге.
В качестве "затравки" (читай саморекламы) в новое издание "Техники и философии хакерских атак" включено два фрагмента моей новой книги "Техника защиты лазерных дисков" (название рабочее). Глава "способы взаимодействия с диском на сектором уровне" подробно рассказывает о способах низкоуровневого управления CD-ROM приводами с прикладного уровня, включая даже такую экзотику как прямое обращения к портам ввода-вывода в Windows NT/W2K (это не опечатка! легальное управление устройствами через порты ввода-вывода в Windows все-таки возможно). Глава "защиты, основанные на нестандартных форматах диска" демонстрирует технику создания защищенных лазерных дисков, не копирующихся существующими на сегодняшний день автоматическими копировщиками (в том числе Clone CD и Alcohol 120%), но показывает как такие диски могут быть хакнуты в ручную.
для кого предназначена данная книга
Первое издание "Техники и философии хакерских атак" писалось и позиционировалась в первую очередь на профессионалов и для профессионалов. Однако, отношение самих профессионалов к этой книге было более чем скептическим, зато начинающие кодокопатели приняли ее с большим восторгом. Поэтому, в настоящем издании "Техники и философии хакерских атак" было решено сделать упор на новичков, в результате чего стиль изложения сменился от поверхностного к углубленному. Пробная публикация отдельных глав книги в Сети вызвала резкий протест профессионалов, ругающих автора (то есть меня) за большое количество "воды" и слишком "разжеванные" с их точки зрения объяснения. Другие же читатели резонно возражали - что для одного "вода", для другого - хлеб, пиво и каша в придачу. Понятное дело, что каждый читатель хотел видеть книгу такой, какая была бы наиболее удобна ему одному, но удовлетворить интересы всех категорий читателей в одной-единственной книге (к тому же не претендующей на полноту и новизну излагаемой информации) - невозможно.
Тем не менее, автор делает основную ставку на начинающих - как на наиболее многочисленную и благодарную аудиторию. Профессионалы же вообще не нуждаются в подобных книгах. "Есть" - говорили они мне - "у тебя с десяток интересных страниц, но они размазаны по всему тексту и потому читать такую книгу можно только по диагонали в порядке общего ознакомления". Нет, не подумайте, что такие заявления меня обидели! Напротив, помогли лучше понять свое место в этом мире и свое предназначение.
Чего греха таить - до профессионалов настоящему автору еще очень далеко и потому позиционировать свои книги для той аудитории, к которой он не принадлежит, мягко говоря не тактично. Правда, понятие "профессионала" и "начинающего" очень условны и многие начинающие легко уделывают иных "профессионалов". Количество настоящий профессионалов, строго говоря, до смешного мало - в прямом смысле слова считанные единицы. Так что невозможно сказать заранее: найдете ли вы что-то новое в данной книге или нет. Единственный способ выяснить это - купить ее и прочитать.
другие книги этого автора
Помимо "Техники и философии хакерских атак" моему перу принажат следующие книги перечисленные в хронологическом порядке их написания: "Техника сетевых атак", описывая операционные системы UNIX и Windows NT/W2K, высокоуровневые протоколы (TELNET, POP3, IMAP4, NNTP, HTTP) и уязвимости их реализаций, отдельная глава посвящена методикам поиска ошибок переполнения буфера с помощью дизассемблера. Книга содержит большое количество исторического и философского материла и всячески рекомендуется к прочтению.
- "Образ мышления - дизассемблер IDA" - справочник по внутренней архитектуре IDA и языку IDA Си. Если вы пользуетесь IDA и хотите пользоваться ей профессионально, выжимая из этого замечательного инструмента все, на что он способен - это книга для вас! В противном случае, боюсь, что она покажется вам слишком случной и неинтересной. Во всяком случае методологии в ней нет:
- "Фундаментальные основы хакерства - искусство дизассемблирования" - простым и доступным языком описывает как дизассемблируются программы и помогает вам сделать в этом дремучем лесу свои первые шаги. Прочитав эту книгу, вы узнаете как идентифицируются основные конструкции языков высокого уровня - функции (включая виртуальные), циклы, ветвления и т. д. Настоятельно рекомендуется всем хакерам в качестве настольной книги.
- "Укрощение Интернета" - представляет собой сборник ответов на часто задаваемые мне вопросы, касающиеся секретов выживания в агрессивной среди Сети и ее ближайшем окружении. Книга ориентирована на продвинутых пользователей и для хакеров не представляет практически никакого интереса (впрочем, судя по отзывам, даже хакеры читают ее с нескрываемым удовольствием).
- "Техника оптимизации программ" - подробно описывает подсистему памяти современных компьютеров (тех, что базируются на процессорах Pentium-III, Pentium-4, Athlon и оперативной памяти типа SDRAM) и раскрывает множество эффективных алгоритмов обработки данных, дающих двух - трехкратный прирост производительности. Ориентирована на программистов, заботящихся об эффективности своих программ.
- "ПК - решение проблем" - сборник статей опубликованных в различных журналах в различное время. Одни из них ориентированы на хакеров, другие - на программистов, третьи - на пользователей. Большая помойка одним словом. Между тем, отзывы о ней в своей массе положительные и потому навряд ли вы будете жалеть, что купили ее.
о планах на ближайшее будущее
Многие читатели спрашивают меня: над какими книгами я сейчас работаю и какие собираюсь написать в ближайшем будущем. Что ж! Я очень рад, что мое творчество оказалось востребовано и потому с радостью делюсь своими планами.
В настоящий момент заканчивается написание книги "Техника защиты лазерных дисков" (название рабочее!), фрагменты которой включены в настоящее издание "Техники и философии хакерских атак" (см. "способы взаимодействия с диском на сектором уровне" и "защиты, основанные на нестандартных форматах диска"). Скорее всего, к моменту выхода "Техники и философии", "Техника защиты:" уже появится в продаже.
Следующая (по плану) книга "Ассемблер - это просто!" (название рабочее) представляет собой путевой самоучитель по Ассемблеру, передающий дух и философию этого языка. В основу книги положены уникальные методики обучения ассемблеру, разработанные автором и базирующееся на ассемблерных вставках: в то время как все остальные руководства с первых же строк буквально бросают читателя в пучину системного программирования, устрашая его ужасающей сложностью архитектуры процессора и операционной системы, настоящая книга оставляет читателя в привычном ему окружении языков Си (и/или Паскаль) и постепенно, безо всяких резких скачков, знакомит его с внутренним миром процессора.
Об остальных планах говорить пока рано, т. к. они слишком размыты и не определены. Как всегда - слишком много планов, но слишком мало времени и потому чрезвычайно трудно отобрать среди них наиболее приоритетные. Между прочим, конечный выбор не в последнюю очередь зависит и от вас - читателей! Пишите: какие темы вас больше всего волнуют и какие книги вы купили бы с наибольшим удовольствуем (см. "как связаться с автором").
условные обозначения
Все исходные тексты, приводимые в настоящей книге, нумеруются уникальными восьмизначными числами, что позволяет избежать их перенумерации при добавлении в книгу новых примеров, а так же дает возможность "прозрачно" ссылаться на листинги, приведенные в остальных моих книгах.
Знак "$" в ссылках на листинги интерпретируются как "следующий листинг". Соответственно, "$ - 1" обозначает предыдущий листинг.
Строка, выделенная инверсным цветом, обычно (т. е. если не оговорено обратное) символизирует текущую позицию курсора в отладчике.
как связаться с автором
Проще всего связаться с автором по электронной почте. Пишите на kk@sendmail.ru Многие читатели ошибочно полагают, что я завален горами писем и потому без особой нужны не рискуют мне писать. На самом деле, количество приходящих писем скорее мало, чем велико и я очень люблю их получать! Поэтому, если у вас есть такое желание - пишите безо всяких стеснений!