Repository navigation
th 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 พร้อมกับชุดเล็ก ๆ
ของไลบรารีที่ใช้ร่วมกัน (shared libraries) ที่มันต้องการ มันจำเป็นเพราะ SQLite ของเฟรมเวิร์กใน
Android เองล้มเหลวในการเปิดฐานข้อมูลของแอปอื่นบนรอม ROM ของผู้ผลิตบางราย ซึ่งจะทำให้
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 ประกอบเพย์โหลด (payload) ขึ้นในเวลาบิลด์ โดยไม่มีคอมไพเลอร์
และไม่มี NDK สำหรับแต่ละ ABI มันจะ:
- อ่านดัชนี Termux Packages และแก้ไข (resolve) แพ็กเกจ
sqliteพร้อมกับการพึ่งพาแบบ ส่งต่อ (transitive dependencies) ของมัน (readline,ncurses,zlib,libandroid-support); - ดาวน์โหลดและแตกไฟล์
.debที่เซ็นรับรองอย่างเป็นทางการ; - คัดลอก
sqlite3จากนั้นคัดลอกเฉพาะชุดปิด (closure) ของไลบรารีที่ใช้ร่วมกันที่ไบนารีต้องใช้ จริง ๆ (แก้ไขด้วย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