
تكييف CVE-2026-64560 المرتبط بالجهاز لـ RedMi K80pro miro OS 3.0.304.0
مشروع نقل CVE-2026-64560 لرفع الصلاحيات المحلي من وضع المستخدم لجهاز Redmi K80 Pro (miro).
🚀 لا ترغب في قراءة كل هذه الوثائق؟
إذا كنت لا تريد التعمق، أو لا تريد قراءة هذه الكومة من ملفات
.mdالمولّدة بالذكاء الاصطناعي، فراجع مباشرةdyc.md—— دليل سريع بلغة مفهومة: من الصفر إلى كسر الحماية (مع KernelSU)، يشرح فقط الأوامر التي يجب كتابتها، دون الخوض في الأسباب.
استغلال الثغرة الأصلية وتكييف Xiaomi 15 (dada) مأخوذان من
quyicheng03-boop،
وهذا المستودع هو نتيجة نقل للعناوين والثوابت الخاصة بـ K80 Pro بناءً على ذلك العمل.
هذا المشروع يقوم بالنقل فقط، ولا يتضمن اكتشاف الثغرة. مبدأ الثغرة وتصميم سلسلة الاستغلال يعودان بالكامل للمؤلف الأصلي. راجع
docs/UPSTREAM.mdوNOTICEللتفاصيل.
الشيفرة المصدرية والملفات الثنائية في هذا المستودع صالحة فقط لإصدار البرنامج الثابت التالي:
أي تغيير إلى إصدار OTA آخر سيؤدي إلى الفشل. إزاحات البُنى (struct offsets) وعناوين الرموز ونطاقات KASLR
في النواة كلها مشتقة من ملف Image هذا تحديداً، ولن تعمل حتى لو اختلف حرف واحد.
عند عدم تطابق البصمة، يخرج البرنامج من البوابة:
TARGET_PROFILE_GATE_FAIL fingerprint=...
هذا فشل آمن، ولن يمس النواة. إذا لم يكن البرنامج الثابت لديك مطابقاً للإصدار في الجدول أعلاه،
فأعد النقل بنفسك وفقاً لـ docs/05-technical.md،
ولا تستخدم ثوابت هذا المستودع مباشرة.
docs/04-troubleshooting.md)،
لكن لا تشغّله على جهاز لا تملكه أو لم تقم بنسخ بياناته احتياطياً.fastboot.k80pro-miro-cve-2026-64560/
├── README.md هذا الملف
├── dyc.md دليل سريع (بلغة مفهومة)، للمبتدئين ابدأ من هنا
├── LICENSE رخصة المصدر الأصلي
├── NOTICE إشعار الإسناد للمصدر الأصلي
├── SHA256SUMS.txt قيم التحقق للمخرجات الثلاثة داخل release_build/
│
├── src/ الشيفرة المصدرية للترجمة
│ ├── exploit-fanout-miro.c
│ ├── exploit-rotate-miro.c
│ ├── temp-su.c
│ ├── miro-profile.h مرجع الثوابت (لا يشارك في الترجمة)
│ ├── miro-integration.c مرجع التكامل (لا يشارك في الترجمة)
│ └── exploit-*.c ملفات المصدر الأصلي (مدخلات المولّد، لا تشارك في الترجمة)
│
├── release_build/ مخرجات مترجمة مسبقاً (جاهزة للاستخدام)
│ ├── cve-2026-64560-fanout
│ ├── cve-2026-64560-rotate
│ └── su
│
├── docs/
│ ├── 01-build.md كيفية الترجمة
│ ├── 02-usage.md كيفية الاستخدام في adb shell
│ ├── 03-tokens.md جدول مرجعي سريع للـ tokens المخرجة
│ ├── 04-troubleshooting.md استكشاف الأخطاء وشرح المخاطر
│ ├── 05-technical.md شرح تقني للنقل
│ └── UPSTREAM.md المصدر الأصلي
│
└── tools/ سكربتات البناء وأدوات إعادة الإنتاج/التشخيص (لا تشارك في الاستغلال)
├── build.sh ترجمة بأمر واحد (sh tools/build.sh)
└── *.py سكربتات إعادة الإنتاج / التشخيص
راجع docs/02-usage.md.
تأكد أولاً من سلامة المخرجات:
sha256sum -c SHA256SUMS.txt # Linux / macOS
certutil -hashfile <文件> SHA256 # Windows، تحقق واحداً تلو الآخر
راجع docs/01-build.md.
تحتاج إلى Android NDK (لا يمكن استخدام gcc النظام، والسبب في تلك الوثيقة). أسهل طريقة هي
استخدام السكربت المرفق مع المستودع، فهو يبحث عن NDK بنفسه، ويختار سلسلة الأدوات الصحيحة، ويترجم،
ويقارن التجزئات واحدة تلو الأخرى مع SHA256SUMS.txt:
sh tools/build.sh # ترجمة + تحقق
sh tools/build.sh --no-check # ترجمة فقط
السكربت يقوم بالترجمة فقط، ولا يمس الجهاز ولا يدفع الملفات ولا يشغّل exploit.
إذا لم ترغب في استخدام السكربت، يمكنك كتابة أوامر clang الثلاثة يدوياً، لإنتاج
cve-2026-64560-fanout و cve-2026-64560-rotate و su.
بعد اكتمال الترجمة، قارن ما إذا كانت البايتات مطابقة لما في release_build/:
sha256sum build/* # قارن مع القيم الثلاث في SHA256SUMS.txt
المعيار الوحيد للنجاح هو فتح adb shell جديد، والحصول على uid=0 عبر /data/local/tmp/su:
$ printf 'id\nexit\n' | adb shell -T /data/local/tmp/su
uid=0(root) gid=0(root) groups=0(root),1004(input),... context=u:r:shell:s0
لاحظ context=u:r:shell:s0 —— هوية root مع البقاء في نطاق shell، وهذا مقصود بالتصميم،
وليس خطأً.
أثناء العملية ستظهر الـ tokens الرئيسية (الجدول الكامل في docs/03-tokens.md):
BOOTID_WRITE_PASS attempt=5 q0=... q1=... slide=... kernel_base=...
STAGE0_GATE_PASS slide=... kernel_base=...
MISC_BRIDGE_OPEN_PASS fd=... observed=...
STAGE8_CRED_STAGE_PASS task=... cred=... uid=0 context=shell
ROOT_CHILD_HOLD_PASS child=... uid=0 context=shell selinux_permissive=1
معدل النجاح ليس 100%. في مرحلة Stage0، معدل الإصابة الفردية المقاس حوالي 1/5، لذلك يعيد البرنامج المحاولة 32 مرة لكل مرحلة افتراضياً. السلسلة الكاملة احتمالية.
قد يظهر الفشل على شكل تجمّد. يتطلب الضغط المطوّل على زر الطاقة لإعادة التشغيل القسري. بعد إعادة التشغيل تُمسح حالة النواة بالكامل، ويمكن البدء من جديد.
بعد النجاح تبقى حالتان حتى إعادة التشغيل:
/data/local/tmp/su إلى خادم (daemon) يمنح root لأي هوية shellطريقة التنظيف في نهاية docs/02-usage.md.
permissive ليس خطأً متبقياً، بل هو شرط أساسي لتحميل وحدات النواة (مثل KernelSU LKM). التفاصيل في
docs/04-troubleshooting.md.
dada): مؤلف المستودع الأصليmiro): راجع CHANGELOG| البند | القيمة |
|---|
| الطراز | Redmi K80 Pro (ro.product.device = miro) |
| البصمة | Redmi/miro/miro:16/BP2A.250605.031.A3/OS3.0.304.0.WOMCNXM:user/release-keys |
| النواة | 6.6.118-android15-8-gc44b714366cc-abogki519650608-4k |
| وقت بناء النواة | Thu Jun 4 03:48:35 UTC 2026 |
| حجم الصفحة | 4096 (4K) |