РЕЦЕНЗИИ

Ох, не слабы, братцы,

ох, не слабы

Плеск волны, мерцание

весла,

Крокодилы, пальмы,

баобабы

И жена французского

посла.

А. Городницкий

На день рождения коллега преподнес мне царский подарок - библиотеку английских книг по ВТ. Поскольку времени для чтения у меня крайне мало, то этим он лишил меня возможности читать что-либо другое на год вперед. И тем не менее я ему очень благодарен, поскольку среди подаренных им книг нашлось немало доставивших мне колоссальное удовольствие. Ниже я попытаюсь рассказать о наиболее интересных.

Прежде всего отмечу книгу Eldad Eilam. Reversing: Secrets of Reverse Engineering (Wiley Publishing, Inc, 2005, 589 с.). Это издание, как следует из его названия, посвящено обратной инженерии (ОИ).

Данный термин (reverse engineering, reversing) определяется как анализ, разбор (расшифровка) конструкции, структуры, построения программного или аппаратного изделия; восстановление структурной схемы и алгоритма работы; проектирование по [готовому] образцу; воспроизведение, обратная инженерия, разг. - передер. Все это обычно представляет собой процесс систематического разбора программы (восстановления ее исходного текста и структуры) или микросхемы для изучения алгоритмов работы с целью имитации или повторения некоторых или всех ее функций в другой форме или на более высоком уровне абстракции, снятия защиты, добавления новых возможностей, восстановления протоколов или исправления ошибок и др.

Помнится, когда я в 1988 г. написал статью в журнал "Микропроцессорные средства и системы" (МСиС) о придуманном мною дисассемблере, управляемом данными, рецензент, хотя и дал на нее положительный отзыв, прислал в редакцию закрытое письмо (мне его тайком показали сотрудники журнала) с сожалениями о том, на что люди тратят жизнь. В США обратная инженерия получила официальное признание в 1989 г., сейчас же по ней проводится даже ежегодная международная конференция (Working Conference on Reverse Engineering, WCRE), а вот в России эта тема как-то замалчивается и в научном плане считается чем-то неприличным. В то же время у нас в стране были крупные специалисты в этой области, создававшие декомпиляторы и другие развитые инструментальные средства обратной инженерии. Наверное, все дело в том, что ОИ в СССР массово применялась в основном для передера западного ПО, хотя на самом деле у нее есть множество и других применений - от обнаружения уязвимостей, вскрытия криптографических алгоритмов, защиты от копирования до оценки качества софта и изучения опыта конкурентов. Чаще всего ОИ используется для интеграции своих разработок с недокументированными или плохо документированными унаследованными приложениями. Например, при разработке системы бронирования авиабилетов "Сирена-2" (1975-1981 гг.) первые полгода были практически бесполезно потрачены на восстановление исходных текстов предыдущей версии - "Сирена-1", потому что все ее разработчики к тому моменту уже ушли из "Аэрофлота" и никакой документации и текстов не осталось вообще. В практике работы западных софтовых компаний ОИ применяется очень часто.

Отмечу важность обратной инженерии для обучения системных программистов - мне, например, разбор двоичных кодов нескольких реальных ОС дал в свое время гораздо больше, чем чтение десятка книг по теории. Не говоря уже о том, что это был очень увлекательный исследовательский процесс. Тогда, правда, проблема заключалась в том, что исходные тексты ОС было почти невозможно найти. Сейчас ситуация противоположная - в Интернете их сотни мегабайтов, да вот читать некому.

Замечу, что ОИ занимаются программисты очень высокой квалификации, поскольку нужно знать множество вещей о внутреннем устройстве микропроцессоров, чипсетов, ОС, систем программирования (вплоть до алгоритмов оптимизации кода), хорошо знать форматы файлов, API, структуры библиотек и массу всего другого.

Рецензируемая книга позволяет систематизировать такие знания. Она блестяще написана. Автор, имея многолетний опыт работы в данной области, прекрасно разбирается во всех деталях. "Secrets of Reverse Engineering" состоит из четырех частей. В первой даются базовые знания, необходимые для чтения других частей. Во второй - на реальном софте демонстрируются различные проекты по ОИ. В третьей - обсуждаются вопросы пиратства, управления цифровыми правами и общие принципы защиты ПО. Наконец, в четвертой - рассматриваются ОИ для платформы Microsoft .NET и теоретические вопросы построения декомпиляторов.

Помнится, на своем бенефисе Андрей Миронов пел одесские куплеты, в которых были строчки:

"Привет всем дамочкам приличным и, конечно, всем...

Здравствуйте, здравствуйте, здравствуйте вам!"

Это к тому, что данную книгу, разумеется, должен прочитать и каждый уважающий себя хакер :).

- Ну, и как обрести? - спросит заинтересовавшийся читатель.

- По Интернету, - отвечу, - сударь, по Интернету. Когда чем-то сильно заинтересуешься, книги с нужными знаниями приходят к нам сами. Да и, надеюсь, переведут ее на русский.

(Продолжение следует)

Версия для печати