Skip to content

hi 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 के अपने ऐप पहले ही रिकॉर्ड कर चुके हैं, उसे समझाओ, और कभी कोई मान गढ़ो मत। जब डिवाइस के पास कोई उत्तर न हो, तो Unknown कहो।
  2. शून्य नेटवर्क। ऐप कोई भी अनुमति घोषित नहीं करता; WebUI हर रिमोट ऑरिजिन को ब्लॉक कर देता है। कभी कुछ भी, कहीं भी नहीं भेजा जाता।
  3. एक व्यवहार, दो चेहरे। ऐप और WebUI मॉड्यूल बिल्कुल एक जैसे रखे जाते हैं: वही संकेत, वही शब्दावली, वही एक्सपोर्ट की गई रिपोर्ट।
  4. चापलूसी से बेहतर ईमानदारी। एक वास्तविक नकारात्मक को नकारात्मक दिखाया जाता है; एक पुराना कैश को कैश्ड के रूप में लेबल किया जाता है; एक अनुपस्थित मान Unknown होता है। डिटेक्शन को कभी भी अच्छा दिखने के लिए नरम नहीं किया जाता।

दो चेहरे

  • ऐप Jetpack Compose (Material 3) के साथ Kotlin में है। यह libsu RootService के ज़रिए root पाता है, कभी सीधे su को शेल करके नहीं, और उसी विशेषाधिकार-प्राप्त सेवा के भीतर पढ़ता है।
  • WebUI मॉड्यूल एक छोटा HTML/JS वेब रूट है जिसे आपका root मैनेजर (KernelSU, APatch या Magisk) सर्व करता है। यह मैनेजर के root ब्रिज के ज़रिए वही रीड करता है। एक सख़्त Content-Security-Policy किसी भी रिमोट ऑरिजिन को मना करती है, इसलिए पृष्ठ सिद्धांत रूप में भी घर फ़ोन नहीं कर सकता।

दोनों 21 भाषाओं में स्ट्रिंग्स के एक ही साझा सेट से उत्पन्न होते हैं, इसलिए किसी लेबल का दो बार अनुवाद कभी नहीं होता।

डेटाबेस पढ़ना: बंडल किया गया sqlite3

VD Google जो स्थिति पढ़ता है उसका कुछ हिस्सा SQLite डेटाबेस में रहता है जो Google के ऐप का है। Android अपना SQLite भेजता है, लेकिन किसी दूसरे ऐप के डेटाबेस की अलग रखी गई कॉपी को खोलने के लिए फ़्रेमवर्क का SQLite अविश्वसनीय है: कुछ निर्माता ROMs पर यह हर डेटाबेस के लिए विफल हो जाता है, और कुछ भी नहीं लौटाता। हर डिवाइस पर एक ही तरह से पढ़ने के लिए, VD Google अपना खुद का sqlite3 बाइनरी (arm64 और arm32) बंडल करता है और उसी के ज़रिए root के रूप में क्वेरीज़ चलाता है। ऐप और WebUI समान बाइनरी का उपयोग करते हैं, इसलिए वे हमेशा वही इंजन और वही परिणाम पढ़ते हैं। उस बाइनरी की उत्पत्ति और चेकसम बंडल की गई बाइनरीज़ में प्रलेखित हैं।

रीड्स डेटाबेस को खोलने से पहले उसे अलग कॉपी कर लेते हैं, कभी लाइव फ़ाइल को नहीं छूते, और कभी साझा-मेमोरी इंडेक्स को कॉपी नहीं करते, जिसे एक चल रहा डेटाबेस विकृत (malformed) बता सकता है।

RCS संकेत

RCS को ईमानदारी से पढ़ने का सबसे कठिन हिस्सा यह है कि स्पष्ट दिखने वाले फ़्लैग झूठ बोलते हैं। सरल "available" फ़्लैग, फ़ीचर फ़्लैग और प्रोविज़निंग स्थिति, ये सब किसी ऐसी लाइन पर भी नकारात्मक पढ़ सकते हैं जहाँ RCS बिल्कुल सही काम कर रहा है, क्योंकि ये कैश हैं या क्योंकि वह लाइन कैरियर के IMS नेटवर्क के बजाय Google के अपने बैकएंड (Jibe) पर चलती है। VD Google वास्तविक चैट कॉन्फ़िगरेशन और प्रोविज़निंग इंजन से एक अकेला Connection फ़ैसला निकालता है, जो Android और Google Messages के संस्करणों के पार सही बना रहता है, और झूठ बोलने वाले फ़्लैग को साफ़ तौर पर कैश्ड लेबल करके पेश करता है ताकि वे गुमराह किए बिना जानकारी दें। हर लाइन का क्या मतलब है, इसके लिए यूज़र गाइड देखें।

एक्सपोर्ट

एक्सपोर्ट एक सैनिटाइज़ किया गया JSON स्नैपशॉट है। कुछ भी लिखने से पहले एक सैनिटाइज़र चलता है: यह उन कुंजियों और मानों को हटा देता है जो क्रेडेंशियल जैसे दिखते हैं, लंबे अंक-क्रमों को रिडैक्ट करता है, और कभी आपका फ़ोन नंबर, संदेश की सामग्री, संपर्क नाम या कच्चे क्षमता ब्लॉब नहीं निकालता। वैकल्पिक डायग्नोस्टिक्स अनुभाग केवल स्कीमा नाम, गिनतियाँ, आकार और संस्करण ले जाता है। और वहाँ भी, किसी नाम में अंतर्निहित कोई भी प्रति-पहचान फ़िंगरप्रिंट मिटा दिया जाता है। ऐप और WebUI वही स्कीमा उत्पन्न करते हैं।

VD Google कभी क्या नहीं करता

  • यह कभी नेटवर्क अनुमति घोषित नहीं करता, और WebUI कभी किसी रिमोट ऑरिजिन से संपर्क नहीं करता।
  • यह कभी किसी मान को गढ़ता, नकली बनाता या छिपाता नहीं।
  • यह कभी Play Integrity फ़ैसला रिपोर्ट नहीं करता, क्योंकि वह फ़ैसला डिवाइस पर होता ही नहीं।
  • यह स्थिति केवल एक स्पष्ट, पुष्टि की गई, स्थानीय रूप से लॉग की गई क्रिया के ज़रिए ही बदलता है।

यह दस्तावेज़ Claude (Anthropic) से तैयार किया गया है और इसे VD171 द्वारा अनुरक्षित किया जाता है। सुधार और संशोधन का स्वागत है; देखें CONTRIBUTING.md।

Clone this wiki locally