Смерть обфускации? Не спешите хоронить.
Недавно прочитал на xakep.ru статью «Смерть обфускации. Как ИИ ломает защиту кода за часы».
Там всё по делу: LLM + Frida теперь за пару часов разбирают даже серьёзные DexGuard/DexProtector, восстанавливают семантику, цепляют runtime и превращают статическую защиту в тряпку.
Звучит как приговор, да?
Но это приговор только для ленивых и стандартных решений. Обфускация не умерла — она просто ушла на следующий уровень. На тот, где ИИ начинает захлёбываться.
Вот что реально работает против связки LLM + Frida в 2026-м:
1. Matryoshka Wall (вложенная матрёшка)
Код обфусцируется слоями. Первый слой - control-flow flattening и opaque predicates.
Второй слой берёт уже обфусцированный результат и делает из него новый исходник.
4–6 уровней.
LLM видит только верхний слой и пытается его «понять». А настоящая логика раскрывается только в runtime, причём каждый уровень зависит от предыдущего. Токен-лимит, невозможность держать в голове глубокую вложенность + динамика = модель начинает уверенно галлюцинировать. Тесты на Claude Opus 4.6 показывают падение качества деобфускации до 8–12%. Это уже не задержка, это провал.
2. Custom runtime dispatcher + self-modifying code
Забудьте про готовые OLLVM-пассы. Делаем свой тонкий виртуальный интерпретатор (bytecode-машина), где инструкции генерируются и мутируют в памяти прямо во время работы.
Ключи от обфускации завязываем на hardware (серийник устройства, MAC, CPUID и т.д.). Frida, конечно, увидит runtime, но предсказать и восстановить всю картину - пипец как сложно, когда паттерна нет.
Кстати, именно по этому тяжелее реверсить aarch64 приложения на x86 платформе. Транскод + сдвиги в памяти.
3. Adversarial generation (Vibecode-стиль)
Берём свою локальную модель и специально просим её насрать «умный мусор»: dead-код, который выглядит легитимно, математически корректен, но семантически ломает chain-of-thought.
Мелкие файлы с кучей cross-references. Шум, который специально заточен под то, чтобы LLM тонул.
4. Переезд критичной логики на сервер + JIT-токены
Статья на xakep это тоже упоминает - и правильно. Всё, что можно, уносим на сервер. Клиент получает только одноразовые JIT-токены и минимальный stub. Обфускация клиента становится вторичной.
Реалистично для соло-разработчика или небольшой команды
Вывод простой:
ИИ + Frida действительно убивают стандартную обфускацию. Но кастомная, layered, runtime-oriented и hardware-bound - пока живее всех живых. Просто теперь это не «включил обфускатор в Gradle и забыл», а настоящее оружие, которое нужно делать под себя. Заниматься архитектурой приложения, уровнями и контейнерезацией.
Обфускация жива.
Просто теперь она должна быть умнее.
Post #1343
49
- 👍 4
- 🤔 1