Update README for new dashboard UI and fix CI lint

- Rewrite install instructions: app-first flow with Dashboard recommendation
- Document per-app L/K/Z layer toggles and Zygisk caveat
- Describe full diagnostics system (module status, LSPosed config validation,
  version mismatch detection, native install recommendation, live protection
  checks)
- Add shell configuration in collapsible section for advanced users
- Sync EN and RU versions
- Fix signing config crash when keystore.properties is missing (CI lint job)
This commit is contained in:
okhsunrog 2026-04-13 20:58:47 +03:00
parent 14af7b7ec4
commit f66ef2e638
3 changed files with 117 additions and 63 deletions

View file

@ -25,59 +25,86 @@ vpnhide решает обе проблемы двухуровневой архи
## Какие модули нужны?
Всегда нужен **lsposed** (уровень Java API) плюс один нативный модуль:
Всегда нужно **приложение VPN Hide** (`vpnhide-lsposed.apk`) плюс один нативный модуль. Вкладка **«Обзор»** в приложении определит ваше устройство и порекомендует нужный:
- **`kmod` + `lsposed`** (рекомендуется) — полностью out-of-process, невидим для anti-tamper. Требуется поддерживаемое GKI-ядро (см. ниже).
- **`zygisk` + `lsposed`** — используйте, если ваше устройство не поддерживается сборками kmod или если нет возможности установить модуль ядра.
- **`kmod`** (рекомендуется) — полностью out-of-process, невидим для anti-tamper. Требуется поддерживаемое GKI-ядро.
- **`zygisk`** — используйте, если ваше ядро не поддерживается kmod.
См. [Установка](#установка) для пошаговой инструкции.
## Установка
Скачайте последний релиз из [Releases](https://github.com/okhsunrog/vpnhide/releases).
### kmod + lsposed (рекомендуется)
### Шаг 1 — Приложение VPN Hide + LSPosed
1. Установите `vpnhide-kmod-<ваш-gki>.zip` через менеджер KernelSU-Next → Модули → Установить из хранилища
2. Установите `vpnhide-lsposed.apk` как обычное приложение
3. В менеджере LSPosed включите модуль vpnhide и добавьте **«System Framework»** в его область действия
4. Перезагрузите устройство (обязательно — хуки LSPosed внедряются в `system_server` при загрузке, поэтому модуль должен быть активен до запуска `system_server`)
5. Откройте приложение VPN Hide, предоставьте ему root-доступ (Magisk запросит автоматически; на KernelSU-Next выдайте разрешение вручную в менеджере) и выберите целевые приложения
1. Установите `vpnhide-lsposed.apk` как обычное приложение
2. В менеджере LSPosed включите модуль VPN Hide и добавьте **«System Framework»** в его область действия
3. Перезагрузите устройство (обязательно — хуки LSPosed внедряются в `system_server` при загрузке, поэтому модуль должен быть активен до запуска `system_server`)
4. Откройте приложение VPN Hide и предоставьте ему root-доступ (Magisk запросит автоматически; на KernelSU-Next выдайте разрешение вручную в менеджере)
**Как узнать поколение GKI:**
### Шаг 2 — Нативный модуль
Откройте приложение VPN Hide. На вкладке **«Обзор»** приложение определит ваше устройство и ядро и покажет, какой именно нативный модуль нужно установить:
- Если ядро поддерживается — будет рекомендован конкретный файл kmod (например, `vpnhide-kmod-android14-6.1.zip`)
- Если нет — будет рекомендован модуль zygisk (`vpnhide-zygisk.zip`)
Установите рекомендованный модуль:
- **kmod:** через менеджер KernelSU-Next → Модули → Установить из хранилища
- **zygisk:** через менеджер KernelSU-Next или Magisk → Модули
Перезагрузите устройство после установки нативного модуля.
### Шаг 3 — Выбор целевых приложений
Откройте приложение VPN Hide → вкладка **«Приложения»**. Используйте переключатели **L** / **K** / **Z** для управления уровнями защиты каждого приложения (LSPosed, модуль ядра, Zygisk), или нажмите на строку, чтобы переключить все уровни сразу. Нажмите «Сохранить».
После изменения списка принудительно остановите и перезапустите затронутые приложения — хуки вступают в силу при следующем запуске.
> **Примечание:** некоторые приложения обнаруживают хуки Zygisk. Для таких приложений оставьте **Z** выключенным и используйте kmod + LSPosed.
<details>
<summary><b>Настройка через командную строку (для продвинутых)</b></summary>
Редактируйте `/data/adb/vpnhide_kmod/targets.txt`, `/data/adb/vpnhide_zygisk/targets.txt` или `/data/adb/vpnhide_lsposed/targets.txt` напрямую (одно имя пакета на строку). Принудительно остановите и перезапустите затронутые приложения для применения изменений.
</details>
<details>
<summary><b>Ручной подбор GKI (если хотите выбрать файл kmod самостоятельно)</b></summary>
1. На телефоне откройте **Настройки → О телефоне** и найдите строку **Версия ядра**. Она выглядит примерно так: `6.1.75-android14-11-g...`
2. Вам нужны две части из этой строки: версия ядра (`6.1`) и поколение android (`android14`). Вместе они образуют ваше поколение GKI: `android14-6.1`
3. Скачайте соответствующий файл из релиза: `vpnhide-kmod-android14-6.1.zip`
Также можно выполнить `adb shell uname -r` через ADB, чтобы увидеть ту же строку версии ядра.
Также можно выполнить `adb shell uname -r` через ADB, чтобы увидеть строку версии ядра.
> **Важно:** `android14` в строке ядра — это НЕ версия Android, а поколение ядра. Например, все Pixel с 6 по 9a используют ядро `android14-6.1` вне зависимости от того, стоит ли на них Android 14 или 15. Серия Pixel 10 использует `android16-6.12`.
> **Важно:** `android14` в строке ядра — это НЕ версия Android, а поколение ядра. Например, все Pixel с 6 по 9a используют ядро `android14-6.1` вне зависимости от того, стоит ли на них Android 14 или 15.
### zygisk + lsposed
1. Установите `vpnhide-zygisk.zip` через менеджер KernelSU-Next или Magisk → Модули
2. Установите `vpnhide-lsposed.apk` как обычное приложение
3. В менеджере LSPosed включите модуль vpnhide и добавьте **«System Framework»** в его область действия
4. Перезагрузите устройство (обязательно — хуки LSPosed внедряются в `system_server` при загрузке)
5. Откройте приложение VPN Hide, предоставьте ему root-доступ (Magisk запросит автоматически; на KernelSU-Next выдайте разрешение вручную в менеджере) и выберите целевые приложения
## Настройка
**Приложение VPN Hide (рекомендуется):** откройте приложение VPN Hide (устанавливается как `vpnhide-lsposed.apk`) и предоставьте ему root-доступ (Magisk запрашивает автоматически; на KernelSU-Next выдайте разрешение в менеджере). Приложение показывает все установленные приложения с иконками, названиями и поиском. Отметьте приложения, от которых нужно скрыть VPN, нажмите «Сохранить». Работает и с kmod, и с zygisk — автоматически записывает во все нужные файлы через `su`.
**Командная строка:** редактируйте `/data/adb/vpnhide_kmod/targets.txt` или `/data/adb/vpnhide_zygisk/targets.txt` напрямую (одно имя пакета на строку). Для применения изменений требуется перезагрузка.
После изменения целей принудительно остановите и перезапустите затронутые приложения — хуки вступают в силу при следующем запуске приложения.
</details>
## Проверка
Откройте приложение VPN Hide, перейдите на вкладку «Диагностика» и запустите все проверки при активном VPN. Приложение автоматически добавит себя в список целевых. Все 26 проверок должны показать PASS.
В приложении есть встроенная система диагностики, которая автоматически обнаруживает большинство проблем с настройкой.
**Обзор** (запускается при каждом открытии приложения):
- Статус модулей для всех трёх уровней (установлен, активен, версия, количество целей)
- Валидация конфигурации LSPosed — читает базу данных LSPosed и проверяет, что VPN Hide включён, System Framework в scope, и нет лишних приложений в scope (частая ошибка при настройке)
- Обнаружение несоответствия версий — сравнивает версии установленных модулей с версией приложения и подсказывает, что именно нужно обновить
- Рекомендация нативного модуля — определяет ядро устройства и подбирает нужный файл kmod, или рекомендует zygisk, если ядро не поддерживается
- Проверка защиты в реальном времени (при активном VPN) — выполняет 16 нативных и 5 Java API проверок, чтобы убедиться, что VPN действительно скрыт
Все обнаруженные проблемы показываются в виде карточек с конкретными инструкциями по исправлению.
**Диагностика** — детальная разбивка по каждой проверке с индивидуальными результатами PASS/FAIL для всех 26 векторов обнаружения. Полезна для отладки, когда «Обзор» показывает частичную защиту.
## Компоненты
| Директория | Что | Как |
|---|---|---|
| **[kmod/](kmod/)** | Модуль ядра (C) | Хуки `kretprobe` в пространстве ядра. Нулевой след в процессе приложения. ([подробнее](kmod/README.md)) |
| **[lsposed/](lsposed/)** | LSPosed-модуль + приложение (Kotlin + Rust) | Хуки `writeToParcel` в `system_server` для per-UID фильтрации Binder. APK служит для выбора целей, диагностики (26 проверок) и управления модулями. ([подробнее](lsposed/README.md)) |
| **[lsposed/](lsposed/)** | LSPosed-модуль + приложение (Kotlin + Rust) | Хуки `writeToParcel` в `system_server` для per-UID фильтрации Binder. APK предоставляет обзорную панель (статус модулей, проверка версий, валидация конфигурации LSPosed, рекомендации по установке), поуровневое управление приложениями и диагностику. ([подробнее](lsposed/README.md)) |
| **[zygisk/](zygisk/)** | Zygisk-модуль (Rust) | Inline-хуки `libc.so` в процессе приложения. Альтернатива kmod. ([подробнее](zygisk/README.md)) |
## Покрытие обнаружения