Обратная разработка
Материал из StopCopyright!.
Обратная разработка (англ. reverse engineering) - исследование некоторого устройства или программы с целью изучения принципов его работы. Часто процесс обратной разработки применяется для создания копий закрытых алгоритмов и технических решений.
Обратная разработка может противоречить закону об авторском праве и патентному законодательству.
[править] Области применения
Аппаратное обеспечение
Обратная разработка используется для создания электронных устройств без существенных затрат на разработку "с нуля" путем исследования готовых решений конкурентов. Применялась в СССР для создания цифровой электроники.
Программное обеспечение
Обратная разработка программного обеспечения используется для изучения принципов работы закрытых алгоритмов (например, алгоритмов систем защиты от копирования) и, иногда, последующего их взлома. Обратная разработка применяется антивирусными корпорациями для исследования поведения и функций подозрительных программ.
[править] Обратная разработка ПО
Типичные средства обратной разработки программного обеспечения:
- Дизассемблеры - используются для преобразования машинного кода в код на языке ассемблер, который анализируется специалистом. Для защиты от этого метода анализа используется обфускация (запутывание) кода или шифрование участков кода с последующим их дешифрованием во время выполнения программы;
- Декомпиляторы - используются для преобразования исполняемого кода в код на языке высокого уровня (например, Pascal). Практически не используются специалистами при проведении обратной разработки машинного кода (т.к. машинный код обладает весьма малым количеством необходимых для полной и качественной декомпиляции данных). Используется при исследовании байт-кода (например, байт-кода Java, который выполняется на виртуальной машине JVM);
- Отладчики - используются для выполнения программ "под контролем" отладчика, что позволяет контролировать выполнение определенных участков кода (например, участка кода, который отвечает за вывод сообщения "Введите регистрационный ключ") и, при необходимости, останавливать работу программы на этих участках для дальнейшего исследования. Для защиты от отладки используются различные антиотладочные трюки (например, замер времени выполнения различных участков кода для обнаружения точек останова);
- Снифферы - используются для исследования сетевых протоколов. Для защиты от этого метода анализа может использоваться криптография.
Известные случаи обратной разработки программного обеспечения:
- Закрытый протокол SMB был исследован, а затем реализован в свободном ПО Samba. Данный протокол реализует совместное использование файлов, принтеров и последовательных портов в Windows (реализация этого протокола в Samba добавила поддержку Unix и Unix-like систем);
- Обратная разработка кода Windows позволила добавить поддержку Windows API в Unix и Unix-like системах (см. проект Wine) и ReactOS (свободный клон Windows);
- Обратная разработка была использована для создания возможности редактирования документов Microsoft Office в OpenOffice;
- Обратная разработка протокола обмена сообщениями Oscar (ICQ) позволила создать множество неофициальных клиентов этой сети;
- Исследования ранних закрытых версий протокола обмена сообщениями Mail.Ru Агент были использованы для сбора данных о пользователях и рассылки спама.
[править] Ссылки
- http://www.wasm.ru Портал, содержащий различные статьи и инструменты на тему обратной разработки
- http://cracklab.ru
- http://reversing.net Форум по реверсингу

