Контакты:

Автор статьи: Mathew Schwartz

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

В начале, эта методика применялась для технического оборудования, а сейчас она используется при работе с программными продуктами, базами данных и даже человеческими ДНК. Обратное проектирование является важным инструментом в области компьютерной техники и её программного обеспечения. Программы пишутся на понятных всем программистам языках программирования, например C++ или JAVA. Но для запуска программы на компьютере она должна быть преобразована в понятный компьютеру язык нулей и единиц (бинарный код). Для этого созданы программы-компиляторы. После компиляции, программа в машинных кодах становиться непонятной большинству программистов. Для решения этой проблемы применяются методы, позволяющие машинный код перевести в более понятный формат. Один из таких инструментов – программа декомпилирования.

Обратное проектирование используется во многих целях: как инструмент изучения; как способ спроектировать новые или аналогичные продукты, которые дешевле тех, что в настоящее время доступны на рынке; чтобы заставить программное обеспечение работать более эффективно и объединить информацию между различными операционными системами или базами данных; с целью раскрытия новых недокументированных характеристик коммерческого продукта.

Известным примером обратного проектирования является опыт фирмы Phoenix Technologies Ltd, расположенной в Сан Хосе. В середине 80-ых компания решила произвести BIOS для PC, которые будут совместимы с BIOS компьютеров на платформе IBM-PC. (BIOS – это программа управления стартом PC при его включении; см. Technology QuickStudy, 25 июня.)

Желая оградить себя от обвинений в нелегальном и незаконном копировании BIOS IBM, Phoenix применил метод обратного проектирования, называемый “Чистая комната“ или “Китайская стена“. В начале, одна группа инженеров скрупулезно исследовала IBM BIOS (примерно 8 КБ) и сделала это настолько точно, насколько это возможно и без всяких упоминаний и ссылок на исходный код IBM BIOS. Затем, Phoenix подключил к работе другую команду программистов, которая ничего не знала о IBM BOIS и никогда не видела исходных кодов. Используя для работы только спецификацию функций первой команды, вторая команда написала оригинальный BIOS, который работал в соответствии со спецификацией.

В результате этого, Phoenix BOIS отличался исходными кодами от IBM BOIS, но во всех приложениях и режимах компьютер работал аналогично.

Другие компании, такие как Cyrix Corp. и Advanced Micro Devices Inc., применив метод обратного проектирования к микропроцессорам Intel Corp. разработали свои собственные, чтобы сделать менее дорогой совместимый с INTEL чип.

Очень немного операционных систем когда- либо было проанализировано методом обратного проектирования. Операционные системы содержат миллионы строк кодов, в сравнении с 32КБ кода современного BIOS. Поэтому, такой анализ был бы слишком дорогим.

В тоже время, прикладные программы являются хорошим объектом для анализа методом обратного проектирования, так как немного разработчиков программного обеспечения раскрывают свой исходный код. Технически, интерфейс прикладного проектирования (API) должен облегчить совместную работу программ. Но эксперты говорят, что большинство API плохо написано. У имеющих отношение к третьей стороне производителей программного обеспечения нет другого выбора, как исследовать программы методом обратного проектирования, добиваясь их работы и гарантировать программную совместимость.