
فتح قفل المحمل للإقلاع لجهاز Itel S23 (S665L) / Unisoc T606 باستخدام CVE-2022-38694
دليل لفتح قفل مُحمل الإقلاع على هاتف إيتيل S23 (S665L) باستخدام ثغرة CVE-2022-38694 على معالج يونيسوك T606 (UMS9230).
| الخاصية | القيمة |
|---|---|
| العلامة التجارية | إيتيل |
| الموديل | S665L (S23) |
| أندرويد | 12 (SDK 31) |
| الإصدار | S665L-F065OPRSUVApAqAr-S-GL-20250207V533 |
| المعالج | يونيسوك T606 (UMS9230) |
| وحدة المعالجة المركزية | 2x Cortex-A75 + 6x Cortex-A55 (ARMv8, 64-bit) |
| التخزين | UFS |
| الفتحة | A/B |
adb و fastbootubl-itel-s23/
├── README.md
├── CLAUDE.md
├── recovery/
│ ├── TWRP_S665L.img # صورة استرداد TWRP
│ └── OrangeFox_S665L.img # صورة استرداد OrangeFox
└── tools/
└── spreadtrum_flash_linux/
├── spd_dump # أداة الاتصال بـ BootROM
├── gen_spl-unlock # مولد حمولة فتح القفل
├── unlock.sh # سكريبت فتح القفل التلقائي
├── fdl1-dl.bin # مُحمّل المرحلة الأولى
├── fdl2-dl.bin # مُحمّل المرحلة الثانية
├── fdl2-cboot.bin # uboot معدل لفتح القفل
├── custom_exec_no_verify_65015f08.bin # حمولة ثغرة CVE
├── custom_exec_no_verify_65015f48.bin # حمولة ثغرة CVE (بديل)
├── splloader.bin # نسخة احتياطية لـ SPL (تُنشأ أثناء العملية)
├── uboot.bin # نسخة احتياطية لـ uboot (تُنشأ أثناء العملية)
├── spl-unlock.bin # حمولة فتح القفل (تُنشأ أثناء العملية)
└── ums9230/itel/ # ملفات FDL خاصة بـ Itel UMS9230
يستغل هذا الهجوم ثغرة في BootROM الخاص بـ يونيسوك تسمح بكتابة بيانات إلى منطقة ذاكرة قبل اكتمال التحقق من التوقيع.
الوضع الطبيعي: BootROM → تحقق(FDL1) → رفض (غير موقّع)
الاستغلال: BootROM → استبدال التحقق() → التحقق = دائماً صحيح
→ قبول(FDL1) → قبول → فتح قفل مُحمل الإقلاع
تقوم حمولة custom_exec_no_verify (96 بايت) باستبدال مؤشر دالة التحقق من التوقيع عند العنوان 0x65015f08، مما يجعل BootROM يقبل أي FDL1 دون التحقق من توقيعه.
sudo tee /etc/udev/rules.d/51-android.rules << 'EOF'
# Google/Android (ADB & Fastboot)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
# Spreadtrum/Unisoc
SUBSYSTEM=="usb", ATTR{idVendor}=="1782", MODE="0666", GROUP="plugdev"
EOF
sudo udevadm control --reload-rules && sudo udevadm trigger
cd tools/spreadtrum_flash_linux
cp ums9230/itel/fdl1-dl.bin ums9230/itel/fdl2-dl.bin ums9230/itel/fdl2-cboot.bin .
cp ums9230/custom_exec_no_verify_65015f08.bin ums9230/custom_exec_no_verify_65015f48.bin .
chmod +x spd_dump gen_spl-unlock
يجب أن يكون الهاتف مُشغَّلاً وموصولاً عبر USB. بعد هذه الخطوة، لن يُقلع الهاتف حتى الخطوة 6.
sudo ./spd_dump exec_addr 0x65015f48 fdl fdl1-dl.bin 0x65000800 \
fdl fdl2-dl.bin 0x9efffe00 exec \
r splloader r uboot e splloader e splloader_bak reset
انسخ splloader.bin و uboot.bin إلى مكان آمن:
cp splloader.bin uboot.bin backup_spl/
./gen_spl-unlock splloader.bin 0xfd28
المخرجات: spl-unlock.bin
الإزاحة
0xfd28خاصة بهذا البرنامج الثابت. تحقق من حجمsplloader.bin— يجب أن تطابق الإزاحة حجم الملف.
ادخل إلى وضع BROM: أوقف تشغيل الهاتف، اضغط مع الاستمرار على خفض الصوت، ثم أوصل USB.
sudo ./spd_dump exec_addr 0x65015f08 fdl fdl1-dl.bin 0x65000800 \
fdl fdl2-dl.bin 0x9efffe00 exec \
w uboot fdl2-cboot.bin reset
ادخل إلى وضع BROM مرة أخرى، ثم:
sudo ./spd_dump exec_addr 0x65015f08 fdl spl-unlock.bin 0x65000800
إذا رأيت device removed, exiting... فهذا يعني النجاح.
ادخل إلى وضع BROM مرة أخرى، ثم:
sudo ./spd_dump exec_addr 0x65015f08 fdl fdl1-dl.bin 0x65000800 \
fdl fdl2-dl.bin 0x9efffe00 exec \
verbose 2 read_part miscdata 8192 64 m.bin reset
recv 64 zero = لا يزال مقفلاً (فشل)recv 32 string + hash data = مفتوح القفل (نجاح)ادخل إلى وضع BROM مرة أخرى، ثم:
sudo ./spd_dump exec_addr 0x65015f08 fdl fdl1-dl.bin 0x65000800 \
fdl fdl2-dl.bin 0x9efffe00 exec \
w splloader splloader.bin w uboot uboot.bin reset
سيُعاد تشغيل الهاتف. اختر إعادة ضبط المصنع عند ظهور وضع الاسترداد أندرويد.
بعد إقلاع الهاتف إلى أندرويد:
adb shell getprop ro.boot.vbmeta.device_state
# المتوقع: unlocked
adb shell getprop ro.boot.flash.locked
# المتوقع: 0
splloader.bin و uboot.bin — فهي ضرورية للاستعادة في حال حدوث خطأ0x65015f48، بينما الخطوات 3-6 تستخدم 0x65015f08spd_dump / CVE-2022-38694 فتح قفل مُحمل الإقلاع بواسطة TomKing062 / QuTick102 https://github.com/TomKing062/CVE-2022-38694_unlock_bootloader
مجموعات الاسترداد وأداة فلاش Spreadtrum (لينكس) بواسطة Massatriof16 https://massatriof16.github.io/recovery-collections/#alat
unisoc-unlock (بديل بلغة بايثون) بواسطة patrislav1 https://github.com/patrislav1/unisoc-unlock