Skip to content

ru BINARIES

github-actions[bot] edited this page Nov 13, 2026 · 3 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 обещает, что внутри него не поставляется ничего непрозрачного. Он работает от имени root и читает ваше самое приватное состояние, поэтому вы должны иметь возможность точно видеть, что он в себе несёт. Эта страница перечисляет единственный нативный инструмент, который поставляют приложение и модуль, откуда он берётся и как его проверить.

Принцип

VD Google несёт ровно один нативный инструмент: команду sqlite3 вместе с небольшим набором разделяемых библиотек, которые ей нужны. Он требуется потому, что собственный системный SQLite Android не может открыть базы данных других приложений на некоторых прошивках производителей, из-за чего VD Google на таких устройствах ничего бы не прочитал. См. Архитектуру о причинах.

  • Взято из апстрима, никогда с устройства. sqlite3 и его библиотеки берутся из официального репозитория пакетов Termux (packages.termux.dev/apt), из подписанных пакетов .deb, а не копируются из Termux, установленного на каком-то телефоне.
  • Одни и те же байты везде. Идентичные файлы поставляются в приложении (под assets/bin/) и в модуле WebUI (под bin/), поэтому оба читают одним движком и согласуются.
  • Контрольная сумма: личность. По какому бы пути ни лежала копия, она является настоящим инструментом, только если её SHA-256 совпадает с записанным значением.
  • Записанный аудиторский след. Каждый каталог ABI несёт PROVENANCE.json, в котором перечислены каждый исходный пакет (имя, версия, URL, SHA-256 файла .deb) и SHA-256 каждого поставляемого файла. Ничего не включается без записи, которую вы можете проверить.

Происхождение

.github/scripts/build_bin.sh собирает полезную нагрузку во время сборки, без компилятора и без NDK. Для каждого ABI он:

  1. читает индекс Termux Packages и разрешает пакет sqlite плюс его транзитивные зависимости (readline, ncurses, zlib, libandroid-support);
  2. скачивает и распаковывает официальные подписанные файлы .deb;
  3. копирует sqlite3, затем копирует только то замыкание разделяемых библиотек, которое двоичному файлу действительно нужно (разрешённое с помощью readelf), пропуская библиотеки, которые Android всегда предоставляет сам;
  4. записывает PROVENANCE.json.

Двоичные файлы Termux динамически линкуются с собственными библиотеками Termux, поэтому VD Google поставляет это замыкание рядом с sqlite3 и запускает его с LD_LIBRARY_PATH, указывающим на встроенный каталог lib/. Termux использует версионированные soname (libz.so.1, libreadline.so.8, libncursesw.so.6), поэтому они никогда не конфликтуют с собственными библиотеками фреймворка Android. LD_LIBRARY_PATH устанавливается только для процесса sqlite3, никогда глобально.

Файлы

Апстримная оболочка командной строки SQLite, пакет Termux sqlite 3.54.1-1. Одна полезная нагрузка на ABI: двоичный файл sqlite3 плюс его замыкание из четырёх библиотек (libreadline.so.8, libncursesw.so.6, libz.so.1, libandroid-support.so). Каждый поставляемый файл, с его SHA-256 и размером:

arm64-v8a:

7aa726994d3b6316941eebd5a19e8155492281cd10d86dd9e04c9f11a400dad3  sqlite3  (1584288 bytes)
739cf829511d71dafd6c67fdbb70f3f0c6048642ea2e1967790ee961fde14430  lib/libandroid-support.so  (20736 bytes)
795f855f5a988d9e89116847b2c9aa03720cedbc02026259ca735be25398c4c5  lib/libncursesw.so.6  (384496 bytes)
7437d5e30e2a326f3000286295cb9ba30a2e45f9ca5a91feba9ec12d0f1a161d  lib/libreadline.so.8  (321912 bytes)
df5e95e3ea1ffb8f2e0dcebfc43a6c0824b6aebec11752ad8f8764123e24f8a6  lib/libz.so.1  (74056 bytes)

armeabi-v7a:

ca1f5837b178a4b08b10baba585e80565b83ebe269d60770795cb8aa3bd3e053  sqlite3  (1079112 bytes)
2d569da2ffc5515fd4d634f22ab5d13c2686d38e8869ceed847ad3319c6bf999  lib/libandroid-support.so  (17384 bytes)
e7c301bc235e39984ab71f1906b00cc8cdfaea3451207597bc96132c8e247ca9  lib/libncursesw.so.6  (255700 bytes)
9151947397181668cc3cf5bdb9560f0e1b299d7b43bf2b5b65fc236de081c5b8  lib/libreadline.so.8  (206236 bytes)
fcf98d0343a3bc6326e08f92ca30f7a456eca87aa3834c05c1042a1c2daedeac  lib/libz.so.1  (56048 bytes)

Те же контрольные суммы записаны в каждом bin/<abi>/PROVENANCE.json, который поставляется рядом с двоичным файлом.

Проверьте сами

Из клонированного исходного кода подтвердите каждый поставляемый файл:

sha256sum VDGoogle/app/src/main/assets/bin/*/sqlite3 VDGoogle/app/src/main/assets/bin/*/lib/* \
          VDGoogle/webui/bin/*/sqlite3 VDGoogle/webui/bin/*/lib/*

Каждый хеш должен совпасть со списком выше, а копии приложения и WebUI должны совпадать друг с другом. Чтобы проверить всю полезную нагрузку от начала до конца, заново скачайте закреплённые URL файлов .deb, перечисленные в каждом PROVENANCE.json, распакуйте их и сравните значения SHA-256 файлов.

Для чего он используется

sqlite3 запускается от имени root против копии базы, отложенной в сторону, исключительно для чтения. Он никогда не используется для записи в какие-либо базы данных Google. Его единственная задача: позволить VD Google читать одни и те же значения на каждом устройстве. Никакой другой нативный двоичный файл не поставляется.


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

Clone this wiki locally