[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1135":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},1135,"vpnhide","okhsunrog\u002Fvpnhide","okhsunrog","Hide active VPN from selected Android apps (kernel module + LSPosed + Zygisk)",null,"Kotlin",394,19,4,16,0,10,15,54,30,76.8,"Other",false,"main",[],"2026-06-12 04:00:07","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Flogo.png\" width=\"200\" alt=\"VPN Hide\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">VPN Hide\u003C\u002Fh1>\n\n\u003Cp align=\"center\">Скрывает активное VPN-соединение на Android от выбранных приложений.\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fokhsunrog\u002Fvpnhide\u002Factions\u002Fworkflows\u002Fci.yml\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fokhsunrog\u002Fvpnhide\u002Fci.yml?label=CI\" alt=\"CI\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fokhsunrog\u002Fvpnhide\u002Freleases\u002Flatest\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fokhsunrog\u002Fvpnhide\" alt=\"Release\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fokhsunrog\u002Fvpnhide\u002Freleases\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fokhsunrog\u002Fvpnhide\u002Ftotal\" alt=\"Downloads\">\u003C\u002Fa>\n  \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue\" alt=\"License\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\u003Cstrong>\u003Ca href=\"README.en.md\">English version\u003C\u002Fa>\u003C\u002Fstrong>\u003C\u002Fp>\n\n## Чем vpnhide лучше аналогов?\n\nСуществующие модули, такие как [NoVPNDetect](https:\u002F\u002Fbitbucket.org\u002Fyuri-project\u002Fnovpndetect) и [NoVPNDetect Enhanced](https:\u002F\u002Fgithub.com\u002FBlueCat300\u002FNoVPNDetectEnhanced), покрывают только **Java API** обнаружение и хукают **внутри процесса** целевого приложения через Xposed. У этого подхода две критические проблемы:\n\n1. **Обнаружение anti-tamper защитой** — любое приложение с проверкой инъекций в память обнаруживает хуки Xposed и отказывается работать. Автор NoVPNDetect Enhanced прямо пишет: *«Модуль не будет работать если у подключаемого приложения есть защита от LSPosed, проверка на инъекции в память. Например MirPay, Т-Банк.»*\n2. **Нет нативного покрытия** — приложения, использующие C\u002FC++ код, кроссплатформенные фреймворки (Flutter, React Native) или прямые системные вызовы, могут обнаружить VPN через `ioctl`, `getifaddrs`, netlink-сокеты и `\u002Fproc\u002Fnet\u002F*`. Java-хуки эти векторы полностью пропускают.\n\nvpnhide решает обе проблемы многослойной архитектурой:\n\n**Уровень 1 — Java API (модуль lsposed):** хукает `system_server`, а не целевое приложение. `NetworkCapabilities`, `NetworkInfo` и `LinkProperties` фильтруются на уровне Binder *до того*, как данные попадут в процесс приложения. Приложение получает чистые данные через IPC — никаких инъекций в его процесс, нечего обнаруживать.\n\n**Уровень 2 — нативный (kmod или zygisk):** покрывает все нативные пути обнаружения:\n- **kmod** (рекомендуется) — хуки `kretprobe` на уровне ядра. Фильтрует `ioctl` (SIOCGIFFLAGS, SIOCGIFNAME, SIOCGIFCONF), `getifaddrs`\u002Fnetlink-дампы (RTM_GETLINK, RTM_GETADDR) и чтение `\u002Fproc\u002Fnet\u002Froute` — всё до возврата системного вызова в пользовательское пространство. Остальные файлы `\u002Fproc\u002Fnet\u002F*` (`tcp*`, `udp*`, `dev`, `if_inet6` и т.д.) на Android 10+ заблокированы SELinux для untrusted-приложений, так что отдельный хук не нужен. Нулевой след в процессе. Никаких инъекций библиотек. Нечего обнаруживать.\n- **zygisk** (альтернатива) — inline-хуки `libc.so` внутри процесса приложения. То же нативное покрытие, что и kmod, но работает в процессе, поэтому теоретически обнаружим продвинутой anti-tamper защитой. Используйте, если ваше ядро не поддерживается kmod.\n\n**Уровень 3 — дополнительные механизмы в самом приложении VPN Hide:**\n- **Скрытие интерфейса** — скрывает VPN-интерфейсы, маршруты и VPN-состояние Java API от выбранных приложений\n- **Скрытие портов** — блокирует выбранным приложениям доступ к `127.0.0.1` \u002F `::1`, чтобы они не могли проверять локально запущенные VPN \u002F proxy-демоны\n- **Скрытие приложений** — скрывает выбранные приложения от выбранных приложений-наблюдателей на уровне PackageManager\n\nПроцесс целевого приложения полностью нетронут (при использовании kmod + lsposed) — ни Xposed, ни inline-хуков, ни модифицированных регионов памяти. Благодаря этому vpnhide работает с банковскими и государственными приложениями, которые активно обнаруживают и блокируют модули на основе Xposed.\n\n## Что именно скрывает vpnhide\n\nvpnhide — это не один переключатель, а три разных типа защиты, которые можно включать по отдельности для каждого приложения:\n\n1. **Скрытие интерфейса** — основной слой скрытия VPN. Убирает VPN-интерфейсы и маршруты из нативных API (`ioctl`, `getifaddrs`, `\u002Fproc\u002Fnet\u002F*`, `NetworkInterface`) и из Java API (`NetworkCapabilities`, `NetworkInfo`, `LinkProperties`).\n2. **Скрытие портов** — блокирует доступ к localhost для выбранных приложений, чтобы они не могли обнаружить Clash, sing-box, V2Ray, Happ и подобные инструменты через проверку локальных портов.\n3. **Скрытие приложений** — позволяет скрыть выбранные установленные приложения от выбранных приложений-наблюдателей. Полезно против проверок package visibility, например когда приложение пытается определить, установлен ли на устройстве VPN или proxy-клиент.\n\n## Какие модули нужны?\n\nВсегда нужно **приложение VPN Hide** (`vpnhide.apk`) плюс один нативный модуль для скрытия интерфейса. Дополнительно приложение может использовать необязательный Ports-модуль для блокировки localhost-портов:\n\n- **`kmod`** (рекомендуется) — полностью out-of-process, невидим для anti-tamper. Требуется поддерживаемое GKI-ядро.\n- **`zygisk`** — используйте, если ваше ядро не поддерживается kmod.\n- **`portshide`** (необязательно) — установите, если хотите блокировать выбранным приложениям доступ к localhost-портам.\n\nСм. [Установка](#установка) для пошаговой инструкции.\n\n## Установка\n\nСкачайте последний релиз из [Releases](https:\u002F\u002Fgithub.com\u002Fokhsunrog\u002Fvpnhide\u002Freleases).\n\n### Шаг 1 — Приложение VPN Hide + LSPosed\n\n1. Установите `vpnhide.apk` как обычное приложение\n2. В менеджере LSPosed включите модуль VPN Hide и добавьте **«System Framework»** в его область действия\n3. Перезагрузите устройство (обязательно — хуки LSPosed внедряются в `system_server` при загрузке, поэтому модуль должен быть активен до запуска `system_server`)\n4. Откройте приложение VPN Hide и предоставьте ему root-доступ (Magisk запросит автоматически; на KernelSU-Next выдайте разрешение вручную в менеджере)\n\n### Шаг 2 — Нативный модуль для скрытия интерфейса\n\nОткройте приложение VPN Hide. На вкладке **«Обзор»** приложение определит ваше устройство и ядро и покажет, какой именно нативный модуль нужно установить:\n\n- Если ядро поддерживается — будет рекомендован конкретный файл kmod (например, `vpnhide-kmod-android14-6.1.zip`)\n- Если нет — будет рекомендован модуль zygisk (`vpnhide-zygisk.zip`)\n\nУстановите рекомендованный модуль:\n- **kmod:** через менеджер KernelSU-Next → Модули → Установить из хранилища\n- **zygisk:** через менеджер KernelSU-Next или Magisk → Модули\n\nПерезагрузите устройство после установки нативного модуля.\n\n### Шаг 3 — Необязательно: установка Ports-модуля\n\nЕсли вам нужна блокировка localhost-портов, установите `vpnhide-ports.zip` через KernelSU-Next или Magisk manager.\n\nЭтот модуль независим от kmod \u002F zygisk и нужен только для режима **Ports** в приложении.\n\n### Шаг 4 — Настройка защит\n\nОткройте приложение VPN Hide → вкладка **«Защита»**.\n\n- Режим **Tun**: используйте переключатели **L** \u002F **K** \u002F **Z** для управления уровнями скрытия интерфейса для каждого приложения (LSPosed, модуль ядра, Zygisk), или нажмите на строку, чтобы переключить все уровни сразу\n- Режим **Apps**: выберите, какие приложения нужно скрывать и какие приложения должны выступать наблюдателями\n- Режим **Ports**: выберите, каким приложениям нужно запретить доступ к localhost-портам\n\nПосле изменений нажмите «Сохранить».\n\nПосле изменения списка принудительно остановите и перезапустите затронутые приложения — хуки вступают в силу при следующем запуске.\n\n> **Примечание:** некоторые приложения обнаруживают хуки Zygisk. Для таких приложений оставьте **Z** выключенным и используйте kmod + LSPosed.\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Настройка через командную строку (для продвинутых)\u003C\u002Fb>\u003C\u002Fsummary>\n\nРедактируйте `\u002Fdata\u002Fadb\u002Fvpnhide_kmod\u002Ftargets.txt`, `\u002Fdata\u002Fadb\u002Fvpnhide_zygisk\u002Ftargets.txt` или `\u002Fdata\u002Fadb\u002Fvpnhide_lsposed\u002Ftargets.txt` напрямую (одно имя пакета на строку). Принудительно остановите и перезапустите затронутые приложения для применения изменений.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Ручной подбор GKI (если хотите выбрать файл kmod самостоятельно)\u003C\u002Fb>\u003C\u002Fsummary>\n\n1. На телефоне откройте **Настройки → О телефоне** и найдите строку **Версия ядра**. Она выглядит примерно так: `6.1.75-android14-11-g...`\n2. Вам нужны две части из этой строки: версия ядра (`6.1`) и поколение android (`android14`). Вместе они образуют ваше поколение GKI: `android14-6.1`\n3. Скачайте соответствующий файл из релиза: `vpnhide-kmod-android14-6.1.zip`\n\nТакже можно выполнить `adb shell uname -r` через ADB, чтобы увидеть строку версии ядра.\n\n> **Важно:** `android14` в строке ядра — это НЕ версия Android, а поколение ядра. Например, все Pixel с 6 по 9a используют ядро `android14-6.1` вне зависимости от того, стоит ли на них Android 14 или 15.\n\n\u003C\u002Fdetails>\n\n## Скриншоты\n\n| Обзор — всё ОК | Обзор — проблемы | Рекомендация установки |\n|:-:|:-:|:-:|\n| \u003Cimg src=\"assets\u002Fscreenshots\u002Fdashboard-all-ok.png\" width=\"250\"> | \u003Cimg src=\"assets\u002Fscreenshots\u002Fdashboard-issues.jpg\" width=\"250\"> | \u003Cimg src=\"assets\u002Fscreenshots\u002Fdashboard-install-recommendation.jpg\" width=\"250\"> |\n\n| Защита — Tun | Скрытие приложений | Скрытие портов |\n|:-:|:-:|:-:|\n| \u003Cimg src=\"assets\u002Fscreenshots\u002Fprotection-tunnels-list.png\" width=\"250\"> | \u003Cimg src=\"assets\u002Fscreenshots\u002Fapp-hiding-list.png\" width=\"250\"> | \u003Cimg src=\"assets\u002Fscreenshots\u002Fports-hiding-list.png\" width=\"250\"> |\n\n| Скрытие приложений — помощь | Скрытие портов — помощь | Диагностика |\n|:-:|:-:|:-:|\n| \u003Cimg src=\"assets\u002Fscreenshots\u002Fapp-hiding-help.png\" width=\"250\"> | \u003Cimg src=\"assets\u002Fscreenshots\u002Fports-hiding-help.png\" width=\"250\"> | \u003Cimg src=\"assets\u002Fscreenshots\u002Fdiagnostics-native.jpg\" width=\"250\"> |\n\n## Проверка\n\nВ приложении есть встроенная система диагностики, которая автоматически обнаруживает большинство проблем с настройкой.\n\n**Обзор** (запускается при каждом открытии приложения):\n- Статус модулей для всех трёх уровней (установлен, активен, версия, количество целей)\n- Валидация конфигурации LSPosed — читает базу данных LSPosed и проверяет, что VPN Hide включён, System Framework в scope, и нет лишних приложений в scope (частая ошибка при настройке)\n- Обнаружение несоответствия версий — сравнивает версии установленных модулей с версией приложения и подсказывает, что именно нужно обновить\n- Рекомендация нативного модуля — определяет ядро устройства и подбирает нужный файл kmod, или рекомендует zygisk, если ядро не поддерживается\n- Проверка защиты в реальном времени (при активном VPN) — выполняет 16 нативных и 5 Java API проверок, чтобы убедиться, что VPN действительно скрыт\n\nВсе обнаруженные проблемы показываются в виде карточек с конкретными инструкциями по исправлению.\n\n**Диагностика** — детальная разбивка по каждой проверке с индивидуальными результатами PASS\u002FFAIL для всех 26 векторов обнаружения. Полезна для отладки, когда «Обзор» показывает частичную защиту.\n\n## Компоненты\n\n| Директория | Что | Как |\n|---|---|---|\n| **[kmod\u002F](kmod\u002F)** | Модуль ядра (C) | Хуки `kretprobe` в пространстве ядра. Нулевой след в процессе приложения. ([подробнее](kmod\u002FREADME.md)) |\n| **[lsposed\u002F](lsposed\u002F)** | LSPosed-модуль + приложение (Kotlin + Rust) | Хуки `writeToParcel` в `system_server` для per-UID фильтрации Binder. APK предоставляет обзорную панель (статус модулей, проверка версий, валидация конфигурации LSPosed, рекомендации по установке), режимы защиты для скрытия интерфейса \u002F портов \u002F приложений и диагностику. ([подробнее](lsposed\u002FREADME.md)) |\n| **[portshide\u002F](portshide\u002F)** | Модуль скрытия портов (Shell + iptables) | Блокирует выбранным приложениям доступ к `127.0.0.1` \u002F `::1`, скрывая локально запущенные VPN \u002F proxy-демоны от проверок localhost-портов. ([подробнее](portshide\u002FREADME.md)) |\n| **[zygisk\u002F](zygisk\u002F)** | Zygisk-модуль (Rust) | Inline-хуки `libc.so` в процессе приложения. Альтернатива kmod. ([подробнее](zygisk\u002FREADME.md)) |\n\n## Покрытие обнаружения\n\n| # | Вектор обнаружения | SELinux | kmod | zygisk | lsposed |\n|---|---|---|---|---|---|\n| 1 | `ioctl(SIOCGIFFLAGS)` на tun0 | | x | x | |\n| 2 | `ioctl(SIOCGIFNAME)` разрешение индекса в имя | | x | x | |\n| 3 | `ioctl(SIOCGIFMTU)` фингерпринтинг MTU | | x | x | |\n| 4 | `ioctl(SIOCGIFCONF)` перечисление интерфейсов | | x | x | |\n| 5 | Все остальные `SIOCGIF*` (INDEX, HWADDR, ADDR и т.д.) | | x | x | |\n| 6 | `getifaddrs()` (использует netlink внутри) | | x | x | |\n| 7 | netlink `RTM_GETLINK` дамп | блок. | x | x | |\n| 8 | netlink `RTM_GETADDR` дамп (IPv4 + IPv6) | блок. | x | | |\n| 9 | netlink `RTM_GETROUTE` дамп | блок. | | | |\n| 10 | `\u002Fproc\u002Fnet\u002Froute` | блок. | x | x | |\n| 11 | `\u002Fproc\u002Fnet\u002Fipv6_route` | блок. | | x | |\n| 12 | `\u002Fproc\u002Fnet\u002Fif_inet6` | блок. | | x | |\n| 13 | `\u002Fproc\u002Fnet\u002Ftcp`, `tcp6` | блок. | | | |\n| 14 | `\u002Fproc\u002Fnet\u002Fudp`, `udp6` | блок. | | | |\n| 15 | `\u002Fproc\u002Fnet\u002Fdev` | блок. | | | |\n| 16 | `\u002Fproc\u002Fnet\u002Ffib_trie` | блок. | | | |\n| 17 | `\u002Fsys\u002Fclass\u002Fnet\u002Ftun0\u002F` | блок. | | | |\n| 18 | `NetworkCapabilities` (hasTransport, NOT_VPN, transportInfo) | | | | x |\n| 19 | `NetworkInfo` (getType, getTypeName) | | | | x |\n| 20 | `ConnectivityManager.getActiveNetwork()` | | | | x |\n| 21 | `ConnectivityManager.getAllNetworks()` + VPN-сканирование | | | | x |\n| 22 | `LinkProperties` (interfaceName) | | | | x |\n| 23 | `LinkProperties` (маршруты через VPN-интерфейсы) | | | | x |\n| 24 | `NetworkInterface.getNetworkInterfaces()` | | x | x | |\n| 25 | `System.getProperty` (настройки прокси) | | | x | |\n| 26 | `\u002Fproc\u002Fnet\u002Froute` через Java `FileInputStream` | блок. | x | x | |\n\n**блок.** = SELinux запрещает доступ для обычных приложений (Android 10+). Хуки не нужны.\n\nСтроки 1–6, 21 и 24 — единственные векторы, доступные обычным приложениям. Всё остальное либо заблокировано SELinux, либо проходит через Java API (покрывается lsposed).\n\n## Сборка из исходников\n\n- **kmod**: `.\u002Fkmod\u002Fbuild.py --kmi android14-6.1` (или `--all`) — авто-запускает DDK-контейнер через podman\u002Fdocker. Подробнее: [kmod\u002FBUILDING.md](kmod\u002FBUILDING.md).\n- **zygisk**: `cd zygisk && .\u002Fbuild.py` (Rust + NDK + cargo-ndk)\n- **lsposed**: `cd lsposed && .\u002Fgradlew assembleDebug` (JDK 17 + Rust + NDK + cargo-ndk)\n\n### Заметки для контрибьюторов, застрявших на Windows\n\nЕсли вы используете Windows, при сборке некоторых подпроектов возникают определенные неудобства.\n\n**lsposed**: отлично собирается в Android Studio.\n\n**portshide**: `cd .\\portshide\\; python .\\build-zip.py` выполняется без проблем.\n\nДля следующих двух вам (к сожалению) потребуется установить [Docker for Windows](https:\u002F\u002Fdocs.docker.com\u002Fdesktop\u002Fsetup\u002Finstall\u002Fwindows-install\u002F).\n\n**kmod**: `python .\\kmod\\build.py --kmi android14-6.1` — скрипт сам подберёт docker и поднимет образ `ddk-min` (тот же, что в CI).\n\n**zygisk**:\n```powershell\ndocker run --rm -it -v \"${PWD}:\u002Fworkspace\" -v \"vpnhide_cargo_cache:\u002Fusr\u002Flocal\u002Fcargo\u002Fregistry\" -w \u002Fworkspace ghcr.io\u002Fokhsunrog\u002Fvpnhide\u002Fci:latest bash -c 'cd zygisk && python3 .\u002Fbuild.py'\n```\nПричина, по которой `zygisk` нельзя собрать напрямую, заключается в том, что исходный код зависимости `zygisk-api` содержит файл с именем `aux.rs`. Cargo использует `libgit2` для работы с git, в котором есть защита, запрещающая создавать файлы, _содержащие_ зарезервированные слова Windows. Вы получите ошибку: `cannot checkout to invalid path 'src\u002Faux.rs'; class=Checkout (20)`. [Сообщают](https:\u002F\u002Fsuperuser.com\u002Fa\u002F1929659), что после какого-то обновления стало возможным создавать файлы, содержащие зарезервированные слова, **с** расширением, но, похоже, в `libgit2` это поведение не было изменено.\n\n## Проверено на\n\n- [RKNHardering](https:\u002F\u002Fgithub.com\u002Fxtclovver\u002FRKNHardering\u002F) — все векторы обнаружения чисты\n- [YourVPNDead](https:\u002F\u002Fgithub.com\u002Floop-uh\u002Fyourvpndead) — все векторы обнаружения чисты\n\nОба реализуют официальную методику обнаружения VPN\u002Fпрокси Минцифры РФ ([источник](https:\u002F\u002Ft.me\u002Fruitunion\u002F893)).\n\n## Раздельное туннелирование (split tunneling)\n\nКорректно работает с конфигурациями VPN с раздельным туннелированием. Затрагиваются только приложения из списка целей.\n\nНастоятельно рекомендуется использовать split tunneling в паре с VPN Hide.\n\nПриложения-детекторы, сравнивающие публичный IP устройства с внешними чекерами, лучше оставлять вне туннеля — их трафик должен выходить через оператора, а не через VPN.\n\n## Модель угроз\n\nvpnhide скрывает активный VPN от конкретных приложений. Он НЕ предназначен для:\n- Скрытия root или кастомной прошивки\n- Обхода Play Integrity\n- Обмана серверной детекции (утечки DNS, чёрные списки IP, фингерпринтинг латентности\u002FTLS)\n\n## Известные ограничения\n\n- `kmod` требует GKI-ядро с `CONFIG_KPROBES=y` (стандарт на устройствах Android 12+)\n- `lsposed` требует LSPosed, LSPosed-Next или Vector\n- `zygisk` — только arm64\n- Прямые системные вызовы `svc #0` обходят хуки libc в zygisk — для этого и нужен kmod\n- Серверная детекция неисправима на стороне клиента — используйте раздельное туннелирование\n\n## Лицензия\n\nMIT. См. [LICENSE](LICENSE).\n\nМодуль ядра объявляет `MODULE_LICENSE(\"GPL\")`, как требуется ядром Linux для разрешения символов `EXPORT_SYMBOL_GPL` во время выполнения.\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=okhsunrog\u002Fvpnhide&type=Date)](https:\u002F\u002Fstar-history.com\u002F#okhsunrog\u002Fvpnhide&Date)\n","该项目旨在通过隐藏Android设备上的活跃VPN连接来防止特定应用程序检测到该连接。它结合了内核模块、LSPosed和Zygisk技术，提供了两层防护机制：一层是基于Java API的拦截，在Binder通信层面过滤掉与VPN相关的网络信息；另一层则针对本地代码路径，使用kretprobe或inline-hook方法阻止如ioctl调用、\u002Fproc\u002Fnet\u002F*文件读取等直接系统调用中的VPN痕迹泄露。这种设计不仅避免了传统Xposed框架容易被反篡改保护机制识别的问题，还全面覆盖了包括C\u002FC++原生代码在内的多种潜在泄漏点。适用于需要在保持全局网络代理的同时，让某些敏感应用（如银行客户端）正常运行不受干扰的情况。",2,"2026-06-11 02:41:52","CREATED_QUERY"]