Эта страница описывает установочную архитектуру, а не обещает «одну кнопку». Любой kernel/boot модуль способен вызвать bootloop, kernel panic, потерю сети или несовместимость после OTA. Перед началом сохраните стоковый образ нужного раздела и убедитесь, что умеете загрузиться в bootloader/recovery и отключить модуль. Разблокировка bootloader на большинстве устройств стирает пользовательские данные.
У VPNHide/VPNHide Next нет полноценного non-root режима: их задача требует вмешательства в system_server, ядро или процесс zygote. APK без root может быть только интерфейсом, диагностикой или конфигуратором; он не получает права фильтровать Binder/netlink для чужого UID.
Non-root эквивалент по результату — внешний роутер/шлюз. Он не «подменяет» ответы, а устраняет сам локальный VPN с телефона. Второе пространство и repack/rootless Xposed не дают сопоставимого покрытия и добавляют isolation/integrity сигналы.
| Основа | Сильная сторона | Основной риск/ограничение | Официальная загрузка |
|---|---|---|---|
| Magisk | Наиболее распространённый root, модули, встроенный Zygisk | Root/userspace следы, boot image зависит от устройства | Magisk releases, официальная установка |
| KernelSU Next | Kernel-based su, App Profile, module mount |
Требуется совместимое ядро/LKM; версия manager и kernel должны совпадать | KernelSU Next releases, документация |
| APatch | KernelPatch runtime, подходит KPM-сценариям | Патчит boot.img, только ARM64; неправильный образ/ключ опасны |
APatch releases, русская инструкция |
Не переносите команды прошивки между устройствами. У Magisk раздел может быть boot или init_boot, а APatch в своей документации требует именно boot.img. Используйте инструкцию выбранного проекта и заводской образ именно вашей сборки.
Скачанный kernel/root-модуль нельзя считать безопасным только потому, что имя похоже на официальный release. Сначала сохраните URL страницы release и локально посчитайте хэш:
sha256sum vpnhide*.zip *.apk
unzip -l vpnhide*.zip | sed -n '1,120p'
unzip -p vpnhide*.zip module.prop 2>/dev/null
Для APK используйте apksigner из Android SDK Build-Tools:
apksigner verify --verbose --print-certs vpnhide.apk
Сравнивайте SHA-256 только с хэшем, опубликованным самим проектом. Хэш из случайного сообщения рядом с тем же файлом не является независимой проверкой. Не устанавливайте ZIP, который просит SuperKey, VPN-подписку или иной секрет через сторонний сайт/бот. Просмотр unzip -l не доказывает безопасность скриптов, но позволяет вовремя заметить неожиданный boot image, бинарники или посторонний установщик.
Оригинальный LSPosed/LSPosed архивирован 2 мая 2026 года и заявлял поддержку Android 8.1–14. Для современных устройств разумнее начинать с JingMatrix/Vector, который заявляет Android 8.1–17 Beta и совместимость Xposed API.
VPNHide требует от framework только системный scope. После установки:
System Framework.com.notcvnt.rknhardering в scope.system_server должен стартовать уже с активным модулем.Если конкретная версия VPNHide документированно требует LSPosed, а не Vector, используйте совместимую связку из её release notes. Не смешивайте два Xposed framework одновременно.
Исходник и загрузка: okhsunrog/vpnhide, последний release, карта векторов.
Архитектура:
System Framework — Java/Binder и PackageManager;portshide — loopback.kmod выбирайте первым на поддерживаемом GKI. Он работает в ядре, не трогает память RKNHardering и не обходится raw syscall. VPNHide публикует сборки по поколению KMI, например android14-6.1; это поколение ядра, а не обязательно версия Android.
KPM нужен для старых/non-GKI ядер или когда .ko не загружается. Он требует KernelPatch runtime: APatch либо KPatch-Next-Module. Это beta-путь с меньшим объёмом полевых тестов.
Zygisk — fallback. Он работает на уровне libc внутри целевого процесса, поэтому RKNHardering может увидеть maps, RWX/linker/hook расхождения, а raw syscall способен пройти мимо фильтра. Не называйте его эквивалентом kernel-бэкенда.
Никогда не ставьте kmod и KPM одновременно. Они могут хукать одни и те же функции ядра. Результат — зависание, kernel panic или bootloop. Если в системе осталось несколько backend ZIP, удалите лишние и убедитесь, что активен один.
System Framework, затем перезагрузитесь.com.notcvnt.rknhardering как цель Java/Native/Ports и observer для Apps, затем сохраните.Для актуальных версий пользовательская конфигурация upstream хранится в /data/system/vpnhide_config.json. Ручное редактирование допускается только после резервной копии и проверки JSON; invalid config означает ошибку синтаксиса или схемы. Обычно безопаснее использовать UI.
Read-only проверка:
adb shell uname -r
adb shell cmd package list packages -U | grep com.notcvnt.rknhardering
adb shell su -c 'ls -la /data/adb/modules | grep -i vpnhide'
adb shell su -c 'cat /data/system/vpnhide_config.json'
adb logcat -d | grep -iE 'VpnHide|Vector|LSPosed'
Исходник и загрузка: soranerai/vpnhide_next, последний release.
Заявлено внешним проектом: форк добавляет kernel-блокировку портов, MTU/MSS/TCP_INFO, GSO/PMTU, eBPF traffic stats, qdisc, UDP timing, IPv6 link-local и более полное proc/sysfs сокрытие. Режимы Мин, Сред, Макс переключают объём хуков. README проекта прямо предупреждает, что стабильность на всех ядрах не гарантируется и возможны bootloop/kernel panic.
Практический выбор:
Мин — сначала для проверки базовых ioctl/getifaddrs/netlink/routes;Сред — если RKNHardering продолжает видеть socket/MTU/MSS/PMTU признаки;Макс — только в лаборатории с рабочим recovery, когда конкретные proc/sysfs/BPF/qdisc/timing строки подтверждены.Не включайте Макс «на всякий случай». Чем больше kernel hooks, тем выше риск несовместимости и тем сложнее понять причину регрессии.
VPNHide Next LSPosed-модуль также должен работать через System Framework, без присутствия в процессе цели. Его kmod README описывает dev_ioctl, sock_ioctl, rtnl_fill_ifinfo, IPv4/IPv6 address netlink и /proc/net/route как базовые hook points. Сохраняйте точную версию APK и ZIP одной сборки: несовпадение control protocol способно дать частичную работу.
uname -r, Android build и название скачанного asset. Если release не заявляет совместимость с вашим ядром, не прошивайте его «для проверки» на основном устройстве.System Framework; перезагрузитесь.com.notcvnt.rknhardering, начните с режима Мин и сохраните конфигурацию.Сред, а затем на Макс только когда конкретная строка MTU/MSS/PMTU/BPF/qdisc/proc/sysfs остаётся положительной.README верхнего уровня описывает новое control device /dev/vpnhide_ctrl, тогда как отдельные README/старые сборки могут ещё упоминать /proc/vpnhide_targets и targets.txt. Это признак различий между ревизиями документации, а не повод создавать отсутствующий файл вручную. Для диагностики используйте UI конкретного release и read-only проверку:
adb shell su -c 'cat /proc/modules | grep -i vpnhide'
adb shell su -c 'ls -l /dev/vpnhide_ctrl /proc/vpnhide_targets 2>/dev/null'
adb logcat -d | grep -iE 'VPNHide Next|VpnHide|Vector|LSPosed'
no such file or directory означает, что путь отсутствует или эта ревизия использует другой интерфейс. Если модуль не виден в /proc/modules, а UI сообщает о рабочем native-слое, сначала сверяйтесь с архитектурой конкретного release: KPM/встроенный kernel patch не обязан выглядеть как обычный LKM.
Zygisk Next нужен KernelSU/APatch для Zygisk API или может заменять встроенный Magisk Zygisk. Его современный linker/anonymous memory режим заявлен как уменьшение следов, но совместимость модулей не гарантируется. Он не превращает process-local VPNHide backend в kernel-level фильтр.
Root hiding рассматривается отдельно в разделе о целостности. Сначала добейтесь правильной работы VPNHide, затем минимизируйте root surface. Одновременная установка нескольких hide-модулей затрудняет диагностику и может создавать новые mount/linker сигналы.
После установки не смотрите только на зелёный статус VPNHide.
Framework: в RKNHardering должны исчезнуть DIRECT_NETWORK_CAPABILITIES, INDIRECT_NETWORK_CAPABILITIES, VPN interface name/routes из LinkProperties.
Native: должны исчезнуть INTERFACE_ENUMERATION, TUNTAP_TYPE, GETIFADDRS_VPN, RTM_GETLINK_VPN, route/ifindex признаки. Если Java чистый, а native остаётся — проблема native backend, не LSPosed.
Ports: loopback скан не должен подтверждать SOCKS/HTTP/Xray/Clash API. Если порт открыт для shell, но недоступен UID цели, это ожидаемо.
Integrity: не должны появиться новые HOOK_MARKERS, RWX_MEMORY_REGIONS, LIBRARY_INTEGRITY, LSPOSED или β hook-consistency сигналы. Если они появились, проверьте scope и откажитесь от process-local backend.
Перед каждым kernel/module изменением сохраните:
/data/adb/modules и версии APK/ZIP;Откат выполняйте последовательно: отключите последний модуль в manager/safe mode, перезагрузитесь, проверьте сеть, затем удаляйте. Не удаляйте несколько компонентов сразу: иначе причина останется неизвестной. При bootloop используйте официальный rescue-механизм вашего root manager или восстановите сохранённый стоковый образ по инструкции устройства. Не импровизируйте с разделами.