# Какой Native-бэкенд выбрать **Native**-бэкенд скрывает VPN от кода, который работает ниже Java-фреймворка: прямые системные вызовы, `getifaddrs()`, netlink, `/proc/net`. Эту работу выполняют несколько разных реализаций. Ставить нужно **ровно одну**; на Дашборде приложение само подсказывает подходящую для вашего устройства и даёт имя файла для загрузки. ## Варианты - **Модуль ядра (Kmod)** — вариант по умолчанию и самый обкатанный. Хуки стоят в пространстве ядра, поэтому проверки анти-тамперинга, читающие память самого приложения, его не видят. Нужно GKI-ядро; ставится ZIP под вашу GKI-версию. См. [Установка модуля ядра](kmod-install.md). - **KPM** — то же скрытие на уровне ядра для ядер, которые `.ko` **не потянет**: старые или не-GKI ядра, вендорские ядра без исходников, ядра, отклоняющие неподписанные модули. Один универсальный модуль, но ему нужна среда KernelPatch. См. [Установка бэкенда KPM](kpm-install.md). - **Zygisk** — запасной вариант в пользовательском пространстве: хукает libc **внутри процесса каждого приложения-цели**. Работает без совместимого ядра, но слабее: прямые вызовы `svc` его обходят, а банковские и платёжные приложения могут заметить хуки в своём процессе. Берите его, когда ни один ядерный бэкенд не подходит. См. [Установка модуля Zygisk](zygisk-install.md). - **Встроенный (Built-in, для самостоятельной сборки ядра)** — путь интеграции для тех, кто собирает ядро с патчами проекта. Готовые ядра пока не являются поддерживаемым вариантом распространения. Это не ZIP, добавляющий поддержку в обычное ядро. См. [руководство для разработчиков](https://github.com/okhsunrog/vpnhide/tree/main/builtin). Самостоятельной интеграции также нужна соответствующая обвязка с активатором для передачи настроек. Обнаружение драйвера ещё не доказывает применение конфигурации. ## Оставьте один Native-бэкенд Устанавливайте один Native-бэкенд. Выбор активатора приложением **не гарантирует**, что все остальные установленные бэкенды перестали перехватывать вызовы. В частности, оставшиеся хуки Zygisk могут продолжать работать внутри процессов приложений. Загрузчики ядерных бэкендов проверяют конфликты и могут отказаться от загрузки. Эти проверки не повод оставлять конфликтующие установки: удалите лишний компонент и перезагрузитесь. Не пытайтесь принудительно запустить `.ko` и KPM вместе: они перехватывают одни функции ядра и могут повесить устройство. Если вы собрали ядро с Built-in, не добавляйте поверх `.ko` или KPM; оставьте обвязку своей интеграции. **Java** и **Native** закрывают разные способы обнаружения. Для более полного покрытия рекомендуются оба, но можно использовать один слой с меньшим покрытием. Роли Apps нужен Java/LSPosed. См. [Способы обнаружения](detection-vectors.md). ## Пусть выбирает Дашборд Решать вручную не обязательно. Откройте **Дашборд**: он определит ваше ядро и порекомендует kmod, KPM или Zygisk с точным именем файла для загрузки. Если рекомендованный бэкенд не загрузится, Дашборд объяснит причину и подскажет, что попробовать.