Деобфускация и Обфускация

Разберу понятия подробно — сначала суть каждого термина, затем цели, методы и примеры. Обфускация (obfuscation) Обфускация это процесс преобразования исходного кода программы с целью сделать его максимально сложным для понимания и анализа, при этом сохранив исходную функциональность. Термин происходит от английского obfuscate — «запутывать», «затемнять». Цели обфускации защита интеллектуальной собственности (алгоритмов, бизнес‑логики); затруднение обратной инженерии (реверсивного анализа кода); сокрытие вредоносных действий (в случае зловредов); обход антивирусных сигнатур (для вирусов и эксплойтов); предотвращение взлома и модификации программы. Основные методы обфускации Лексическая обфускация:замена осмысленных имён переменных и функций на бессмысленные наборы символов;удаление комментариев и форматирования (пробелов, отступов).Пример:До: int userCounter = 0;После: int a123x9 = 0; Преобразование данных: изменение способов представления данных (например, число 9 может быть записано как 10−1, 3×3 и т. д.); шифрование строк и констант; разбиение сложных структур данных на части. Преобразование управления: добавление «мёртвого» кода (выполняется, но не влияет на результат); добавление недостижимого кода (никогда не выполняется); «переплетение» функций (объединение нескольких функций в одну); клонирование функций (создание множества похожих версий одной функции); нарушение естественного потока выполнения программы. Профилактическая (превентивная) обфускация: создание препятствий для автоматических инструментов деобфускации; использование особенностей и уязвимостей декомпиляторов. Деобфускация Деобфускация, обратный процесс, направленный на восстановление читаемости и понятности кода, упрощение его анализа. По сути, это попытка вернуть обфусцированный код к виду, максимально близкому к оригинальному.…