Skip to content

ar 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 نفسها بالفعل، واشرحه، ولا تختلق قيمة أبدًا. وحين لا يحمل الجهاز جوابًا، قل غير معروف.
  2. لا شبكة إطلاقًا. لا يصرّح التطبيق بأي أذونات على الإطلاق؛ وتحجب WebUI كل أصل بعيد. لا يُرسَل شيء إلى أي مكان، أبدًا.
  3. سلوك واحد، وجهان. يُبقى التطبيق وموديول WebUI متطابقين تمامًا: الإشارات نفسها، والصياغة نفسها، والتقرير المُصدَّر نفسه.
  4. الصدق قبل المجاملة. تُعرَض النتيجة السلبية الحقيقية كسلبية؛ وتُوسَم الذاكرة المؤقتة القديمة بأنها مخزّنة مؤقتًا؛ والقيمة المفقودة تكون غير معروف. ولا يُليَّن الكشف أبدًا كي يبدو أجمل.

الوجهان

  • التطبيق مكتوب بلغة Kotlin مع Jetpack Compose (Material 3). يحصل على الـ root عبر RootService من libsu، لا باستدعاء su مباشرة قط، ويقرأ داخل تلك الخدمة المميزة.
  • موديول WebUI عبارة عن جذر ويب صغير بلغة HTML/JS يخدمه مدير الـ root لديك (KernelSU أو APatch أو Magisk). وهو ينفّذ القراءات نفسها عبر جسر الـ root الخاص بالمدير. وتمنع Content-Security-Policy صارمة أي أصل بعيد، فلا تستطيع الصفحة الاتصال بالخارج حتى من حيث المبدأ.

كلاهما مُولَّد من مجموعة واحدة مشتركة من السلاسل النصية في 21 لغة، فلا يُترجَم أي عنوان مرتين.

قراءة قواعد البيانات: sqlite3 المرفقة

يعيش جزء من الحالة التي يقرأها VD Google في قواعد بيانات SQLite تخصّ تطبيقات Google. يأتي Android بنسخته من SQLite، لكن SQLite الخاصة بإطار العمل غير موثوقة في فتح نسخة من قاعدة بيانات تطبيق آخر منسوخة جانبًا: فعلى بعض أنظمة ROM من الشركات المصنّعة تفشل مع كل قاعدة بيانات، فلا تعيد شيئًا. ولكي يقرأ VD Google بالطريقة نفسها على كل جهاز، يُرفِق ثنائيته الخاصة sqlite3 (لِـ arm64 و arm32) ويشغّل الاستعلامات عبرها بصلاحيات الـ root. ويستخدم التطبيق وWebUI الثنائية المتطابقة نفسها، فيقرآن دائمًا بالمحرك نفسه ويحصلان على النتيجة نفسها. وتُوثَّق أصول تلك الثنائية ومجاميعها الاختبارية في الثنائيات المرفقة.

تنسخ عمليات القراءة قاعدة البيانات جانبًا قبل فتحها، دون أن تمسّ الملف الحيّ أبدًا، ودون أن تنسخ أبدًا فهرس الذاكرة المشتركة، الذي قد تُبلغ عنه قاعدة بيانات قيد التشغيل بأنه تالف.

إشارة RCS

أصعب ما في قراءة RCS بصدق هو أن الأعلام الظاهرة تكذب. فعلم "متاح" البسيط، وأعلام الميزات، وحالة التجهيز (provisioning) قد تظهر كلها سلبية على خط يعمل عليه RCS بشكل مثالي، لأنها ذاكرات مؤقتة أو لأن الخط يعمل عبر خلفية Google الخاصة (Jibe) بدلًا من شبكة IMS الخاصة بشركة الاتصالات. يحسب VD Google حُكم الاتصال الواحد من إعدادات المحادثة الحقيقية ومحرك التجهيز، وهو يبقى صحيحًا عبر إصدارات Android وGoogle Messages، ويعرض الأعلام الكاذبة موسومة بوضوح بأنها مخزّنة مؤقتًا كي تُعلِم دون أن تضلّل. راجع دليل المستخدم لمعرفة معنى كل سطر.

التصدير

التصدير لقطة JSON مطهَّرة. يعمل مطهِّر قبل كتابة أي شيء: يُسقِط المفاتيح والقيم التي تبدو كبيانات اعتماد، ويُخفي سلاسل الأرقام الطويلة، ولا يُخرِج أبدًا رقم هاتفك ولا محتوى الرسائل ولا أسماء جهات الاتصال ولا كتل القدرات الخام. ولا يحمل قسم التشخيص الاختياري سوى أسماء المخططات والأعداد والأحجام والإصدارات. وحتى هناك، تُطوى بعيدًا أي بصمة مرتبطة بهوية معيّنة مدمجة داخل اسم. وينتج التطبيق وWebUI المخطط نفسه.

ما لا يفعله VD Google أبدًا

  • لا يصرّح أبدًا بإذن شبكة، ولا تتصل WebUI أبدًا بأصل بعيد.
  • لا يختلق أي قيمة ولا يزيّفها ولا يخفيها أبدًا.
  • لا يُبلِّغ أبدًا عن حُكم Play Integrity، لأن ذلك الحُكم ليس على الجهاز.
  • لا يغيّر الحالة إلا عبر إجراء صريح ومؤكَّد ومسجَّل محليًا.

تم إنشاء هذا التوثيق باستخدام Claude (Anthropic) ويتولى صيانته VD171. التصحيحات والتحسينات مرحّب بها؛ راجع CONTRIBUTING.md.

Clone this wiki locally