Реверс-инжиниринг (обратная разработка) — анализ программ или устройств с целью понять, как они работают, без доступа к исходному коду и документации.
Как проводится реверс-инжиниринг
Аналитики обычно сочетают два подхода:
- Статический анализ — изучение файла без запуска. Дизассемблеры и декомпиляторы IDA Pro, Ghidra (АНБ открыло её код в 2019 году) и Binary Ninja превращают машинный код в читаемый ассемблер или псевдо-C.
- Динамический анализ — запуск программы под отладчиком (x64dbg, WinDbg, GDB) или в инструментированной среде с наблюдением за памятью, вызовами API и сетевым трафиком.
Реверс железа добавляет логические анализаторы и извлечение прошивок из микросхем памяти.
Зачем он нужен в безопасности
- Анализ вредоносного ПО — исследователи разбирают вредоносное ПО, чтобы понять его возможности, извлечь индикаторы и написать правила обнаружения. Авторы вредоносов сопротивляются с помощью обфускации, упаковщиков и антиотладочных приёмов.
- Поиск уязвимостей в закрытых продуктах — часто в рамках программ bug bounty.
- Сравнение патчей (patch diffing) — сравнив программу до и после обновления, можно увидеть исправленную ошибку. Атакующие делают так же и за считаные дни создают эксплойт для необновлённых систем — поэтому так важно быстро ставить патчи.
- Совместимость и аудит — проверка того, что на самом деле делает устройство или приложение с данными пользователей.
Правовые и этические аспекты
Во многих странах реверс-инжиниринг для исследований безопасности и обеспечения совместимости разрешён, но лицензионные соглашения и законы об авторском праве (например, американский DMCA) устанавливают ограничения. Найденные уязвимости исследователи обычно раскрывают скоординированно, вместе с производителем.