
أداة تحميل LKM وقت التشغيل عبر KernelSU مع صلاحيات root عبر CVE-2026-98260 المُدار بواسطة Shizuku لأجهزة Xiaomi yingtian / lhasa (kernel 6.18.21)
الترجمة الصينية:
README.zh-CN.md— ترجمة لهذا الملف؛ في حال اختلافهما، فإن هذا الملف الإنجليزي هو المرجع المعتمد.
تصعيد امتيازات محلي + KernelSU لعائلتي Xiaomi yingtian (Pad 9 Pro
Max) وlhasa (Xiaomi 18 Fold) على HyperOS 4 (Android 17، نواة
6.18.21). تُسلَّم السلسلة كاملةً كتطبيق Android عادي يقود
Shizuku في وضع shell، ويستغل
CVE-2026-98260، ويحمّل وحدة LKM من عائلة KernelSU المطابقة للمدير المثبَّت
(KernelSU / KernelSU-Next / SukiSU) — دون حاسوب، ودون فتح محمّل الإقلاع، ودون
تعديل الأقسام.
مشروع بحثي / تعليمي / لإصلاح الأجهزة. يعمل للإقلاع فقط (إعادة التشغيل تزيله). شغّله فقط على الأجهزة التي تملكها. اقرأ
docs/SECURITY.mdقبل استخدامه.
الوكلاء / المساهمون الآليون: ابدأ بـ AGENTS.md (نقطة
الدخول: الثوابت، وصفات البناء/الاختبار، المزالق، النظافة)، ثم
docs/AGENT_HANDOFF.md (الحالة المتحقَّقة، التجارب
الفاشلة، الأعمال المفتوحة). شغّل bash scripts/verify.sh قبل الإيداع؛ فهو يعيد
أيضًا بناء الحمولة/APK عند ضبط بيئة سلسلة الأدوات.
中文版: AGENTS.zh-CN.md /
docs/AGENT_HANDOFF.zh-CN.md
| الإصدار | v3.2 (release/o3root2-v3.2.apk، 14,239,248 B، sha256 64bbc654…) |
| بناء اختبار O1 | v3.3.3-o1-test (release/test/o3root2-v3.3.3-o1-test.apk، 14,247,440 B، sha256 62411f72…): v3.2 مع ملف تعريف O1 (XRING) تجريبي (dijun / jinghu / violin) ووحدة التحكم الجذرية المخفية. يقبل أي بناء OS4.0.0.x على سلسلة نواة 6.18.21-android17…-4k: البناء المُحلَّل هو المسار المتحقَّق منه، أما البناءات الأخرى فتعمل في الوضع المتساهل مع تحذير؛ للمختبِرين فقط، ولم يُتحقَّق منه على أجهزة حقيقية |
| بناء الاختبار السابق | v3.2.1-console (release/beta/o3root2-v3.2.1-console.apk، 14,243,344 B، sha256 9cba365a…): v3.2 المستقر مع وحدة تحكم جذرية مخفية (اضغط مطولًا على صف الإصدار؛ ثلاث تأكيدات) |
| أجهزة O1 | شريحة Xiaomi O1 dijun / jinghu / violin على OS4.0.0.x: الثلاثة جميعًا تشحن نفس نواة 6.18.21 (sha256 0d9917ca…، g1d099fcb35e0)؛ يقول التحليل الساكن إن السلسلة تنطبق، دون اختبار على جهاز بعد |
| LKM مخصص | ملف .ko اختياري من عائلة KernelSU يوفره المستخدم (فحص توافق أساسي؛ يعود إلى الوحدة التكيفية المدمجة؛ يُحفظ الاختيار ويُستعاد عند التشغيل — اضغط مطولًا على الصف لمسحه) |
| السلسلة | Shizuku shell → CVE-2026-98260 → uid=0 + كامل الصلاحيات → وحدة LKM المطابقة من عائلة KernelSU (KernelSU / KernelSU-Next / SukiSU) → rootd |
| الاستمرارية | لا شيء (الإقلاع الحالي فقط) |
| الجهاز المُختبَر | Xiaomi Pad 9 Pro Max yingtian، HyperOS OS4.0.16.0.XBMCNXM |
| الجهاز الثاني | lhasa (Xiaomi 18 Fold، OS4.0.26.0.XPNCNXM): نواة الإقلاع متطابقة بتًا بتًا مع نواة yingtian (sha256 cde87cd7…)، لذا تنطبق نفس الحمولة؛ لم يُختبَر على جهاز |
/system/bin/sh -c … عبر newProcess الخاص بـ Shizuku، لذا
تعمل الحمولة في u:r:shell:s0 (uid=2000).CLOCK_THREAD_CPUTIME_ID + execve/de_thread
(CVE-2026-98260)، وتستعيد صفحة slab المفرَّغة posix_timers_cache من الرتبة 1
باستخدام مخزن مؤقت kmalloc-8k مرشوش يحتوي على عقدة RB-tree مزوّرة،
وتستخدم timerqueue_del → rb_erase الثانية لكتابة قيمة واحدة بحجم 8 بايت إلى
عنوان kernel عشوائي.enforcing بكتابة غير محاذاة بحجم 8 بايت عند
selinux_state-7 (وهذا يمسح أيضًا بايتات pending/tail المجاورة لـ notif_lock؛
ويبقى initialized/policycap سليمين)؛ وتكتب المرحلة 1
task_struct.cred إلى صفحة cred مزيفة (uid 0، صلاحيات كاملة)./proc/kallsyms (البديل: إعادة ربط اتحاد من 248 رمزًا +
إزاحة KASLR الحالية)، مع عدم تعديل init — لأن policycap بقي
نظيفًا، فإن setenforce(1) الخاص بـ KernelSU غير ضار وينتهي الجهاز في
وضع Enforcing. ثم يُنفَّذ insmod وتُترك خلفية rootd daemon
(مقبس مجرّد @o3p_rootd، peer-uid 0/2000). تعمل وحدات LKM الخاصة بـ KernelSU
وKernelSU-Next وSukiSU جميعًا (الوضع القديم: O3P_CODEPATCH=1 يرقّع
القيمة الفورية لـ setenforce). منذ v3.1 يمكن للتطبيق بدلًا من ذلك تحميل ملف .ko تختاره
(فحص توافق أساسي لـ ELF/.modinfo، مع رجوع تلقائي إلى LKM المضمّن
عند رفضه أو فشل تحميله). منذ v3.1.1 يُحفظ هذا الاختيار
(files/custom-ko.ko + custom-ko.meta) ويُستعاد عند التشغيل؛
ويُسقَط الملف القديم الذي لم يعد صالحًا، والضغط المطوّل على
صف الوحدة يمسحه. منذ v3.2 أصبح مربع السجل قابلًا للتحديد ويحتوي على
إجراء 复制 ينسخ السجل كاملًا؛ ولا يمرّر تلقائيًا إلا عندما تكون
قريبًا من الأسفل بالفعل. على جهاز O1 معروف، يطلب إصدار الاختبار
تأكيدًا خطِرًا من خطوتين قبل بدء الحمولة. كما يخفي إصدار الاختبار
وحدة تحكم root خلف ضغطة مطوّلة على صف الإصدار: ثلاث تأكيدات غير قابلة
للتخطي، ثم تُنفَّذ الأوامر بصلاحيات root
عبر مقبس rootd (يتطلب تشغيل الحمولة مرة واحدة في الإقلاع الحالي).
لا يحتوي الإصدار المستقر على فئات وحدة التحكم.راجع docs/ARCHITECTURE.md لمعرفة الإزاحات، وبدائية
الكتابة، وترقيع KernelSU، ودليل النقل.
shizuku_plus_server بصلاحيات uid=2000، u:r:shell:s0.release/o3root2-v3.2.apk (قد تحتاج MIUI إلى السماح بـ "التثبيت عبر USB").★ UIDNOW uid=0،
و★ KSU_MODULE LIVE، ويُفتح مدير KernelSU تلقائيًا.هل تختبر على جهاز O1 (dijun / jinghu / violin)؟ ثبّت
release/test/o3root2-v3.3.3-o1-test.apk
بدلًا من ذلك واتبع docs/TESTING_O1.md. تقبل البوابة
الأسماء الرمزية الثلاثة على أي نواة 6.18.21-android17…-4k (OS4.0.0.x)؛
يحصل البناء المُحلَّل g1d099fcb35e0 على المسار المُتحقَّق منه، بينما تسجّل البناءات الأخرى
固件门禁通过(O1 宽松模式:…) وتعيد استخدام عنوان O1 مع تحذير. تسجّل
الحمولة SELINUX_PROFILE kernel=… base=… src=env|uname، لذا لا يحتاج التقرير
إلا إلى السجل المُصدَّر.
هل لا يوجد مدير مثبّت؟ يتحول الزر إلى Install KernelSU manager ويثبّت ملف APK المضمّن (اقبل مطالبات النظام).
AGENTS.md entry point for automated contributors (invariants, traps, checks)
app/ Android app sources (Java), manifest, res, build.sh
payload/ o3p.c (exploit payload + runtime KernelSU loader), 248-symbol
fallback table / relinker, mk_payload.py, build-payload.sh,
legacy/ (earlier revisions)
tools/ OTA/kernel extraction + verification scripts
docs/ architecture, security, build, OTA analysis, feasibility report,
evidence screenshots
scripts/ toolchain fetcher, env template, build-all
release/ prebuilt APK + checksums
third_party/ notices for bundled third-party components