Skip to content

uk 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 на деяких ROM виробників не може відкривати бази даних інших застосунків, через що VD Google на таких пристроях нічого не читав би. Дивіться Архітектуру, чому так.

  • Отримано з upstream, ніколи з пристрою. 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, ніколи глобально.

Файли

Upstream-оболонка командного рядка 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