Skip to content

ru ARCHITECTURE

github-actions[bot] edited this page Nov 14, 2026 · 4 revisions

Languages: English | العربية | Čeština | Deutsch | Español | فارسی | Français | हिन्दी | Bahasa Indonesia | Italiano | 日本語 | 한국어 | Nederlands | Polski | Português | Русский | Svenska | ไทย | Türkçe | Tiếng Việt | 中文


Архитектура

Как устроен VD Google и почему. Эта страница объясняет замысел и принципы. Она не перечисляет конкретные файлы, таблицы или запросы, которые использует каждый читатель: это живёт только в исходном коде, и так задумано, чтобы ни приложение, ни документация никогда не превратились в инструкцию для того, кто хочет подделать те же значения.

Цели проектирования

  1. Читать правду. Показывать то, что собственные приложения Google уже записали, объяснять это и никогда не выдумывать значение. Когда на устройстве нет ответа, говорить «Неизвестно».
  2. Ноль сети. Приложение не объявляет вообще никаких разрешений; WebUI блокирует любой удалённый источник. Ничего и никогда никуда не отправляется.
  3. Одно поведение, два лица. Приложение и модуль WebUI остаются абсолютно идентичными: те же сигналы, те же формулировки, тот же экспортируемый отчёт.
  4. Честность важнее красоты. Настоящий отрицательный результат показывается как отрицательный; устаревший кеш помечается как кешированный; отсутствующее значение: «Неизвестно». Распознавание никогда не смягчается ради более приятного вида.

Два лица

  • Приложение написано на Kotlin с Jetpack Compose (Material 3). Оно получает root через RootService из libsu, никогда не вызывая su напрямую, и читает внутри этого привилегированного сервиса.
  • Модуль WebUI: небольшой веб-корень на HTML/JS, обслуживаемый вашим менеджером root (KernelSU, APatch или Magisk). Он выполняет те же чтения через root-мост менеджера. Строгая Content-Security-Policy запрещает любой удалённый источник, поэтому страница не может «позвонить домой» даже в принципе.

Оба генерируются из одного общего набора строк на 21 языке, так что подпись никогда не переводится дважды.

Чтение баз данных: встроенный sqlite3

Часть состояния, которое читает VD Google, живёт в базах данных SQLite, принадлежащих приложениям Google. В Android есть собственный SQLite, но системный SQLite ненадёжен при открытии копии чужой базы, отложенной в сторону: на некоторых прошивках производителей он даёт сбой для каждой базы и ничего не возвращает. Чтобы читать одинаково на каждом устройстве, VD Google несёт собственный двоичный файл sqlite3 (arm64 и arm32) и выполняет запросы через него от имени root. Приложение и WebUI используют идентичный двоичный файл, поэтому всегда читают одним и тем же движком и получают один и тот же результат. Происхождение и контрольные суммы этого файла описаны в разделе Встроенные двоичные файлы.

Чтение сначала копирует базу в сторону и только потом открывает её, никогда не трогая живой файл и никогда не копируя индекс общей памяти, который работающая база может сообщать как повреждённый.

Сигнал RCS

Самое трудное в честном чтении RCS: то, что очевидные флаги лгут. Простой флаг «доступно», флаги функций и состояние провизионирования, всё это может читаться отрицательно на линии, где RCS работает безупречно, потому что это кеши или потому что линия работает через собственный бэкенд Google (Jibe), а не через IMS-сеть оператора. VD Google вычисляет единый вердикт Соединение из реальной конфигурации чата и движка провизионирования, который остаётся верным во всех версиях Android и Google Messages, и показывает лгущие флаги с чёткой пометкой «кешировано», чтобы они информировали, не вводя в заблуждение. См. руководство пользователя о том, что означает каждая строка.

Экспорт

Экспорт: очищенный JSON-снимок. Перед записью чего-либо запускается очиститель: он отбрасывает ключи и значения, похожие на учётные данные, затирает длинные последовательности цифр и никогда не выдаёт ваш номер телефона, содержимое сообщений, имена контактов или сырые блобы возможностей. Необязательный раздел диагностики несёт только имена схем, счётчики, размеры и версии, и даже там любой встроенный в имя отпечаток конкретной личности схлопывается. Приложение и WebUI выдают одну и ту же схему.

Чего VD Google не делает никогда

  • Никогда не объявляет сетевое разрешение, а WebUI никогда не обращается к удалённому источнику.
  • Никогда не фабрикует, не подменяет и не скрывает значение.
  • Никогда не сообщает вердикт Play Integrity, потому что этого вердикта нет на устройстве.
  • Изменяет состояние только через явное, подтверждённое, локально записанное в журнал действие.

Эта документация создана с помощью Claude (Anthropic) и поддерживается VD171. Исправления и улучшения приветствуются; см. CONTRIBUTING.md.

Clone this wiki locally