diff --git a/VERSION b/VERSION index a918a2a..ee6cdce 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.6.0 +0.6.1 diff --git a/kmod/module/module.prop b/kmod/module/module.prop index 43ee297..3496770 100644 --- a/kmod/module/module.prop +++ b/kmod/module/module.prop @@ -1,6 +1,6 @@ id=vpnhide_kmod name=VPN Hide (kernel) -version=v0.6.0 -versionCode=600 +version=v0.6.1 +versionCode=601 author=okhsunrog description=Hides VPN interfaces from selected apps at the kernel level via kretprobe. Invisible to anti-tamper SDKs. Manage targets via VPN Hide app. diff --git a/lsposed/app/build.gradle.kts b/lsposed/app/build.gradle.kts index 3aab691..7860762 100644 --- a/lsposed/app/build.gradle.kts +++ b/lsposed/app/build.gradle.kts @@ -15,8 +15,8 @@ android { applicationId = "dev.okhsunrog.vpnhide" minSdk = 29 targetSdk = 35 - versionCode = 600 - versionName = "0.6.0" + versionCode = 601 + versionName = "0.6.1" ndk { abiFilters += listOf("arm64-v8a") diff --git a/lsposed/app/src/main/assets/changelog.json b/lsposed/app/src/main/assets/changelog.json index 7ac555e..c0eef83 100644 --- a/lsposed/app/src/main/assets/changelog.json +++ b/lsposed/app/src/main/assets/changelog.json @@ -1,59 +1,82 @@ { - "version": "0.6.0", + "version": "0.6.1", "sections": [ - { - "type": "added", - "items": [ - { - "en": "App hiding mode in Protection — hide selected apps from selected observer apps at the PackageManager level. Observer apps can no longer list, resolve, or query hidden apps.", - "ru": "Режим скрытия приложений в разделе «Защита» — скрывайте выбранные приложения от выбранных приложений-наблюдателей на уровне PackageManager. Наблюдатели больше не могут перечислять, находить или запрашивать скрытые приложения." - }, - { - "en": "Ports hiding mode plus new vpnhide-ports.zip module — block selected apps from reaching 127.0.0.1 / ::1 ports to hide locally running VPN/proxy daemons (Clash, sing-box, V2Ray, Happ, etc.).", - "ru": "Режим скрытия портов и новый модуль vpnhide-ports.zip — блокируйте выбранным приложениям доступ к портам 127.0.0.1 / ::1, чтобы скрыть локально работающие VPN/прокси-демоны (Clash, sing-box, V2Ray, Happ и т. д.)." - }, - { - "en": "Ports module integration in the dashboard — shows install state, active rules, observer count, and version mismatch/update warnings.", - "ru": "Интеграция модуля скрытия портов в панель — показывает статус установки, активность правил, число наблюдателей и предупреждения о несовпадении версий или доступных обновлениях." - } - ] - }, - { - "type": "changed", - "items": [ - { - "en": "The old Apps tab is now Protection, split into three modes: Tun, Apps, and Ports.", - "ru": "Прежняя вкладка «Приложения» теперь называется «Защита» и разделена на три режима: Tun, Apps и Ports." - }, - { - "en": "Ports rules apply immediately on Save and are restored automatically on boot.", - "ru": "Правила скрытия портов применяются сразу после сохранения и автоматически восстанавливаются после загрузки устройства." - }, - { - "en": "vpnhide-ports.zip is now included in the release/update pipeline with Magisk/KernelSU update metadata.", - "ru": "vpnhide-ports.zip теперь включён в пайплайн релизов и обновлений с метаданными для Magisk/KernelSU." - } - ] - }, { "type": "fixed", "items": [ { - "en": "Fixed LinkProperties filtering so VPN routes are stripped more reliably from app-visible network snapshots.", - "ru": "Исправлена фильтрация LinkProperties: VPN-маршруты теперь надёжнее удаляются из сетевых snapshot'ов, видимых приложению." - }, + "en": "Magisk versions before v28 failed to install vpnhide-ports and vpnhide-kmod with an unpack error — restored the META-INF/com/google/android/{update-binary,updater-script} entries the older managers expect.", + "ru": "Magisk до v28 не мог установить vpnhide-ports и vpnhide-kmod из-за ошибки распаковки — вернул файлы META-INF/com/google/android/{update-binary,updater-script}, которые требуются старыми менеджерами." + } + ] + }, + { + "type": "added", + "items": [ { - "en": "Fixed SIOCGIFCONF filtering on some Android 12/13 5.10 kernels where the previous hook could succeed but never fire.", - "ru": "Исправлена фильтрация SIOCGIFCONF на некоторых ядрах Android 12/13 5.10, где предыдущий хук мог успешно зарегистрироваться, но никогда не срабатывал." - }, - { - "en": "Fixed debug log collection so app logcat entries are captured reliably on devices where logcat via su misses them.", - "ru": "Исправлен сбор отладочного лога: записи logcat самого приложения теперь надёжно попадают в архив на устройствах, где запуск logcat через su их пропускал." + "en": "Detect gb.sweetlifecl as a Russian-vendor package in the app picker filter, so it shows up under the Russian-only filter alongside other domestic apps.", + "ru": "Пакет gb.sweetlifecl распознаётся как российский в фильтре выбора приложений и показывается в режиме «только российские» вместе с другими отечественными приложениями." } ] } ], "history": [ + { + "version": "0.6.0", + "sections": [ + { + "type": "added", + "items": [ + { + "en": "App hiding mode in Protection — hide selected apps from selected observer apps at the PackageManager level. Observer apps can no longer list, resolve, or query hidden apps.", + "ru": "Режим скрытия приложений в разделе «Защита» — скрывайте выбранные приложения от выбранных приложений-наблюдателей на уровне PackageManager. Наблюдатели больше не могут перечислять, находить или запрашивать скрытые приложения." + }, + { + "en": "Ports hiding mode plus new vpnhide-ports.zip module — block selected apps from reaching 127.0.0.1 / ::1 ports to hide locally running VPN/proxy daemons (Clash, sing-box, V2Ray, Happ, etc.).", + "ru": "Режим скрытия портов и новый модуль vpnhide-ports.zip — блокируйте выбранным приложениям доступ к портам 127.0.0.1 / ::1, чтобы скрыть локально работающие VPN/прокси-демоны (Clash, sing-box, V2Ray, Happ и т. д.)." + }, + { + "en": "Ports module integration in the dashboard — shows install state, active rules, observer count, and version mismatch/update warnings.", + "ru": "Интеграция модуля скрытия портов в панель — показывает статус установки, активность правил, число наблюдателей и предупреждения о несовпадении версий или доступных обновлениях." + } + ] + }, + { + "type": "changed", + "items": [ + { + "en": "The old Apps tab is now Protection, split into three modes: Tun, Apps, and Ports.", + "ru": "Прежняя вкладка «Приложения» теперь называется «Защита» и разделена на три режима: Tun, Apps и Ports." + }, + { + "en": "Ports rules apply immediately on Save and are restored automatically on boot.", + "ru": "Правила скрытия портов применяются сразу после сохранения и автоматически восстанавливаются после загрузки устройства." + }, + { + "en": "vpnhide-ports.zip is now included in the release/update pipeline with Magisk/KernelSU update metadata.", + "ru": "vpnhide-ports.zip теперь включён в пайплайн релизов и обновлений с метаданными для Magisk/KernelSU." + } + ] + }, + { + "type": "fixed", + "items": [ + { + "en": "Fixed LinkProperties filtering so VPN routes are stripped more reliably from app-visible network snapshots.", + "ru": "Исправлена фильтрация LinkProperties: VPN-маршруты теперь надёжнее удаляются из сетевых snapshot'ов, видимых приложению." + }, + { + "en": "Fixed SIOCGIFCONF filtering on some Android 12/13 5.10 kernels where the previous hook could succeed but never fire.", + "ru": "Исправлена фильтрация SIOCGIFCONF на некоторых ядрах Android 12/13 5.10, где предыдущий хук мог успешно зарегистрироваться, но никогда не срабатывал." + }, + { + "en": "Fixed debug log collection so app logcat entries are captured reliably on devices where logcat via su misses them.", + "ru": "Исправлен сбор отладочного лога: записи logcat самого приложения теперь надёжно попадают в архив на устройствах, где запуск logcat через su их пропускал." + } + ] + } + ] + }, { "version": "0.5.3", "sections": [ diff --git a/lsposed/native/Cargo.lock b/lsposed/native/Cargo.lock index 6ba5152..33c7bc7 100644 --- a/lsposed/native/Cargo.lock +++ b/lsposed/native/Cargo.lock @@ -184,7 +184,7 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "vpnhide_checks" -version = "0.5.3" +version = "0.6.1" dependencies = [ "android_logger", "jni", diff --git a/lsposed/native/Cargo.toml b/lsposed/native/Cargo.toml index d71ed6e..b118ea7 100644 --- a/lsposed/native/Cargo.toml +++ b/lsposed/native/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "vpnhide_checks" -version = "0.6.0" +version = "0.6.1" edition = "2024" rust-version = "1.85" license = "MIT" diff --git a/portshide/module/module.prop b/portshide/module/module.prop index 049e101..af4d3e3 100644 --- a/portshide/module/module.prop +++ b/portshide/module/module.prop @@ -1,6 +1,6 @@ id=vpnhide_ports name=VPN Hide (Ports) -version=v0.6.0 -versionCode=600 +version=v0.6.1 +versionCode=601 author=okhsunrog description=Blocks selected apps from reaching localhost ports — hides locally-bound VPN/proxy from probe attempts via netfilter. Manage observers via VPN Hide app. diff --git a/update-json/changelog.md b/update-json/changelog.md index 7d0e0a5..b013086 100644 --- a/update-json/changelog.md +++ b/update-json/changelog.md @@ -1,60 +1,45 @@ +## v0.6.1 + +### Added +- Detect gb.sweetlifecl as a Russian-vendor package in the app picker filter, so it shows up under the Russian-only filter alongside other domestic apps. + +### Fixed +- Magisk versions before v28 failed to install vpnhide-ports and vpnhide-kmod with an unpack error — restored the META-INF/com/google/android/{update-binary,updater-script} entries the older managers expect. + ## v0.6.0 ### Added - App hiding mode in Protection — hide selected apps from selected observer apps at the PackageManager level. Observer apps can no longer list, resolve, or query hidden apps. -- Ports hiding mode plus new `vpnhide-ports.zip` module — block selected apps from reaching `127.0.0.1` / `::1` ports to hide locally running VPN/proxy daemons (Clash, sing-box, V2Ray, Happ, etc.). -- Ports module integration in the app dashboard — shows install state, active rules, observer count, and version mismatch/update warnings. +- Ports hiding mode plus new vpnhide-ports.zip module — block selected apps from reaching 127.0.0.1 / ::1 ports to hide locally running VPN/proxy daemons (Clash, sing-box, V2Ray, Happ, etc.). +- Ports module integration in the dashboard — shows install state, active rules, observer count, and version mismatch/update warnings. ### Changed - The old Apps tab is now Protection, split into three modes: Tun, Apps, and Ports. - Ports rules apply immediately on Save and are restored automatically on boot. -- `vpnhide-ports.zip` is included in the release/update pipeline with Magisk/KernelSU update metadata. +- vpnhide-ports.zip is now included in the release/update pipeline with Magisk/KernelSU update metadata. ### Fixed -- Fixed `LinkProperties` filtering so VPN routes are stripped more reliably from app-visible network snapshots. -- Fixed `SIOCGIFCONF` filtering on some Android 12/13 `5.10` kernels where the previous hook could succeed but never fire. -- Fixed debug log collection so app logcat entries are captured reliably on devices where `logcat` via `su` misses them. +- Fixed LinkProperties filtering so VPN routes are stripped more reliably from app-visible network snapshots. +- Fixed SIOCGIFCONF filtering on some Android 12/13 5.10 kernels where the previous hook could succeed but never fire. +- Fixed debug log collection so app logcat entries are captured reliably on devices where logcat via su misses them. ## v0.5.3 ### Added -- Debug log export on the Diagnostics screen — tap "Collect debug log" at the bottom of the Diagnostics tab to gather detailed diagnostic data (dmesg, check results, device info, module status, kernel symbols, targets, network interfaces, routing tables, logcat). After collection, save the zip to disk or share it directly. Useful for reporting issues. -- Kernel module debug logging toggle (`/proc/vpnhide_debug`) — when enabled, all 6 kretprobe hooks log detailed information (UID, target status, interface name, filter decisions). The app enables it automatically during debug log collection and disables it afterwards. +- Debug log export — open the Diagnostics tab and tap "Collect debug log" at the bottom. The app gathers dmesg, check results, device info, module status, kernel symbols, targets, interfaces, routing tables, and logcat into a zip. Save to disk or share directly. +- Kernel module debug logging toggle — all 6 kretprobe hooks now log detailed info (UID, target status, interface name, filter decisions) when debug mode is active. Enabled automatically during debug log collection. ## v0.5.2 -### Fixes +### Fixed - Fixed SIOCGIFCONF filtering on kernel 5.10 (tun0 was visible in interface enumeration) - Fixed zygisk first-launch race: dashboard no longer shows false "inactive" status -- Added recv hook in zygisk for netlink filtering on Android 10 (no SELinux block) -- Diagnostic checks now use recvmsg (matching the hooked path) with separate recv check +- Added recv hook in zygisk for netlink filtering on Android 10 - Fixed hardcoded v0.1.0 in module installer messages ## v0.5.1 -### Fixes -- Fixed false "LSPosed/Vector not installed" warning for non-standard module paths (e.g. zygisk_lsposed) -- Fixed spurious LSPosed config warnings when hooks are already active at runtime -- "No target apps configured" now checks all modules, not just LSPosed -- Renamed APK artifact to vpnhide.apk - -## v0.5.0 - -### Added -- Built-in diagnostics merged into the main app (separate test app removed) -- New app icon and chameleon mascot branding -- Dashboard with module status, LSPosed config validation, version checks, and live protection verification -- Native module install recommendation — the app detects your kernel and tells you exactly which module to download -- Per-app protection layer toggles (L/K/Z) — control LSPosed, kernel module, and Zygisk independently for each app -- Magisk/KSU auto-update for kmod and zygisk modules -- App update check via GitHub Releases -- Changelog with version history - -### Changed -- Replaced WebUI with native Compose UI for module management -- Zygisk API lowered from v5 to v2 for Magisk v27 compatibility -- Apps tab: search in top bar, filter menu, fast scroll with letter indicator, Russian apps filter - ### Fixed -- Fixed potential system_server crash caused by race condition in writeToParcel hooks -- App no longer removes itself from target lists when saving +- Fixed false "LSPosed/Vector not installed" warning when LSPosed uses non-standard module path (e.g. zygisk_lsposed) +- Fixed false LSPosed config warnings when hooks are already active at runtime +- "No target apps configured" now checks all modules, not just LSPosed diff --git a/zygisk/Cargo.lock b/zygisk/Cargo.lock index 6305372..345dee4 100644 --- a/zygisk/Cargo.lock +++ b/zygisk/Cargo.lock @@ -241,7 +241,7 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "vpnhide_zygisk" -version = "0.5.1" +version = "0.6.1" dependencies = [ "android_logger", "cmake", diff --git a/zygisk/Cargo.toml b/zygisk/Cargo.toml index a63abf4..82a7e09 100644 --- a/zygisk/Cargo.toml +++ b/zygisk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "vpnhide_zygisk" -version = "0.6.0" +version = "0.6.1" edition = "2024" rust-version = "1.85" license = "MIT" diff --git a/zygisk/module/module.prop b/zygisk/module/module.prop index 6d685ee..2be885b 100644 --- a/zygisk/module/module.prop +++ b/zygisk/module/module.prop @@ -1,6 +1,6 @@ id=vpnhide_zygisk name=VPN Hide (Zygisk native) -version=v0.6.0 -versionCode=600 +version=v0.6.1 +versionCode=601 author=okhsunrog description=Hides active VPN interfaces from selected apps by inline-hooking libc ioctl via shadowhook. Covers the native detection path (Flutter, JNI, raw C/C++) that Java-level LSPosed modules can't reach. Manage targets via VPN Hide app.