Repository navigation
ru BINARIES
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 он:
- читает индекс Termux Packages и разрешает пакет
sqliteплюс его транзитивные зависимости (readline,ncurses,zlib,libandroid-support); - скачивает и распаковывает официальные подписанные файлы
.deb; - копирует
sqlite3, затем копирует только то замыкание разделяемых библиотек, которое двоичному файлу действительно нужно (разрешённое с помощьюreadelf), пропуская библиотеки, которые Android всегда предоставляет сам; - записывает
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.