
قم بتشغيل وإدارة أجهزة iPhone افتراضية على Apple Silicon مع تصحيح البرامج الثابتة، وأنواع كسر الحماية، وميزات أبحاث الأمان لاختبار وتحليل iOS.
قم بتشغيل iPhone افتراضي عبر إطار عمل Virtualization من Apple باستخدام البنية التحتية لجهاز PCC البحثي.

المضيف:
التبعيات:
brew install [email protected] aria2 wget gnu-tar openssl@3 ldid-procursus sshpass keystone cmake libusb ipsw zstd
brew install zqxwce/tap/vphone-cli
git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git
./scripts/setup_tools.sh # تثبيت التبعيات، بناء وحدات الأدوات الفرعية، إنشاء بيئة Python الافتراضية
./scripts/build.sh # بناء وتوقيع vphone-cli، تجميع حزمة .app، التجميع المتقاطع لـ vphoned
cd .build/vphone-cli.app/Contents/MacOS/
vphone-cli --help
أمر واحد ينشئ جهاز VM من البداية إلى النهاية (تنزيل ← تصحيح ← استعادة DFU ← تثبيت CFW ← أول إقلاع):
vphone-cli vm create myphone -V jb # -V / --variant
vphone-cli vm launch myphone
vphone-cli vm create يشغّل خط الأنابيب بالكامل؛ الخطوات الفردية أدناه تتيح لك تشغيله يدويًا أو إعادة تشغيل مرحلة واحدة.
vphone-cli vm list # قائمة الأجهزة الافتراضية (--json للبرمجة النصية)
vphone-cli vm info myphone # عرض جهاز افتراضي واحد
vphone-cli vm new myphone # إنشاء حزمة فارغة (خيارات cpu/mem/disk)
vphone-cli vm config myphone --cpu 8 --memory 8192
vphone-cli vm clone myphone myphone-2 # استنساخ APFS سريع، هوية جهاز جديدة
vphone-cli vm export myphone --out myphone.tzst # ضغط zstd سريع افتراضيًا (--max = xz -9)؛ قد يكون --out دليلًا (يُسمّى تلقائيًا <vm>.tzst/.txz)؛ يتخطى دليل الاستعادة وملفات التدريج
vphone-cli vm import myphone.tzst --name restored
vphone-cli vm rename myphone iphone16
vphone-cli vm delete iphone16
vm create تلقائيًا)vphone-cli vm new myphone # 1. حزمة فارغة
vphone-cli fw prepare myphone --iphone-version 26.1 # 2. تنزيل ودمج ملفات IPSW
vphone-cli fw patch myphone --variant jb # 3. تصحيح سلسلة الإقلاع
vphone-cli vm launch myphone --dfu & # 4. الإقلاع إلى DFU (في الخلفية)
vphone-cli restore myphone --get-shsh # جلب SHSH
vphone-cli restore myphone # استعادة DFU
vphone-cli vm stop myphone # إيقاف إقلاع DFU
vphone-cli cfw install myphone --variant jb # 5. تثبيت CFW (تركيب المضيف؛ يطلب صلاحيات sudo)
vphone-cli vm launch myphone # 6. أول إقلاع
قم بالتحديث إلى إصدار iOS أحدث بتوجيه fw prepare إلى ملف IPSW: --iphone-source /path/to.ipsw --cloudos-source /path/to.ipsw.
خمسة متغيرات تصحيح مع تجاوز أمني متزايد — مرّر واحدًا إلى --variant:
راجع research/0_binary_patch_comparison.md للتفصيل حسب المكوّن.
ssh -p 22222 mobile@<vm-ip> (كلمة المرور alpine)ssh -p 22222 root@<vm-ip>vnc://<vm-ip>:5901كل ما ينشئه vphone-cli يقع تحت ~/.vphone/ — خارج المستودع وحزمة .app ليبقى الحزمة الموقّعة قابلة للنقل. أعد توجيه الشجرة بالكامل باستخدام $VPHONE_ROOT:
الأولوية: التجاوزات لكل عنصر ($VPHONE_LIBRARY_ROOT، $VPHONE_VENV_DIR) تفوز على $VPHONE_ROOT، الذي يفوز على الافتراضي ~/.vphone. مخابئ ipsws/ وtools/ وdebs/ تقع دائمًا مباشرة تحت الجذر النشط أيهما كان.
الخيار أ — تعطيل SIP بالكامل، ثم تعطيل AMFI عبر وسيط الإقلاع (الأكثر تساهلًا).
في وضع الاسترداد (الضغط المطول على زر الطاقة ← الطرفية):
csrutil disable
csrutil allow-research-guests enable
ثم أعد التشغيل إلى macOS واضبط وسيط إقلاع AMFI (يتطلب تعطيل SIP بالكامل ليعمل):
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v" # أعد التشغيل بعد ذلك
الخيار ب — إبقاء SIP مفعّلًا (تخفيف وضع التصحيح فقط)، ثم السماح للثنائي عبر amfidont (يُبقي AMFI مفعّلًا على مستوى النظام).
في وضع الاسترداد:
csrutil enable --without debug
csrutil allow-research-guests enable
ثم أعد التشغيل إلى macOS وقم بما يلي:
vphone-amfidont # .build/vphone-cli.app/Contents/Resources/vphone-amfidont للبناءات المحلية
zsh: killed ./vphone-cli — قيود AMFI/التصحيح لم يتم تجاوزها؛ راجع المتطلبات الأساسية (amfi_get_out_of_my_way=1 أو amfidont).
Virtualization is not available on this hardware — جهاز Mac الخاص بك هو نفسه جهاز افتراضي؛ لا يمكن تداخل إقلاع ضيف PV=3. استخدم مضيف macOS 15+ غير متداخل.
عالق عند "Press home to continue" — اتصل عبر VNC وانقر بزر الماوس الأيمن (نقرة بإصبعين) لمحاكاة زر الصفحة الرئيسية.
تطبيقات النظام لا تُثبّت — أثناء إعداد iOS، لا تختار اليابان أو الاتحاد الأوروبي كمنطقتك (فحوصات تنظيمية إضافية لا يمكن للجهاز الافتراضي تلبيتها)؛ اختر مثلًا الولايات المتحدة.
تطبيق يتعطل عند الإطلاق مع EXC_GUARD / GUARD_TYPE_MACH_PORT — أعد التصحيح باستخدام vphone-cli fw patch <name> --variant <v> --force-exc-guard، ثم أعد الاستعادة/التثبيت (#291). مفعّل دائمًا لقواعد iOS 18.
تثبيت ملف .ipa/.tipa — استخدم قائمة التثبيت في الجهاز الافتراضي قيد التشغيل (سحب وإفلات أو منتقي الملفات).
cfw install يعلق عند إعادة توقيع ثنائي نظام (مثل Campo)، والذاكرة ترتفع بلا حدود — خطأ معروف في ldid-procursus حتى 2.1.5-procursus7 (إصدار Homebrew stable الحالي): bytes(uint64_t) يستدعي __builtin_clzll(0) بدون حماية صفر، وهو سلوك غير محدد، وفي هذا البناء يتحول إلى طول 0 يسبب تجاوزًا سفليًا لعداد حلقة غير موقّع — يدور ldid بكتابة بايت واحد في كل مرة في مخزن مؤقت متنامٍ بدلًا من إنهاء العملية. يُطلق بواسطة أي قائمة تراخيص تحتوي على قيمة عدد صحيح تساوي 0 تمامًا (بعض ثنائيات نظام Apple الحقيقية تحتوي عليها). تم إصلاحه في المصدر لكن لم يُصدر بعد في إصدار موسوم؛ أعد البناء من المصدر: brew install --HEAD ldid-procursus && brew link --overwrite ldid-procursus. اقتل عملية ldid المعلقة أولًا (sudo kill -9 <pid>) إذا واجهتها بالفعل.
يكشف vphone-cli عن مقبس تحكم للمضيف (<bundle>/vphone.sock) للتحكم البرمجي — لقطات شاشة، لمس، تمرير، مفاتيح أجهزة، حافظة — كل إجراء يعيد لقطة شاشة مضمّنة لاختبار E2E مدفوع بالذكاء الاصطناعي. راجع vphone-mcp لخادم MCP يغلّفه.
| المتغير | سلسلة الإقلاع | CFW | ملاحظات |
|---|
less | 4 تصحيحات | مرحلتان | بدون تصحيح — يُبقي آليات iOS الأمنية مفعّلة |
regular | 42 تصحيحًا | 10 مراحل | تجاوز AMFI/SSV/Img4/TXM |
dev | 53 تصحيحًا | 12 مرحلة | + تجاوز ترخيص/تصحيح TXM |
jb | 113 تصحيحًا | 14 مرحلة | + كسر حماية كامل (تثبيت تلقائي لـ Sileo وTrollStore عند أول إقلاع) |
exp | 141 تصحيحًا | 18 مرحلة | مجموعة JB الفائقة + تصحيحات بحثية لمكافحة كشف الأجهزة الافتراضية |
| المسار | المحتويات |
|---|
~/.vphone/ | جذر بيانات المستخدم — تجاوز الموقع بالكامل باستخدام $VPHONE_ROOT. |
~/.vphone/VMs/ | حزم الأجهزة الافتراضية — دليل واحد لكل جهاز افتراضي. هذه هي المكتبة؛ تجاوزها باستخدام $VPHONE_LIBRARY_ROOT. |
~/.vphone/ipsws/ | ملفات IPSW الخاصة بـ iPhone وcloudOS المُنزّلة، مخزنة مؤقتًا ويُعاد استخدامها عبر الأجهزة الافتراضية. |
~/.vphone/tools/ | القطع الأثرية المخزنة مؤقتًا لحجم ختم APFS (apfs_sealvolume_<version>) التي يتم جلبها أثناء fw prepare. |
~/.vphone/debs/ | حزم .deb المخزنة مؤقتًا التي يضعها تثبيت CFW الخاص بـ jb/exp في الضيف (Sileo، apt، …). |
~/.vphone/venv/ | بيئة Python المزوّدة تلقائيًا (راجع بيئة Python؛ تجاوزها باستخدام $VPHONE_VENV_DIR). |
| المضيف | iPhone | CloudOS |
|---|
| Mac16,11 27.0b2 | 17,3_18.6.2_22G100 | 26.1-23B85 |
| Mac16,8 26.5.1 | 17,3_26.0_23A341 | 26.1-23B85 |
| Mac16,8 26.5.1 | 17,3_26.0.1_23A355 | 26.1-23B85 |
| Mac16,12 26.3 | 17,3_26.1_23B85 | 26.1-23B85 |
| Mac16,12 26.3 | 17,3_26.3_23D127 | 26.1-23B85 |
| Mac16,12 26.3 | 17,3_26.3_23D127 | 26.3-23D128 |
| Mac16,12 26.3 | 17,3_26.3.1_23D8133 | 26.3-23D128 |
| Mac16,11 26.2 | 17,3_26.4_23E246 | 26.4-23E5207q |
| Mac16,11 26.2 | 17,3_26.5_23F77 | 26.4-23E5207q |
| Mac16,11 27.0b2 | 17,3_26.5.2_23F84 | 26.4-23E5207q |
| Mac16,6 26.4.1 | 17,3_26.6_23G71 | 26.4-23E5207q |
| Mac16,11 27.0b2 | 17,3_26.6.1_23G83 | 26.4-23E5207q |
| Mac16,11 27.0b2 | 17,3_27.0_24A5380h | 26.4-23E5207q |
| Mac16,6 26.4.1 | 17,3_27.0_24A5390f | 26.4-23E5207q |
| Mac16,6 26.6.1 | 17,3_27.0_24A5408d | 26.4-23E5207q |
| Mac16,11 27.0b2 | 17,3_27.0_24A5418b | 26.4-23E5207q |
| Mac16,11 27.0b2 | 17,3_27.0_24A5424a | 26.4-23E5207q |