Фаззинг (Fuzzing):
- Что это: Метод автоматизированного тестирования, при котором в программу подается большое количество случайных, невалидных или неожиданных входных данных с целью спровоцировать сбой, утечку памяти или найти уязвимость.
- Типы: Dumb fuzzing (случайные данные) vs Smart fuzzing (на основе знания структуры данных, например, протокола). Coverage-guided fuzzing (AFL, libFuzzer) — "умный" фаззинг, который анализирует, какие ветви кода покрываются, и мутирует данные для достижения нового покрытия.
- Применение: Идеально для тестирования парсеров, протоколов, библиотек.
Обфускация (Obfuscation):
- Что это: Намеренное преобразование исходного или байт-кода с целью затруднить его понимание, анализ и реверс-инжиниринг, при сохранении функциональности.
- Зачем: Защита интеллектуальной собственности (алгоритмов), затруднение анализа вредоносного ПО (в защитных целях), усложнение поиска уязвимостей для атакующего.
- Методы: Переименование переменных/методов в бессмысленные имена, запутывание потока управления, шифрование строковых литералов.
- Важно: Не является надежной защитой. Затрудняет, но не делает невозможным анализ для мотивированного противника.