
تصعيد صلاحيات النواة في الذاكرة لجهاز Lenovo Legion Y700 2023 (TB320FC) باستغلال CVE-2025-21479، وهو خلل في SMMU لمعالج Qualcomm Adreno GPU، مع إدارة صلاحيات الجذر ReSukiSU.
简体中文 | English
تصعيد صلاحيات النواة في الذاكرة لجهاز Lenovo Legion Y700 2023 (TB320FC)، باستغلال CVE-2025-21479 (ثغرة SMMU في وحدة معالجة الرسومات Qualcomm Adreno)، مع إدارة كاملة للصلاحيات الجذرية (root) يوفّرها ReSukiSU.
دون فتح قفل الـ bootloader. دون تفليش. دون الحاجة إلى حاسوب للتفعيل.
⚠️ لأغراض البحث الأمني المصرّح به على الأجهزة التي تملكها. راجع إخلاء المسؤولية.
جميع الإزاحات (offsets) والسلوك في هذا المشروع مضبوطة للجهاز التالي. لا تتوقع أن يعمل على طرازات/رومات أخرى دون إعادة ضبط (راجع exploit/device_info.txt).
| الطراز | Lenovo Legion Y700 2023 (TB320FC) / TB320FC_PRC |
| SoC | Qualcomm SM8475 (Snapdragon 8+ Gen 1، Adreno 730) |
| النظام | ZUXOS 1.1.350 / Android 15 (SDK 35) |
| البناء | AQ3A.240812.002 (TB320FC_CN_OPEN_USER_Q00031.0_V_ZUXOS_1.1.350_ST_250418) |
| النواة | 5.10.209-android12-9-gef44381c3e04-ab50 |
| تحديث الأمان | 2025-03-05 |
| Bootloader | مقفل (هذا المشروع لا يفتح قفله) |
تم التحقق من عمله اعتبارًا من 2026-09 على البرنامج الثابت المذكور أعلاه.
| القدرة | التنفيذ |
|---|---|
| تصعيد الصلاحيات | استغلال cheese: ثغرة KGSL SMMU ← قراءة/كتابة فيزيائية عشوائية عبر GPU ← صلاحيات جذرية في الذاكرة (uid 0 + جميع القدرات) |
| إدارة الجذر | ReSukiSU (تفرّع من KernelSU) في وضع late-load يحمّل kernelsu.ko؛ يُقدَّم su عبر خطاف داخل النواة (u:r:ksu:s0) |
| SELinux | يُعاد إلى Enforcing بعد التفعيل (تبقى قواعد سياسة ReSukiSU مطبّقة) |
| تجربة بلمسة واحدة | تطبيق RootActivator مع استغلال مضمّن + ksud؛ بلمسة واحدة بعد الإقلاع |
| الاسترداد التلقائي (اختياري) | سلسلة إصلاح ذاتي تُفعَّل عند الإقلاع: مشغّل تكيّفي مشروط بالحمل ← cheese ← خط أنابيب الجذر ← hosts/Vector اختياريًا. معطّل افتراضيًا (com.poc.roottool.CONFIG) |
| وحدات Xposed | مدعومة عبر NeoZygisk (حقن zygote عبر ptrace) + Vector |
| الاستمرارية | لا توجد بحكم التصميم (في الذاكرة): أعد التفعيل بعد كل إعادة إقلاع (~3-4 دقائق؛ أو فعّل سلسلة الاسترداد التلقائي) |
| RootActivator (مُفعَّل) | ReSukiSU (يعمل، وحدتان) |
|---|---|
![]() | ![]() |
يسارًا: RootActivator بعد تفعيل ناجح — SELinux Enforcing، kernelsu محمّل، su متاح.
يمينًا: مدير ReSukiSU — وضع LKM يعمل مع وحدتين (NeoZygisk + Vector).
RootActivator APK
│
├─ libcheese.so ── KGSL SMMU exploit (CVE-2025-21479)
│ 1. Adreno 730 microcode access-check flaw (SDS packet mistaken for RingBuffer)
│ 2. Fake CP_SMMU_TABLE_UPDATE overwrites GPU TTBR0 → arbitrary physical R/W
│ 3. Zero selinux_state.enforcing; dump kernel from fixed PA 0xA8000000,
│ parse kallsyms from the raw image (SM8475 has no physical KASLR)
│ 4. Patch __do_sys_capset with an escalation shellcode
│ (prepare_kernel_cred(0) + commit_creds + clear TIF_SECCOMP);
│ forked child calls capset() → uid 0 + full caps
│
└─ libksud.so (ReSukiSU) ── late-load mode
1. kernelsu.ko loaded from ksud's embedded assets with manual relocation
(does not rely on kernel symbol exports)
2. install → /data/adb/ksu (ksud/busybox/bootctl)
3. su channel online: /system/bin/su → kernel hook redirect → u:r:ksu:s0
4. setenforce 1 — Enforcing restored, policy rules already injected by the ko
نقاط هندسية بارزة
insmod kernelsu.ko العادي. يحل التحميل المتأخر في ReSukiSU الرموز بنفسه ويُحمّل بنجاح.ابنِ من المصدر (راجع البناء) أو احصل على APK من صفحة GitHub Releases (غير مخزّن في المستودع).
نزّل من ReSukiSU Releases وثبّت APK الخاص بالمدير.
su -c 'sh /data/adb/modules/zygisksu/post-fs-data.sh'
يحتوي المستودع على PoC (الاستغلال) ومُفعِّله بنقرة واحدة. تُحفظ طبقات الجهاز المخصصة (سكربتات إزالة الحشو، وحدة privacy-hosts، أدوات نطاق Xposed، ومساعدات التشغيل الأولي) خارج الشجرة في أرشيف خاص منفصل — فهي ليست جزءًا من هذا المستودع عمدًا. التفاصيل: docs/ARCHITECTURE.md.
├── LICENSE / CHANGELOG.md
├── README.md / README.zh-CN.md
│
├── exploit/ the PoC — root acquisition (CVE-2025-21479)
│ ├── source/ cheese.c / kallsyms_lookup.c / adrenaline.h
│ ├── device_info.txt Target device parameters (offsets, verified facts)
│ ├── build.sh Build script (requires Android NDK)
│ └── README.md Boundary statement, runtime chain, known failure modes
│
├── app/ RootActivator — one-tap activator (all extras OFF by default)
│ ├── src/ BootReceiver / HealGuardService / HealConfig / MainActivity (Kotlin)
│ ├── assets/ selfheal.sh / waiter.sh / xposed-up.sh
│ ├── native/ libcheese.so + libksud.so (built from exploit/; see tools/fetch_assets.py)
│ ├── AndroidManifest.xml
│ ├── debug.keystore debug signing key used by the public APK
│ ├── build.py Build script (kotlinc + d8 + aapt2 + apksigner)
│ └── README.md App documentation
│
├── tools/ Build / inspection helpers
│ ├── fetch_assets.py Host: prepare native assets (exploit + ksud)
│ ├── status_check.sh On-device: root / module snapshot
│ └── check_mods.sh On-device: module inspection helper
├── docs/ Documentation (English)
│ ├── ARCHITECTURE.md Chains, engineering notes, root-cause records
│ ├── TROUBLESHOOTING.md Failure handling, success-rate data
│ └── VECTOR.md Xposed (NeoZygisk + LSPosed/Vector) setup
└── screenshots/ On-device PNG evidence
cd exploit
NDK=/path/to/android-ndk ./build.sh
# Produces ./cheese (arm64) → used as app/native/libcheese.so
cd app
python ../tools/fetch_assets.py # prepare native assets
python build.py # requires kotlinc + Android build-tools
# Produces RootActivator.apk